@@ -237,7 +237,14 @@ void menuSensorFusion()
237
237
else if (i2cGNSS.packetUBXESFSTATUS ->data .fusionMode == 3 )
238
238
Serial.println (F (" Disabled" ));
239
239
240
- Serial.print (F (" 1) Toggle Automatic IMU-mount Alignment: " ));
240
+ if (settings.enableSensorFusion == true && settings.dynamicModel != DYN_MODEL_AUTOMOTIVE)
241
+ Serial.println (F (" Warning: Dynamic Model not set to Automotive. Sensor Fusion is best used with the Automotive Dynamic Model." ));
242
+
243
+ Serial.print (F (" 1) Toggle Sensor Fusion: " ));
244
+ if (settings.enableSensorFusion == true ) Serial.println (F (" Enabled" ));
245
+ else Serial.println (F (" Disabled" ));
246
+
247
+ Serial.print (F (" 2) Toggle Automatic IMU-mount Alignment: " ));
241
248
if (settings.autoIMUmountAlignment == true ) Serial.println (F (" Enabled" ));
242
249
else Serial.println (F (" Disabled" ));
243
250
@@ -246,6 +253,11 @@ void menuSensorFusion()
246
253
int incoming = getNumber (menuTimeout); // Timeout after x seconds
247
254
248
255
if (incoming == 1 )
256
+ {
257
+ settings.enableSensorFusion ^= 1 ;
258
+ setSensorFusion (settings.enableSensorFusion ); // Enable/disable sensor fusion
259
+ }
260
+ else if (incoming == 2 )
249
261
{
250
262
settings.autoIMUmountAlignment ^= 1 ;
251
263
}
@@ -262,3 +274,15 @@ void menuSensorFusion()
262
274
263
275
while (Serial.available ()) Serial.read (); // Empty buffer of any newline chars
264
276
}
277
+
278
+ // Enable or disable sensor fusion using keys
279
+ void setSensorFusion (bool enable)
280
+ {
281
+ if (getSensorFusion () != enable)
282
+ i2cGNSS.setVal8 (UBLOX_CFG_SFCORE_USE_SF, enable, VAL_LAYER_ALL);
283
+ }
284
+
285
+ bool getSensorFusion ()
286
+ {
287
+ return (i2cGNSS.getVal8 (UBLOX_CFG_SFCORE_USE_SF, VAL_LAYER_RAM, 1200 ));
288
+ }
0 commit comments