From 30a68cf170a6f8d04379cc1a456ff594f0e5a860 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Sat, 5 Jul 2014 18:31:38 +0200 Subject: [PATCH] Fixes #1440 - Logical switches state not reset after model load: * logical switches reset not called anymore when user selects "Reset Flight", but only after model load * logical switches reset now includes a reset of switches state (set to false) --- radio/src/eeprom_raw.cpp | 1 + radio/src/eeprom_rlc.cpp | 1 + radio/src/opentx.cpp | 5 ----- radio/src/switches.cpp | 6 ++++++ radio/src/tests/gtests.cpp | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/radio/src/eeprom_raw.cpp b/radio/src/eeprom_raw.cpp index 1b0189a82..147c549f0 100644 --- a/radio/src/eeprom_raw.cpp +++ b/radio/src/eeprom_raw.cpp @@ -386,6 +386,7 @@ void eeLoadModel(uint8_t id) } flightReset(); + logicalSwitchesReset(); if (pulsesStarted()) { checkAll(); diff --git a/radio/src/eeprom_rlc.cpp b/radio/src/eeprom_rlc.cpp index fed16794a..455664987 100644 --- a/radio/src/eeprom_rlc.cpp +++ b/radio/src/eeprom_rlc.cpp @@ -970,6 +970,7 @@ void eeLoadModel(uint8_t id) } flightReset(); + logicalSwitchesReset(); if (pulsesStarted()) { checkAll(); diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index cb53ebb18..06fde210d 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1625,11 +1625,6 @@ void flightReset() telemetryReset(); #endif - logicalSwitchesReset(); -#if !defined(CPUARM) - s_last_switch_value = 0; -#endif - s_mixer_first_run_done = false; START_SILENCE_PERIOD(); diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index 7eb61fdb6..ffc5e3cf9 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -801,6 +801,12 @@ int16_t lswTimerValue(delayval_t val) void logicalSwitchesReset() { +#if defined(CPUARM) + memset(lswFm, 0, sizeof(lswFm)); +#else + s_last_switch_value = 0; +#endif + #if defined(CPUARM) for (uint8_t fm=0; fm