From 34f7c3a46360d6d066f48c2d47e57bf8c343c23c Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Thu, 27 Aug 2015 22:50:55 +0200 Subject: [PATCH] Fix #2787 --- companion/src/firmwares/opentx/opentxeeprom.cpp | 17 ++++++++++++++--- radio/src/switches.cpp | 2 +- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index 834d601b9..a9626c5a9 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -1787,8 +1787,14 @@ class LogicalSwitchField: public TransformedField { switchesConversionTable->importValue(v2, csw.val2); } else if (csw.func >= LS_FN_EQUAL && csw.func <= LS_FN_ELESS) { - sourcesConversionTable->importValue((uint8_t)v1, csw.val1); - sourcesConversionTable->importValue((uint8_t)v2, csw.val2); + if (IS_ARM(board)) { + sourcesConversionTable->importValue((uint32_t)v1, csw.val1); + sourcesConversionTable->importValue((uint32_t)v2, csw.val2); + } + else { + sourcesConversionTable->importValue((uint8_t)v1, csw.val1); + sourcesConversionTable->importValue((uint8_t)v2, csw.val2); + } if (IS_TARANIS(board) && version < 216) { RawSource val1(csw.val1); if (val1.type == SOURCE_TYPE_STICK && val1.index < NUM_STICKS) { @@ -1801,7 +1807,12 @@ class LogicalSwitchField: public TransformedField { } } else if (csw.func != LS_FN_OFF) { - sourcesConversionTable->importValue((uint8_t)v1, csw.val1); + if (IS_ARM(board)) { + sourcesConversionTable->importValue((uint32_t)v1, csw.val1); + } + else { + sourcesConversionTable->importValue((uint8_t)v1, csw.val1); + } if (IS_TARANIS(board) && version < 216) { RawSource val1(csw.val1); if (val1.type == SOURCE_TYPE_STICK && val1.index < NUM_STICKS) { diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 49ea23eec..a9c522cff 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -276,7 +276,7 @@ bool getLogicalSwitch(uint8_t idx) } } else { - uint8_t v1 = ls->v1; + mixsrc_t v1 = ls->v1; #if defined(FRSKY) // Telemetry if (v1 >= MIXSRC_FIRST_TELEM) {