From e3a9c1ddb6f2623e06cf5d9cacb100f85b3abc7a Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 25 Sep 2019 13:43:18 +0200 Subject: [PATCH] Introduce delayed failsafe check for multi --- radio/src/opentx.cpp | 5 ++++- radio/src/pulses/modules_helpers.h | 5 ----- radio/src/targets/taranis/hal.h | 6 +----- radio/src/telemetry/multi.cpp | 6 ++++++ radio/src/telemetry/multi.h | 15 ++++++++------- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 16419655d..3dfff66a8 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -869,7 +869,10 @@ static void checkRTCBattery() void checkFailsafe() { for (int i=0; i= 2019) - #define INTERNAL_MODULE_PXX2 -#else - #define INTERNAL_MODULE_PXX1 -#endif + #if defined(PCBXLITE) || defined(PCBX9LITE) #define INTMODULE_RCC_APB1Periph 0 #define INTMODULE_RCC_APB2Periph RCC_APB2Periph_USART1 diff --git a/radio/src/telemetry/multi.cpp b/radio/src/telemetry/multi.cpp index 87944a862..2caf121f8 100644 --- a/radio/src/telemetry/multi.cpp +++ b/radio/src/telemetry/multi.cpp @@ -73,6 +73,12 @@ static void processMultiStatusPacket(const uint8_t *data) multiModuleStatus.patch = data[4]; multiModuleStatus.lastUpdate = get_tmr10ms(); + if (multiModuleStatus.requiresFailsafeCheck == true) { + multiModuleStatus.requiresFailsafeCheck = false; + if (multiModuleStatus.supportsFailsafe() && g_model.moduleData[EXTERNAL_MODULE].failsafeMode == FAILSAFE_NOT_SET) + POPUP_WARNING(STR_NO_FAILSAFE); + } + if (wasBinding && !multiModuleStatus.isBinding() && multiBindStatus == MULTI_BIND_INITIATED) multiBindStatus = MULTI_BIND_FINISHED; } diff --git a/radio/src/telemetry/multi.h b/radio/src/telemetry/multi.h index 1b439ea24..de61bb745 100644 --- a/radio/src/telemetry/multi.h +++ b/radio/src/telemetry/multi.h @@ -118,17 +118,18 @@ struct MultiModuleStatus { uint8_t patch; uint8_t flags; + uint8_t requiresFailsafeCheck; tmr10ms_t lastUpdate; void getStatusString(char* statusText); - inline bool isValid() { return (bool)(get_tmr10ms() - lastUpdate < 200); } - inline bool supportsFailsafe() { return (bool) (flags & 0x20); } - inline bool isWaitingforBind() { return (bool) (flags & 0x10); } - inline bool isBinding() { return (bool) (flags & 0x08); } - inline bool protocolValid() { return (bool) (flags & 0x04); } - inline bool serialMode() { return (bool) (flags & 0x02); } - inline bool inputDetected() { return (bool) (flags & 0x01); } + inline bool isValid() const { return (bool)(get_tmr10ms() - lastUpdate < 200); } + inline bool supportsFailsafe() const { return (bool) (flags & 0x20); } + inline bool isWaitingforBind() const { return (bool) (flags & 0x10); } + inline bool isBinding() const { return (bool) (flags & 0x08); } + inline bool protocolValid() const { return (bool) (flags & 0x04); } + inline bool serialMode() const { return (bool) (flags & 0x02); } + inline bool inputDetected() const { return (bool) (flags & 0x01); } }; extern MultiModuleStatus multiModuleStatus;