@@ -237,7 +237,14 @@ void menuSensorFusion()
237237 else if (i2cGNSS.packetUBXESFSTATUS ->data .fusionMode == 3 )
238238 Serial.println (F (" Disabled" ));
239239
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: " ));
241248 if (settings.autoIMUmountAlignment == true ) Serial.println (F (" Enabled" ));
242249 else Serial.println (F (" Disabled" ));
243250
@@ -246,6 +253,11 @@ void menuSensorFusion()
246253 int incoming = getNumber (menuTimeout); // Timeout after x seconds
247254
248255 if (incoming == 1 )
256+ {
257+ settings.enableSensorFusion ^= 1 ;
258+ setSensorFusion (settings.enableSensorFusion ); // Enable/disable sensor fusion
259+ }
260+ else if (incoming == 2 )
249261 {
250262 settings.autoIMUmountAlignment ^= 1 ;
251263 }
@@ -262,3 +274,15 @@ void menuSensorFusion()
262274
263275 while (Serial.available ()) Serial.read (); // Empty buffer of any newline chars
264276}
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