From 9861a08150e8dda8ec720d1bda86fc5585df1c51 Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 28 Jul 2014 21:02:18 +0200 Subject: [PATCH] Fixes #1562 --- radio/src/mixer.cpp | 2 +- radio/src/tests/mixer.cpp | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/radio/src/mixer.cpp b/radio/src/mixer.cpp index ccd573a50..f9bf966d7 100755 --- a/radio/src/mixer.cpp +++ b/radio/src/mixer.cpp @@ -644,7 +644,7 @@ void evalFlightModeMixes(uint8_t mode, uint8_t tick10ms) //========== PHASE && SWITCH ===== bool mixCondition = (md->flightModes != 0 || md->swtch); - delayval_t mixEnabled = !(md->flightModes & (1 << mixerCurrentFlightMode)) && getSwitch(md->swtch); + delayval_t mixEnabled = (!(md->flightModes & (1 << mixerCurrentFlightMode)) && getSwitch(md->swtch)) ? DELAY_POS_MARGIN+1 : 0; if (mixEnabled && md->srcRaw >= MIXSRC_FIRST_TRAINER && md->srcRaw <= MIXSRC_LAST_TRAINER && !ppmInValid) { mixEnabled = 0; diff --git a/radio/src/tests/mixer.cpp b/radio/src/tests/mixer.cpp index 8bd038f3a..db4b64a25 100644 --- a/radio/src/tests/mixer.cpp +++ b/radio/src/tests/mixer.cpp @@ -533,6 +533,34 @@ TEST(Mixer, SlowDisabledOnStartup) EXPECT_EQ(chans[0], CHANNEL_MAX); } +TEST(Mixer, DelayOnSwitch) +{ + MODEL_RESET(); + MIXER_RESET(); + g_model.mixData[0].destCh = 0; + g_model.mixData[0].mltpx = MLTPX_ADD; + g_model.mixData[0].srcRaw = MIXSRC_MAX; + g_model.mixData[0].weight = 100; + g_model.mixData[0].swtch = TR(SWSRC_THR, SWSRC_SA2); + g_model.mixData[0].delayUp = DELAY_STEP*5; + g_model.mixData[0].delayDown = DELAY_STEP*5; + + evalFlightModeMixes(e_perout_mode_normal, 0); + EXPECT_EQ(chans[0], 0); + + simuSetSwitch(0, 1); + CHECK_DELAY(0, 500); + + evalFlightModeMixes(e_perout_mode_normal, 1); + EXPECT_EQ(chans[0], CHANNEL_MAX); + + simuSetSwitch(0, 0); + CHECK_DELAY(0, 500); + + evalFlightModeMixes(e_perout_mode_normal, 1); + EXPECT_EQ(chans[0], 0); +} + #if !defined(CPUARM) TEST(Mixer, SlowAndDelayOnReplace3POSSource) {