diff --git a/radio/src/storage/conversions/conversions_219_220.cpp b/radio/src/storage/conversions/conversions_219_220.cpp index 8743b2889..a865c6a8b 100644 --- a/radio/src/storage/conversions/conversions_219_220.cpp +++ b/radio/src/storage/conversions/conversions_219_220.cpp @@ -116,12 +116,16 @@ void convertModelData_219_to_220(ModelData &model) if (timer_219.mode >= TMRMODE_START) { timer_219.mode += 1; } - if (timer_219.mode < TMRMODE_COUNT) { + if (timer_219.mode < TMRMODE_COUNT + && timer_219.mode >=0) { timer.mode = timer_219.mode; } else { timer.mode = TMRMODE_START; - timer.swtch = timer_219.mode - (TMRMODE_COUNT - 1); + if (timer_219.mode > 0) + timer.swtch = timer_219.mode - (TMRMODE_COUNT - 1); + else + timer.swtch = timer_219.mode; } timer.start = timer_219.start; diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index 6b5ff0dbc..87c8c5cc5 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -81,6 +81,24 @@ TEST(Conversions, ConversionX9DPFrom23) EXPECT_STRNEQ("abc.wav", g_model.customFn[1].play.name); } + +TEST(Conversions, ConversionX9DPFrom23_2) +{ + loadEEPROMFile(TESTS_PATH "/eeprom_23_x9d+2.bin"); + + eepromOpen(); + eeLoadGeneralSettingsData(); + convertRadioData_219_to_220(g_eeGeneral); + eeConvertModel(6, 219); + eeLoadModel(6); + + EXPECT_EQ(710, g_eeGeneral.calib[0].spanNeg); + EXPECT_EQ(944, g_eeGeneral.calib[0].mid); + EXPECT_EQ(770, g_eeGeneral.calib[0].spanPos); + + EXPECT_EQ(TMRMODE_START, g_model.timers[0].mode); // new! + EXPECT_EQ(-SWSRC_SA0, g_model.timers[0].swtch); // new! +} #endif // #if defined(PCBXLITE) && !defined(PCBXLITES)