diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index fb69251bd..b78c83a64 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -118,6 +118,8 @@ inline int MAX_SWITCHES_POSITION(Board::Type board, int version) return Boards::getCapability(board, Board::SwitchPositions) - 2 * 3; if (IS_TARANIS_X9D(board)) return 8 * 3; + if (IS_TARANIS_XLITE(board)) + return 4 * 3; } if (IS_TARANIS_X9D(board)) { @@ -157,8 +159,8 @@ class SwitchesConversionTable: public ConversionTable { public: SwitchesConversionTable(Board::Type board, unsigned int version, bool timer=false) { - int val=0; - int offset=0; + int val = 0; + int offset = 0; if (timer) { offset = 4; for (int i=0; i<5; i++) { diff --git a/companion/src/tests/conversions.cpp b/companion/src/tests/conversions.cpp index 753d3ba91..c199c7851 100644 --- a/companion/src/tests/conversions.cpp +++ b/companion/src/tests/conversions.cpp @@ -90,6 +90,49 @@ TEST(Conversions, ConversionX7From22) EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); } +TEST(Conversions, ConversionXLiteFrom22) +{ + RadioData radioData; + Storage store = Storage(RADIO_TESTS_PATH "/eeprom_22_xlite.bin"); + + ASSERT_EQ(true, store.load(radioData)); + + const GeneralSettings& settings = radioData.generalSettings; + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY,1), settings.customFn[0].swtch); + EXPECT_EQ(FuncLogs, settings.customFn[0].func); + EXPECT_EQ(20, settings.customFn[0].param); + + EXPECT_STREQ("Tes", settings.switchName[0]); + EXPECT_EQ(Board::SWITCH_3POS, settings.switchConfig[0]); + + const ModelData& model = radioData.models[0]; + EXPECT_STREQ("Test", model.name); + EXPECT_EQ(PULSES_PXX_R9M, model.moduleData[1].protocol); + EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, model.moduleData[1].subType); + + EXPECT_EQ(80, model.mixData[0].weight); + EXPECT_EQ(80, model.expoData[0].weight); + + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), model.mixData[4].srcRaw); + EXPECT_EQ(RawSwitch(SWITCH_TYPE_TELEMETRY, 1), model.mixData[4].swtch); + EXPECT_EQ(HELI_SWASH_TYPE_120X, model.swashRingData.type); + EXPECT_STREQ("Thr", model.inputNames[0]); + + EXPECT_STREQ("Tes", model.sensorData[0].label); + EXPECT_EQ(10, model.sensorData[0].id); + EXPECT_EQ(8, model.sensorData[0].instance); + EXPECT_EQ(900, model.limitData[0].max); // -100 + + EXPECT_EQ(LS_FN_VPOS, model.logicalSw[0].func); + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0).toValue(), model.logicalSw[0].val1); + EXPECT_EQ(0, model.logicalSw[0].val2); + + const FrSkyScreenData& screen = model.frsky.screens[0]; + EXPECT_EQ(TELEMETRY_SCREEN_NUMBERS, screen.type); + EXPECT_EQ(RawSource(SOURCE_TYPE_PPM,0), screen.body.lines[0].source[0]); + EXPECT_EQ(RawSource(SOURCE_TYPE_SPECIAL,4), screen.body.lines[0].source[1]); +} + bool loadFile(QByteArray & filedata, const QString & filename) {