@@ -151,10 +151,10 @@ const SwitchInfo Boards::getSwitchInfo(Board::Type board, unsigned index)
|
||||
}
|
||||
else {
|
||||
const Board::SwitchInfo switches[] = {
|
||||
{SWITCH_3POS, "3POS"},
|
||||
{SWITCH_2POS, "THR"},
|
||||
{SWITCH_2POS, "RUD"},
|
||||
{SWITCH_2POS, "ELE"},
|
||||
{SWITCH_3POS, "3POS"},
|
||||
{SWITCH_2POS, "AIL"},
|
||||
{SWITCH_2POS, "GEA"},
|
||||
{SWITCH_TOGGLE, "TRN"}
|
||||
|
||||
@@ -308,40 +308,40 @@ void simuSetSwitch(uint8_t swtch, int8_t state)
|
||||
SWITCH_3_CASE(17, SWITCHES_GPIO_REG_R_L, SWITCHES_GPIO_REG_R_H, SWITCHES_GPIO_PIN_R_L, SWITCHES_GPIO_PIN_R_H)
|
||||
#endif
|
||||
#elif defined(PCBSKY9X)
|
||||
SWITCH_CASE(0, PIOC->PIO_PDSR, 1<<20)
|
||||
SWITCH_CASE(1, PIOA->PIO_PDSR, 1<<15)
|
||||
SWITCH_CASE(2, PIOC->PIO_PDSR, 1<<31)
|
||||
SWITCH_3_CASE(3, PIOC->PIO_PDSR, PIOC->PIO_PDSR, 0x00004000, 0x00000800)
|
||||
SWITCH_3_CASE(0, PIOC->PIO_PDSR, PIOC->PIO_PDSR, 0x00004000, 0x00000800)
|
||||
SWITCH_CASE(1, PIOC->PIO_PDSR, 1<<20)
|
||||
SWITCH_CASE(2, PIOA->PIO_PDSR, 1<<15)
|
||||
SWITCH_CASE(3, PIOC->PIO_PDSR, 1<<31)
|
||||
SWITCH_CASE(4, PIOA->PIO_PDSR, 1<<2)
|
||||
SWITCH_CASE(5, PIOC->PIO_PDSR, 1<<16)
|
||||
SWITCH_CASE(6, PIOC->PIO_PDSR, 1<<8)
|
||||
#elif defined(PCBGRUVIN9X)
|
||||
SWITCH_CASE(0, ping, 1<<INP_G_ThrCt)
|
||||
SWITCH_CASE(1, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(2, pinc, 1<<INP_C_ElevDR)
|
||||
SWITCH_3_CASE(3, ping, pinb, (1<<INP_G_ID1), (1<<INP_B_ID2))
|
||||
SWITCH_3_CASE(0, ping, pinb, (1<<INP_G_ID1), (1<<INP_B_ID2))
|
||||
SWITCH_CASE(1, ping, 1<<INP_G_ThrCt)
|
||||
SWITCH_CASE(2, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(3, pinc, 1<<INP_C_ElevDR)
|
||||
SWITCH_CASE(4, pinc, 1<<INP_C_AileDR)
|
||||
SWITCH_CASE(5, ping, 1<<INP_G_Gear)
|
||||
SWITCH_CASE(6, pinb, 1<<INP_B_Trainer)
|
||||
#elif defined(PCBMEGA2560)
|
||||
SWITCH_CASE(0, ping, 1<<INP_G_ThrCt)
|
||||
SWITCH_CASE(1, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(2, pinc, 1<<INP_L_ElevDR)
|
||||
SWITCH_3_CASE(3, pinc, pinc, (1<<INP_C_ID1), (1<<INP_C_ID2))
|
||||
SWITCH_3_CASE(0, pinc, pinc, (1<<INP_C_ID1), (1<<INP_C_ID2))
|
||||
SWITCH_CASE(1, ping, 1<<INP_G_ThrCt)
|
||||
SWITCH_CASE(2, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(3, pinc, 1<<INP_L_ElevDR)
|
||||
SWITCH_CASE(4, pinc, 1<<INP_C_AileDR)
|
||||
SWITCH_CASE(5, ping, 1<<INP_G_Gear)
|
||||
SWITCH_CASE(6, pinb, 1<<INP_L_Trainer)
|
||||
#else // PCB9X
|
||||
SWITCH_3_CASE(0, ping, pine, (1<<INP_G_ID1), (1<<INP_E_ID2))
|
||||
#if defined(TELEMETRY_JETI) || defined(TELEMETRY_FRSKY) || defined(TELEMETRY_NMEA) || defined(TELEMETRY_ARDUPILOT) || defined(TELEMETRY_MAVLINK)
|
||||
SWITCH_CASE(0, pinc, 1<<INP_C_ThrCt)
|
||||
SWITCH_CASE(1, pinc, 1<<INP_C_ThrCt)
|
||||
SWITCH_CASE(4, pinc, 1<<INP_C_AileDR)
|
||||
#else
|
||||
SWITCH_CASE(0, pine, 1<<INP_E_ThrCt)
|
||||
SWITCH_CASE(1, pine, 1<<INP_E_ThrCt)
|
||||
SWITCH_CASE(4, pine, 1<<INP_E_AileDR)
|
||||
#endif
|
||||
SWITCH_3_CASE(3, ping, pine, (1<<INP_G_ID1), (1<<INP_E_ID2))
|
||||
SWITCH_CASE(1, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(2, pine, 1<<INP_E_ElevDR)
|
||||
SWITCH_CASE(2, ping, 1<<INP_G_RuddDR)
|
||||
SWITCH_CASE(3, pine, 1<<INP_E_ElevDR)
|
||||
SWITCH_CASE(5, pine, 1<<INP_E_Gear)
|
||||
SWITCH_CASE(6, pine, 1<<INP_E_Trainer)
|
||||
#endif
|
||||
|
||||
@@ -49,6 +49,9 @@ inline void SYSTEM_RESET()
|
||||
#endif
|
||||
generalDefault();
|
||||
g_eeGeneral.templateSetup = 0;
|
||||
for (int i=0; i<NUM_SWITCHES; i++) {
|
||||
simuSetSwitch(i, -1);
|
||||
}
|
||||
}
|
||||
|
||||
inline void MODEL_RESET()
|
||||
|
||||
+32
-30
@@ -444,15 +444,15 @@ TEST_F(MixerTest, R2029Comment)
|
||||
g_model.mixData[1].swtch = SWSRC_THR;
|
||||
g_model.mixData[1].weight = 100;
|
||||
anaInValues[THR_STICK] = 1024;
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
EXPECT_EQ(chans[1], CHANNEL_MAX);
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
EXPECT_EQ(chans[1], 0);
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
EXPECT_EQ(chans[1], CHANNEL_MAX);
|
||||
@@ -473,7 +473,7 @@ TEST_F(MixerTest, Cascaded3Channels)
|
||||
g_model.mixData[2].destCh = 2;
|
||||
g_model.mixData[2].srcRaw = MIXSRC_THR;
|
||||
g_model.mixData[2].weight = 100;
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[1], CHANNEL_MAX);
|
||||
@@ -488,7 +488,7 @@ TEST_F(MixerTest, CascadedOrderedChannels)
|
||||
g_model.mixData[1].destCh = 1;
|
||||
g_model.mixData[1].srcRaw = MIXSRC_CH1;
|
||||
g_model.mixData[1].weight = 100;
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[1], CHANNEL_MAX);
|
||||
@@ -512,14 +512,14 @@ TEST_F(MixerTest, Cascaded5Channels)
|
||||
g_model.mixData[4].srcRaw = MIXSRC_THR;
|
||||
g_model.mixData[4].weight = 100;
|
||||
for (uint8_t i=0; i<10; i++) {
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalMixes(1);
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[1], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[2], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[3], CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[4], CHANNEL_MAX);
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalMixes(1);
|
||||
EXPECT_EQ(chans[0], -CHANNEL_MAX);
|
||||
EXPECT_EQ(chans[1], -CHANNEL_MAX);
|
||||
@@ -616,10 +616,10 @@ TEST_F(MixerTest, SlowOnSwitch)
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 250);
|
||||
|
||||
simuSetSwitch(0, -1);
|
||||
simuSetSwitch(1, -1);
|
||||
CHECK_SLOW_MOVEMENT(0, -1, 250);
|
||||
}
|
||||
|
||||
@@ -633,20 +633,20 @@ TEST_F(MixerTest, SlowUpOnSwitch)
|
||||
g_model.mixData[0].speedUp = SLOW_STEP*5;
|
||||
g_model.mixData[0].speedDown = 0;
|
||||
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
s_mixer_first_run_done = true;
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 250);
|
||||
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
lastAct = 0;
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 100);
|
||||
}
|
||||
#endif
|
||||
@@ -694,11 +694,11 @@ TEST_F(MixerTest, SlowOnSwitchAndPhase)
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
mixerCurrentFlightMode = 0;
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 250);
|
||||
|
||||
simuSetSwitch(0, -1);
|
||||
simuSetSwitch(1, -1);
|
||||
mixerCurrentFlightMode = 1;
|
||||
CHECK_SLOW_MOVEMENT(0, -1, 250);
|
||||
}
|
||||
@@ -709,24 +709,24 @@ TEST_F(MixerTest, SlowOnSwitchSource)
|
||||
g_model.mixData[0].destCh = 0;
|
||||
g_model.mixData[0].mltpx = MLTPX_ADD;
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
g_eeGeneral.switchConfig = 0x03;
|
||||
g_model.mixData[0].srcRaw = MIXSRC_SA;
|
||||
int switch_index = 0;
|
||||
#else
|
||||
g_model.mixData[0].srcRaw = MIXSRC_THR;
|
||||
int switch_index = 1;
|
||||
#endif
|
||||
g_model.mixData[0].weight = 100;
|
||||
g_model.mixData[0].speedUp = SLOW_STEP*5;
|
||||
g_model.mixData[0].speedDown = SLOW_STEP*5;
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
g_eeGeneral.switchConfig = 0x03;
|
||||
#endif
|
||||
|
||||
s_mixer_first_run_done = true;
|
||||
|
||||
simuSetSwitch(0, -1);
|
||||
simuSetSwitch(switch_index, -1);
|
||||
CHECK_SLOW_MOVEMENT(0, -1, 250);
|
||||
EXPECT_EQ(chans[0], -CHANNEL_MAX);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(switch_index, 1);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 500);
|
||||
}
|
||||
|
||||
@@ -751,8 +751,10 @@ TEST_F(MixerTest, DelayOnSwitch)
|
||||
g_model.mixData[0].weight = 100;
|
||||
#if defined(PCBTARANIS) || defined(PCBHORUS)
|
||||
g_model.mixData[0].swtch = SWSRC_SA2;
|
||||
int switch_index = 0;
|
||||
#else
|
||||
g_model.mixData[0].swtch = SWSRC_THR;
|
||||
int switch_index = 1;
|
||||
#endif
|
||||
g_model.mixData[0].delayUp = DELAY_STEP*5;
|
||||
g_model.mixData[0].delayDown = DELAY_STEP*5;
|
||||
@@ -760,13 +762,13 @@ TEST_F(MixerTest, DelayOnSwitch)
|
||||
evalFlightModeMixes(e_perout_mode_normal, 0);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(switch_index, 1);
|
||||
CHECK_DELAY(0, 500);
|
||||
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX);
|
||||
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(switch_index, 0);
|
||||
CHECK_DELAY(0, 500);
|
||||
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
@@ -786,16 +788,16 @@ TEST_F(MixerTest, SlowAndDelayOnReplace3POSSource)
|
||||
|
||||
s_mixer_first_run_done = true;
|
||||
|
||||
simuSetSwitch(3, -1);
|
||||
simuSetSwitch(0, -1);
|
||||
CHECK_SLOW_MOVEMENT(0, -1, 250);
|
||||
EXPECT_EQ(chans[0], -CHANNEL_MAX);
|
||||
|
||||
simuSetSwitch(3, 0);
|
||||
simuSetSwitch(0, 0);
|
||||
CHECK_DELAY(0, 500);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 250/*half course*/);
|
||||
EXPECT_EQ(chans[0], 0);
|
||||
|
||||
simuSetSwitch(3, 1);
|
||||
simuSetSwitch(0, 1);
|
||||
CHECK_DELAY(0, 500);
|
||||
CHECK_SLOW_MOVEMENT(0, +1, 250);
|
||||
}
|
||||
@@ -815,16 +817,16 @@ TEST_F(MixerTest, SlowOnSwitchReplace)
|
||||
g_model.mixData[1].swtch = SWSRC_THR;
|
||||
g_model.mixData[1].speedDown = SLOW_STEP*5;
|
||||
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX/2);
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
// slow is not applied, but it's better than the first mix not applied at all!
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX);
|
||||
|
||||
simuSetSwitch(0, 0);
|
||||
simuSetSwitch(1, 0);
|
||||
evalFlightModeMixes(e_perout_mode_normal, 1);
|
||||
// slow is not applied, but it's better than the first mix not applied at all!
|
||||
EXPECT_EQ(chans[0], CHANNEL_MAX/2);
|
||||
@@ -845,10 +847,10 @@ TEST_F(MixerTest, NoTrimOnInactiveMix)
|
||||
|
||||
s_mixer_first_run_done = true;
|
||||
|
||||
simuSetSwitch(0, 1);
|
||||
simuSetSwitch(1, 1);
|
||||
CHECK_SLOW_MOVEMENT(0, 1, 100);
|
||||
|
||||
simuSetSwitch(0, -1);
|
||||
simuSetSwitch(1, -1);
|
||||
CHECK_SLOW_MOVEMENT(0, -1, 100);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -108,8 +108,8 @@ TEST(getSwitch, recursiveSW)
|
||||
g_model.logicalSw[0] = { SWSRC_RUD, -SWSRC_SW2, LS_FUNC_OR };
|
||||
g_model.logicalSw[1] = { SWSRC_ELE, -SWSRC_SW1, LS_FUNC_OR };
|
||||
|
||||
simuSetSwitch(1, 0); // RUD 0
|
||||
simuSetSwitch(2, 0); // ELE 0
|
||||
simuSetSwitch(2, 0); // RUD 0
|
||||
simuSetSwitch(3, 0); // ELE 0
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
|
||||
@@ -119,7 +119,7 @@ TEST(getSwitch, recursiveSW)
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), false);
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW2), true);
|
||||
|
||||
simuSetSwitch(1, 1); // RUD 1
|
||||
simuSetSwitch(2, 1); // RUD 1
|
||||
LS_RECURSIVE_EVALUATION_RESET();
|
||||
evalLogicalSwitches();
|
||||
EXPECT_EQ(getSwitch(SWSRC_SW1), true);
|
||||
|
||||
Reference in New Issue
Block a user