diff --git a/src/main/navigation/navigation.c b/src/main/navigation/navigation.c index 602de21729..7afb079448 100755 --- a/src/main/navigation/navigation.c +++ b/src/main/navigation/navigation.c @@ -1084,9 +1084,11 @@ static navigationFSMEvent_t navOnEnteringState_NAV_STATE_CRUISE_3D_ADJUSTING(nav static navigationFSMEvent_t navOnEnteringState_NAV_STATE_RTH_INITIALIZE(navigationFSMState_t previousState) { + //AWH xxxxxxxxxxxxxxxxxxxxx + RTHAltHoldOverRideFlag = false; + //xxxxxxxxxxxxxxxxxxxxx + navigationFSMStateFlags_t prevFlags = navGetStateFlags(previousState); - - posControl.flags.CanOverRideRTHAlt = false; //prevent unwanted override if AltHold selected at RTH initialize if ((posControl.flags.estHeadingStatus == EST_NONE) || (posControl.flags.estAltStatus == EST_NONE) || (posControl.flags.estPosStatus != EST_TRUSTED) || !STATE(GPS_FIX_HOME)) { // Heading sensor, altitude sensor and HOME fix are mandatory for RTH. If not satisfied - switch to emergency landing @@ -1150,29 +1152,22 @@ static navigationFSMEvent_t navOnEnteringState_NAV_STATE_RTH_INITIALIZE(navigati } } -static void OverRideRTHAtitudePreset(void) -{ - if (!navConfig()->general.flags.rth_alt_control_override) { - return; - } - - if (!IS_RC_MODE_ACTIVE(BOXNAVALTHOLD)) { - posControl.flags.CanOverRideRTHAlt = true; - } - else { - if (posControl.flags.CanOverRideRTHAlt && !posControl.flags.forcedRTHActivated) { - posControl.rthState.rthInitialAltitude = posControl.actualState.abs.pos.z; - posControl.rthState.rthFinalAltitude = posControl.rthState.rthInitialAltitude; - posControl.flags.CanOverRideRTHAlt = false; - } - } -} - static navigationFSMEvent_t navOnEnteringState_NAV_STATE_RTH_CLIMB_TO_SAFE_ALT(navigationFSMState_t previousState) { + //AWH xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + if (!IS_RC_MODE_ACTIVE(BOXNAVALTHOLD)) { + RTHAltHoldOverRideFlag = true; + } + else { + if (RTHAltHoldOverRideFlag && !posControl.flags.forcedRTHActivated) { + posControl.rthState.rthInitialAltitude = posControl.actualState.abs.pos.z; + posControl.rthState.rthFinalAltitude = posControl.rthState.rthInitialAltitude; + RTHAltHoldOverRideFlag = false; + } + } + //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + UNUSED(previousState); - - OverRideRTHAtitudePreset(); if ((posControl.flags.estHeadingStatus == EST_NONE)) { return NAV_FSM_EVENT_SWITCH_TO_EMERGENCY_LANDING; @@ -1247,8 +1242,6 @@ static navigationFSMEvent_t navOnEnteringState_NAV_STATE_RTH_CLIMB_TO_SAFE_ALT(n static navigationFSMEvent_t navOnEnteringState_NAV_STATE_RTH_HEAD_HOME(navigationFSMState_t previousState) { UNUSED(previousState); - - OverRideRTHAtitudePreset(); if ((posControl.flags.estHeadingStatus == EST_NONE)) { return NAV_FSM_EVENT_SWITCH_TO_EMERGENCY_LANDING;