From e3a9c1ddb6f2623e06cf5d9cacb100f85b3abc7a Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 25 Sep 2019 13:43:18 +0200 Subject: [PATCH 1/5] 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; From 3bb16f9d57f1a0a3a92fc3924a58f41718d9f5b1 Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 25 Sep 2019 13:45:59 +0200 Subject: [PATCH 2/5] Still needed --- radio/src/pulses/modules_helpers.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 1bd6a1984..d80a32860 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -346,6 +346,11 @@ inline bool isModuleFailsafeAvailable(uint8_t idx) return true; #endif +#if defined(MULTIMODULE) + if (isModuleMultimodule(idx)) + return multiModuleStatus.isValid() && multiModuleStatus.supportsFailsafe(); +#endif + if (isModuleXJT(idx)) return g_model.moduleData[idx].subType == MODULE_SUBTYPE_PXX1_ACCST_D16; From 149edf95b8929d4268fc0687af73d3272e124edc Mon Sep 17 00:00:00 2001 From: 3djc Date: Wed, 25 Sep 2019 13:48:15 +0200 Subject: [PATCH 3/5] Cosmetics --- radio/src/opentx.cpp | 2 +- radio/src/pulses/modules_helpers.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 3dfff66a8..345449ab9 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -869,7 +869,7 @@ static void checkRTCBattery() void checkFailsafe() { for (int i=0; i Date: Wed, 25 Sep 2019 13:49:19 +0200 Subject: [PATCH 4/5] Cosmetics --- radio/src/pulses/modules_helpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/pulses/modules_helpers.h b/radio/src/pulses/modules_helpers.h index 108be6f57..3bc69e3bc 100644 --- a/radio/src/pulses/modules_helpers.h +++ b/radio/src/pulses/modules_helpers.h @@ -348,7 +348,7 @@ inline bool isModuleFailsafeAvailable(uint8_t idx) if (isModuleXJT(idx)) return g_model.moduleData[idx].subType == MODULE_SUBTYPE_PXX1_ACCST_D16; - + #if defined(MULTIMODULE) if (isModuleMultimodule(idx)) return multiModuleStatus.isValid() && multiModuleStatus.supportsFailsafe(); From 543d1eb2caa91433d7eaaa25b2a8d1487f681418 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 27 Sep 2019 13:49:18 +0200 Subject: [PATCH 5/5] Fixes --- radio/src/targets/taranis/hal.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index f98ef983e..99acd429b 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -910,7 +910,11 @@ #if defined(PCBXLITE) #define EXTERNAL_ANTENNA #endif - +#if defined(PCBXLITES) || defined(PCBX9LITE) || (defined(PCBX9DP) && PCBREV >= 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