diff --git a/src/main/fc/cli.c b/src/main/fc/cli.c index e74e1b9813..a9051462ee 100755 --- a/src/main/fc/cli.c +++ b/src/main/fc/cli.c @@ -1387,7 +1387,7 @@ static void cliWaypoints(char *cmdline) } else if (sl_strcasecmp(cmdline, "reset") == 0) { resetWaypointList(); } else if (sl_strcasecmp(cmdline, "load") == 0) { - loadNonVolatileWaypointList(); + loadNonVolatileWaypointList(true); } else if (sl_strcasecmp(cmdline, "save") == 0) { posControl.waypointListValid = false; for (int i = 0; i < NAV_MAX_WAYPOINTS; i++) { @@ -2930,28 +2930,28 @@ static void printImu2Status(void) cliPrintLinef("Acc: %d", secondaryImuState.calibrationStatus.acc); cliPrintLinef("Mag: %d", secondaryImuState.calibrationStatus.mag); cliPrintLine("Calibration gains:"); - + cliPrintLinef( - "Gyro: %d %d %d", - secondaryImuConfig()->calibrationOffsetGyro[X], - secondaryImuConfig()->calibrationOffsetGyro[Y], + "Gyro: %d %d %d", + secondaryImuConfig()->calibrationOffsetGyro[X], + secondaryImuConfig()->calibrationOffsetGyro[Y], secondaryImuConfig()->calibrationOffsetGyro[Z] ); cliPrintLinef( - "Acc: %d %d %d", - secondaryImuConfig()->calibrationOffsetAcc[X], - secondaryImuConfig()->calibrationOffsetAcc[Y], + "Acc: %d %d %d", + secondaryImuConfig()->calibrationOffsetAcc[X], + secondaryImuConfig()->calibrationOffsetAcc[Y], secondaryImuConfig()->calibrationOffsetAcc[Z] ); cliPrintLinef( - "Mag: %d %d %d", - secondaryImuConfig()->calibrationOffsetMag[X], - secondaryImuConfig()->calibrationOffsetMag[Y], + "Mag: %d %d %d", + secondaryImuConfig()->calibrationOffsetMag[X], + secondaryImuConfig()->calibrationOffsetMag[Y], secondaryImuConfig()->calibrationOffsetMag[Z] ); cliPrintLinef( - "Radius: %d %d", - secondaryImuConfig()->calibrationRadiusAcc, + "Radius: %d %d", + secondaryImuConfig()->calibrationRadiusAcc, secondaryImuConfig()->calibrationRadiusMag ); } diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index b80c33cfe0..a8aa6b4dca 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -2847,7 +2847,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src) #ifdef NAV_NON_VOLATILE_WAYPOINT_STORAGE case MSP_WP_MISSION_LOAD: sbufReadU8Safe(NULL, src); // Mission ID (reserved) - if ((dataSize != 1) || (!loadNonVolatileWaypointList())) + if ((dataSize != 1) || (!loadNonVolatileWaypointList(false))) return MSP_RESULT_ERROR; break; diff --git a/src/main/fc/rc_controls.c b/src/main/fc/rc_controls.c index 74952a5329..07dd7a442e 100644 --- a/src/main/fc/rc_controls.c +++ b/src/main/fc/rc_controls.c @@ -260,7 +260,7 @@ void processRcStickPositions(throttleStatus_e throttleStatus) // Load waypoint list if (rcSticks == THR_LO + YAW_CE + PIT_HI + ROL_HI) { - const bool success = loadNonVolatileWaypointList(); + const bool success = loadNonVolatileWaypointList(false); beeper(success ? BEEPER_ACTION_SUCCESS : BEEPER_ACTION_FAIL); } #endif diff --git a/src/main/navigation/navigation.c b/src/main/navigation/navigation.c index 1492451b0b..a425d90a37 100644 --- a/src/main/navigation/navigation.c +++ b/src/main/navigation/navigation.c @@ -2876,13 +2876,13 @@ int getWaypointCount(void) } #ifdef NAV_NON_VOLATILE_WAYPOINT_STORAGE -bool loadNonVolatileWaypointList(void) +bool loadNonVolatileWaypointList(bool clearIfLoaded) { if (ARMING_FLAG(ARMED)) return false; - // if waypoints are already loaded, just unload them. - if (posControl.waypointCount > 0) { + // if forced and waypoints are already loaded, just unload them. + if (clearIfLoaded && posControl.waypointCount > 0) { resetWaypointList(); return false; } diff --git a/src/main/navigation/navigation.h b/src/main/navigation/navigation.h index 6f87ce3909..5a7aa4cf28 100755 --- a/src/main/navigation/navigation.h +++ b/src/main/navigation/navigation.h @@ -467,7 +467,7 @@ bool isWaypointListValid(void); void getWaypoint(uint8_t wpNumber, navWaypoint_t * wpData); void setWaypoint(uint8_t wpNumber, const navWaypoint_t * wpData); void resetWaypointList(void); -bool loadNonVolatileWaypointList(void); +bool loadNonVolatileWaypointList(bool); bool saveNonVolatileWaypointList(void); float getFinalRTHAltitude(void);