From b69e97fb23b2e93be0650d3d644d031e2b53d6f5 Mon Sep 17 00:00:00 2001 From: s0up Date: Tue, 17 Jul 2018 15:14:21 -0700 Subject: [PATCH] fix the logic to be a little bit more user friendly --- src/main/flight/gps_rescue.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/flight/gps_rescue.c b/src/main/flight/gps_rescue.c index 525e53b8be..3ead432096 100644 --- a/src/main/flight/gps_rescue.c +++ b/src/main/flight/gps_rescue.c @@ -125,9 +125,15 @@ void updateGPSRescueState(void) // Minimum distance detection (100m). Disarm regardless of sanity check configuration. Rescue too close is never a good idea. if (rescueState.sensor.distanceToHome < 100) { - rescueState.failure = RESCUE_TOO_CLOSE; - setArmingDisabled(ARMING_DISABLED_ARM_SWITCH); - disarm(); + // Never allow rescue mode to engage as a failsafe within 100 meters or when disarmed. + if (rescueState.isFailsafe || !ARMING_FLAG(ARMED)) { + rescueState.failure = RESCUE_TOO_CLOSE; + setArmingDisabled(ARMING_DISABLED_ARM_SWITCH); + disarm(); + } else { + // Leave it up to the sanity check setting + rescueState.failure = RESCUE_TOO_CLOSE; + } } rescueState.phase = RESCUE_ATTAIN_ALT;