From 7621bad1f897cd8e5c21a8657fccf807590acee6 Mon Sep 17 00:00:00 2001 From: s0up Date: Fri, 8 Jun 2018 16:54:51 -0700 Subject: [PATCH 1/3] possibly fix failsafe when throttle low delay no exist --- src/main/flight/failsafe.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/flight/failsafe.c b/src/main/flight/failsafe.c index 32ff5e01b6..dc624914e6 100644 --- a/src/main/flight/failsafe.c +++ b/src/main/flight/failsafe.c @@ -221,7 +221,7 @@ void failsafeUpdateState(void) failsafeState.receivingRxDataPeriodPreset = PERIOD_OF_1_SECONDS; // require 1 seconds of valid rxData reprocessState = true; } else if (!receivingRxData) { - if (millis() > failsafeState.throttleLowPeriod) { + if (failsafeConfig()->failsafe_throttle_low_delay && millis() > failsafeState.throttleLowPeriod) { // JustDisarm: throttle was LOW for at least 'failsafe_throttle_low_delay' seconds failsafeActivate(); failsafeState.phase = FAILSAFE_LANDED; // skip auto-landing procedure @@ -233,7 +233,7 @@ void failsafeUpdateState(void) } } else { // When NOT armed, show rxLinkState of failsafe switch in GUI (failsafe mode) - if (failsafeSwitchIsOn) { + if (failsafeSwitchIsOn || !receivingRxData) { ENABLE_FLIGHT_MODE(FAILSAFE_MODE); } else { DISABLE_FLIGHT_MODE(FAILSAFE_MODE); From 8627c53c193403539abbb0785f3c3a536a6a2d62 Mon Sep 17 00:00:00 2001 From: s0up Date: Fri, 22 Jun 2018 17:07:45 -0700 Subject: [PATCH 2/3] failsafe fix potentially --- src/main/flight/failsafe.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/flight/failsafe.c b/src/main/flight/failsafe.c index dc624914e6..5b6049d9f1 100644 --- a/src/main/flight/failsafe.c +++ b/src/main/flight/failsafe.c @@ -214,7 +214,9 @@ void failsafeUpdateState(void) failsafeState.throttleLowPeriod = millis() + failsafeConfig()->failsafe_throttle_low_delay * MILLIS_PER_TENTH_SECOND; } // Kill switch logic (must be independent of receivingRxData to skip PERIOD_RXDATA_FAILURE delay before disarming) - if (failsafeSwitchIsOn && failsafeConfig()->failsafe_switch_mode == FAILSAFE_SWITCH_MODE_KILL) { + if (failsafeSwitchIsOn + && failsafeConfig()->failsafe_switch_mode == FAILSAFE_SWITCH_MODE_KILL + && failsafeConfig()->failsafe_procedure != FAILSAFE_PROCEDURE_GPS_RESCUE) { // KillswitchEvent: failsafe switch is configured as KILL switch and is switched ON failsafeActivate(); failsafeState.phase = FAILSAFE_LANDED; // skip auto-landing procedure From 33b752a55c4365640bdbb0defbad8683f44f1620 Mon Sep 17 00:00:00 2001 From: s0up Date: Fri, 22 Jun 2018 17:08:48 -0700 Subject: [PATCH 3/3] oops, derp --- src/main/flight/failsafe.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/flight/failsafe.c b/src/main/flight/failsafe.c index 5b6049d9f1..7eca015f34 100644 --- a/src/main/flight/failsafe.c +++ b/src/main/flight/failsafe.c @@ -214,16 +214,14 @@ void failsafeUpdateState(void) failsafeState.throttleLowPeriod = millis() + failsafeConfig()->failsafe_throttle_low_delay * MILLIS_PER_TENTH_SECOND; } // Kill switch logic (must be independent of receivingRxData to skip PERIOD_RXDATA_FAILURE delay before disarming) - if (failsafeSwitchIsOn - && failsafeConfig()->failsafe_switch_mode == FAILSAFE_SWITCH_MODE_KILL - && failsafeConfig()->failsafe_procedure != FAILSAFE_PROCEDURE_GPS_RESCUE) { + if (failsafeSwitchIsOn && failsafeConfig()->failsafe_switch_mode == FAILSAFE_SWITCH_MODE_KILL) { // KillswitchEvent: failsafe switch is configured as KILL switch and is switched ON failsafeActivate(); failsafeState.phase = FAILSAFE_LANDED; // skip auto-landing procedure failsafeState.receivingRxDataPeriodPreset = PERIOD_OF_1_SECONDS; // require 1 seconds of valid rxData reprocessState = true; } else if (!receivingRxData) { - if (failsafeConfig()->failsafe_throttle_low_delay && millis() > failsafeState.throttleLowPeriod) { + if (millis() > failsafeState.throttleLowPeriod && failsafeConfig()->failsafe_procedure != FAILSAFE_PROCEDURE_GPS_RESCUE) { // JustDisarm: throttle was LOW for at least 'failsafe_throttle_low_delay' seconds failsafeActivate(); failsafeState.phase = FAILSAFE_LANDED; // skip auto-landing procedure @@ -235,7 +233,7 @@ void failsafeUpdateState(void) } } else { // When NOT armed, show rxLinkState of failsafe switch in GUI (failsafe mode) - if (failsafeSwitchIsOn || !receivingRxData) { + if (failsafeSwitchIsOn) { ENABLE_FLIGHT_MODE(FAILSAFE_MODE); } else { DISABLE_FLIGHT_MODE(FAILSAFE_MODE);