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 d98102dd2..1542f6e82 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