Skip to content

Commit c6ee022

Browse files
authored
Add mag_align (#74)
1 parent 0d5cf78 commit c6ee022

File tree

6 files changed

+35
-0
lines changed

6 files changed

+35
-0
lines changed

examples/00.HelloWorld/madflight_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const char madflight_config[] = R""(
6161

6262
//--- MAG --- Magnetometer
6363
//mag_gizmo NONE // options: NONE, QMC5883, QMC6309, RM3100
64+
//mag_align CW0 // options: CW0, CW90, CW180, CW270, CW0FLIP, CW90FLIP, CW180FLIP, CW270FLIP
6465
//mag_i2c_adr 0
6566
//mag_i2c_bus -1
6667

examples/01.Quadcopter/madflight_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const char madflight_config[] = R""(
6161

6262
//--- MAG --- Magnetometer
6363
//mag_gizmo NONE // options: NONE, QMC5883, QMC6309, RM3100
64+
//mag_align CW0 // options: CW0, CW90, CW180, CW270, CW0FLIP, CW90FLIP, CW180FLIP, CW270FLIP
6465
//mag_i2c_adr 0
6566
//mag_i2c_bus -1
6667

examples/02.QuadcopterAdvanced/madflight_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const char madflight_config[] = R""(
6161

6262
//--- MAG --- Magnetometer
6363
//mag_gizmo NONE // options: NONE, QMC5883, QMC6309, RM3100
64+
//mag_align CW0 // options: CW0, CW90, CW180, CW270, CW0FLIP, CW90FLIP, CW180FLIP, CW270FLIP
6465
//mag_i2c_adr 0
6566
//mag_i2c_bus -1
6667

examples/03.Plane/madflight_config.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ const char madflight_config[] = R""(
6161

6262
//--- MAG --- Magnetometer
6363
//mag_gizmo NONE // options: NONE, QMC5883, QMC6309, RM3100
64+
//mag_align CW0 // options: CW0, CW90, CW180, CW270, CW0FLIP, CW90FLIP, CW180FLIP, CW270FLIP
6465
//mag_i2c_adr 0
6566
//mag_i2c_bus -1
6667

src/cfg/cfg.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,9 @@ SOFTWARE.
237237
MF_PARAM( pin_rdr_trig, -1, int32_t, 'p') \
238238
MF_PARAM( pin_rdr_echo, -1, int32_t, 'p') \
239239
MF_PARAM( imu_bus_type, 0, int32_t, 'e', mf_SPI,mf_I2C) \
240+
\
241+
/*v2.1.1 additions */ \
242+
MF_PARAM( mag_align, 0, int32_t, 'e', mf_CW0,mf_CW90,mf_CW180,mf_CW270,mf_CW0FLIP,mf_CW90FLIP,mf_CW180FLIP,mf_CW270FLIP) \
240243
//end MF_PARAM_LIST
241244

242245

src/mag/mag.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,34 @@ bool Mag::update() {
8181
if(!schedule.interval(_samplePeriod)) return false;
8282

8383
if(!gizmo->update(&x, &y, &z)) return false;
84+
85+
//handle rotation for different mounting positions
86+
switch((Cfg::mag_align_enum)cfg.mag_align) {
87+
case Cfg::mag_align_enum::mf_CW0 :
88+
break;
89+
case Cfg::mag_align_enum::mf_CW90 :
90+
{ float tmp; tmp=x; x=-y; y=tmp; }
91+
break;
92+
case Cfg::mag_align_enum::mf_CW180 :
93+
{ x=-x; y=-y; }
94+
break;
95+
case Cfg::mag_align_enum::mf_CW270 :
96+
{ float tmp; tmp=x; x=y; y=-tmp; }
97+
break;
98+
case Cfg::mag_align_enum::mf_CW0FLIP :
99+
{ y=-y; z=-z; }
100+
break;
101+
case Cfg::mag_align_enum::mf_CW90FLIP :
102+
{ float tmp; tmp=x; x=y; y=tmp; z=-z; }
103+
break;
104+
case Cfg::mag_align_enum::mf_CW180FLIP :
105+
{ x=-x; z=-z; }
106+
break;
107+
case Cfg::mag_align_enum::mf_CW270FLIP :
108+
{ float tmp; tmp=x; x=-y; y=-tmp; z=-z; }
109+
break;
110+
}
111+
84112
ts = micros();
85113
return true;
86114
}

0 commit comments

Comments
 (0)