From 5fbeff2ee7aa186dbe7a174527ef99bed913c0c8 Mon Sep 17 00:00:00 2001 From: "Konstantin Sharlaimov (DigitalEntity)" Date: Tue, 28 Feb 2017 18:31:25 +1000 Subject: [PATCH] Only allow HOME_RESET to reset home position once. Consecutive reset has to be done by turning off HOMERESET switch --- src/main/navigation/navigation.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/navigation/navigation.c b/src/main/navigation/navigation.c index a014c1201f..5936df5908 100755 --- a/src/main/navigation/navigation.c +++ b/src/main/navigation/navigation.c @@ -1891,15 +1891,19 @@ void updateHomePosition(void) } } else { + static bool isHomeResetAllowed = false; + // If pilot so desires he may reset home position to current position - if (IS_RC_MODE_ACTIVE(BOXHOMERESET) && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) { - if (STATE(GPS_FIX_HOME)) { - setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_HEADING); - } - else { - setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_Z | NAV_POS_UPDATE_HEADING); + if (IS_RC_MODE_ACTIVE(BOXHOMERESET)) { + if (isHomeResetAllowed && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) { + const navSetWaypointFlags_t homeUpdateFlags = STATE(GPS_FIX_HOME) ? (NAV_POS_UPDATE_XY | NAV_POS_UPDATE_HEADING) : (NAV_POS_UPDATE_XY | NAV_POS_UPDATE_Z | NAV_POS_UPDATE_HEADING); + setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, homeUpdateFlags); + isHomeResetAllowed = false; } } + else { + isHomeResetAllowed = true; + } // Update distance and direction to home if armed (home is not updated when armed) if (STATE(GPS_FIX_HOME)) {