Merge pull request #1455 from opentx/projectkk2glider/issue_1440
Fixes #1440 - Logical switches state not reset after model load
This commit is contained in:
@@ -386,6 +386,7 @@ void eeLoadModel(uint8_t id)
|
||||
}
|
||||
|
||||
flightReset();
|
||||
logicalSwitchesReset();
|
||||
|
||||
if (pulsesStarted()) {
|
||||
checkAll();
|
||||
|
||||
@@ -970,6 +970,7 @@ void eeLoadModel(uint8_t id)
|
||||
}
|
||||
|
||||
flightReset();
|
||||
logicalSwitchesReset();
|
||||
|
||||
if (pulsesStarted()) {
|
||||
checkAll();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<MAX_FLIGHT_MODES; fm++) {
|
||||
#endif
|
||||
|
||||
@@ -389,6 +389,38 @@ TEST(getSwitch, circularCSW)
|
||||
EXPECT_EQ(getSwitch(-SWSRC_SW2), true);
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
TEST(getSwitch, OldTypeStickyCSW)
|
||||
{
|
||||
MODEL_RESET();
|
||||
MIXER_RESET();
|
||||
g_model.logicalSw[0] = { SWSRC_SA0, 0, 0, LS_FUNC_AND };
|
||||
g_model.logicalSw[1] = { SWSRC_SW1, SWSRC_SW2, 0, LS_FUNC_OR };
|
||||
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), false);
|
||||
|
||||
// now trigger SA0, both switches should become true
|
||||
simuSetSwitch(0, -1);
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), true);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
|
||||
|
||||
// now release SA0 and SW2 should stay true
|
||||
simuSetSwitch(0, 0);
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
|
||||
|
||||
// now reset logical switches
|
||||
logicalSwitchesReset();
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), false);
|
||||
}
|
||||
#endif // #if defined(PCBTARANIS)
|
||||
|
||||
TEST(getSwitch, nullSW)
|
||||
{
|
||||
MODEL_RESET();
|
||||
|
||||
Reference in New Issue
Block a user