From 599bbdf314783e8f68dc94d056128407564efa33 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sat, 5 Jun 2021 16:03:19 +0200 Subject: [PATCH] WiP: conversions and storage format v220 --- radio/src/datastructs.h | 29 +- radio/src/storage/conversions/conversions.cpp | 76 +---- radio/src/storage/conversions/conversions.h | 23 +- .../conversions/conversions_219_220.cpp | 110 +++++-- .../src/storage/conversions/datastructs_219.h | 20 ++ radio/src/tests/conversions.cpp | 290 ++++++++---------- 6 files changed, 263 insertions(+), 285 deletions(-) diff --git a/radio/src/datastructs.h b/radio/src/datastructs.h index 93bba22e9..eeccb77b6 100644 --- a/radio/src/datastructs.h +++ b/radio/src/datastructs.h @@ -729,7 +729,7 @@ PACK(struct TrainerData { NOBACKUP(uint8_t spare5:1 SKIP); \ NOBACKUP(uint8_t blOffBright:7); \ NOBACKUP(char bluetoothName[LEN_BLUETOOTH_NAME]); -#elif defined(PCBTARANIS) || defined(PCBNV14) +#elif defined(PCBTARANIS) //|| defined(PCBNV14) #if defined(STORAGE_BLUETOOTH) #define BLUETOOTH_FIELDS \ uint8_t spare5 SKIP; \ @@ -747,18 +747,6 @@ PACK(struct TrainerData { char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \ char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME]; \ BLUETOOTH_FIELDS -#elif defined(PCBSKY9X) - #define EXTRA_GENERAL_FIELDS \ - int8_t txCurrentCalibration; \ - int8_t spare5 SKIP; \ - uint8_t mAhWarn; \ - uint16_t mAhUsed; \ - int8_t temperatureCalib; \ - uint8_t optrexDisplay; \ - uint8_t sticksGain; \ - uint8_t rotarySteps; \ - char switchNames[STORAGE_NUM_SWITCHES][LEN_SWITCH_NAME]; \ - char anaNames[NUM_STICKS+STORAGE_NUM_POTS+STORAGE_NUM_SLIDERS][LEN_ANA_NAME]; #else #define EXTRA_GENERAL_FIELDS #endif @@ -932,18 +920,6 @@ static inline void check_struct() CHKTYPE(TopBarPersistentData, 300); #elif defined(PCBNV14) // TODO -#elif defined(PCBSKY9X) - CHKSIZE(MixData, 20); - CHKSIZE(ExpoData, 17); - CHKSIZE(LimitData, 11); - CHKSIZE(CustomFunctionData, 9); - CHKSIZE(FlightModeData, 36); - CHKSIZE(TimerData, 11); - CHKSIZE(SwashRingData, 8); - CHKSIZE(FrSkyBarData, 5); - CHKSIZE(FrSkyLineData, 2); - CHKSIZE(ModelHeader, 12); - CHKTYPE(CurveHeader, 4); #else // Common for all variants CHKSIZE(LimitData, 5); @@ -986,9 +962,6 @@ static inline void check_struct() #elif defined(PCBX9D) || defined(PCBX9DP) CHKSIZE(RadioData, 898); CHKSIZE(ModelData, 6604); -#elif defined(PCBSKY9X) - CHKSIZE(RadioData, 735); - CHKSIZE(ModelData, 5301); #elif defined(PCBHORUS) CHKSIZE(RadioData, 901); CHKSIZE(ModelData, 11020); diff --git a/radio/src/storage/conversions/conversions.cpp b/radio/src/storage/conversions/conversions.cpp index 842321043..75fa45aaf 100644 --- a/radio/src/storage/conversions/conversions.cpp +++ b/radio/src/storage/conversions/conversions.cpp @@ -25,24 +25,9 @@ void convertRadioData(int version) { TRACE("convertRadioData(%d)", version); -#if STORAGE_CONVERSIONS < 217 - if (version == 216) { - version = 217; - convertRadioData_216_to_217(g_eeGeneral); - } -#endif - -#if STORAGE_CONVERSIONS < 218 - if (version == 217) { - version = 218; - convertRadioData_217_to_218(g_eeGeneral); - } -#endif - -#if STORAGE_CONVERSIONS < 219 - if (version == 218) { - version = 219; - convertRadioData_218_to_219(g_eeGeneral); +#if STORAGE_CONVERSIONS < 220 + if (version == 219) { + convertRadioData_219_to_220(g_eeGeneral); } #endif } @@ -51,24 +36,10 @@ void convertModelData(int version) { TRACE("convertModelData(%d)", version); -#if STORAGE_CONVERSIONS < 217 - if (version == 216) { - version = 217; - convertModelData_216_to_217(g_model); - } -#endif - -#if STORAGE_CONVERSIONS < 218 - if (version == 217) { - version = 218; - convertModelData_217_to_218(g_model); - } -#endif - -#if STORAGE_CONVERSIONS < 219 - if (version == 218) { +#if STORAGE_CONVERSIONS < 220 + if (version == 219) { version = 219; - convertModelData_218_to_219(g_model); + convertModelData_219_to_220(g_model); } #endif } @@ -90,14 +61,8 @@ bool eeConvert() const char *msg = NULL; switch (g_eeGeneral.version) { - case 216: - msg = "EEprom Data v216"; - break; - case 217: - msg = "EEprom Data v217"; - break; - case 218: - msg = "EEprom Data v218"; + case 219: + msg = "EEprom Data v219"; break; default: return false; @@ -106,9 +71,6 @@ bool eeConvert() int conversionVersionStart = g_eeGeneral.version; // Information to the user and wait for key press -#if defined(PCBSKY9X) - g_eeGeneral.optrexDisplay = 0; -#endif g_eeGeneral.backlightMode = e_backlight_mode_on; g_eeGeneral.backlightBright = 0; g_eeGeneral.contrast = 25; @@ -121,24 +83,10 @@ bool eeConvert() eeLoadGeneralSettingsData(); int version = conversionVersionStart; -#if STORAGE_CONVERSIONS < 217 - if (version == 216) { - version = 217; - convertRadioData_216_to_217(g_eeGeneral); - } -#endif - -#if STORAGE_CONVERSIONS < 218 - if (version == 217) { - version = 218; - convertRadioData_217_to_218(g_eeGeneral); - } -#endif - -#if STORAGE_CONVERSIONS < 219 - if (version == 218) { - version = 219; - convertRadioData_218_to_219(g_eeGeneral); +#if STORAGE_CONVERSIONS < 220 + if (version == 219) { + version = 220; + convertRadioData_219_to_220(g_eeGeneral); } #endif diff --git a/radio/src/storage/conversions/conversions.h b/radio/src/storage/conversions/conversions.h index 25960af4c..5c3ead9cf 100644 --- a/radio/src/storage/conversions/conversions.h +++ b/radio/src/storage/conversions/conversions.h @@ -24,14 +24,19 @@ void convertModelData(int version); bool eeConvert(); void eeConvertModel(int id, int version); -// Conversions 216 to 217 -void convertModelData_216_to_217(ModelData &model); -void convertRadioData_216_to_217(RadioData &settings); +// // Conversions 216 to 217 +// void convertModelData_216_to_217(ModelData &model); +// void convertRadioData_216_to_217(RadioData &settings); -// Conversions 217 to 218 -void convertModelData_217_to_218(ModelData &model); -void convertRadioData_217_to_218(RadioData &settings); +// // Conversions 217 to 218 +// void convertModelData_217_to_218(ModelData &model); +// void convertRadioData_217_to_218(RadioData &settings); -// Conversions 218 to 219 -void convertModelData_218_to_219(ModelData &model); -void convertRadioData_218_to_219(RadioData &settings); +// // Conversions 218 to 219 +// void convertModelData_218_to_219(ModelData &model); +// void convertRadioData_218_to_219(RadioData &settings); + + +// Conversions 219 to 220 +void convertModelData_219_to_220(ModelData &model); +void convertRadioData_219_to_220(RadioData &settings); diff --git a/radio/src/storage/conversions/conversions_219_220.cpp b/radio/src/storage/conversions/conversions_219_220.cpp index e13c74d86..105f8bfe5 100644 --- a/radio/src/storage/conversions/conversions_219_220.cpp +++ b/radio/src/storage/conversions/conversions_219_220.cpp @@ -68,6 +68,18 @@ typedef TimerData TimerData_v220; +static void convertToStr(char* str, size_t len) +{ + for (int c = 0; c < len; c++) { + str[c] = zchar2char(str[c]); + } + // Trim string + while(len > 0 && str[len-1]) { + if (str[len - 1] != ' ' && str[len - 1] != '\0') break; + str[--len] = '\0'; + } +} + void convertModelData_219_to_220(ModelData &model) { ModelData* oldModelAllocated = (ModelData*)malloc(sizeof(ModelData)); @@ -76,11 +88,77 @@ void convertModelData_219_to_220(ModelData &model) memcpy(&oldModel, &model, sizeof(ModelData)); ModelData& newModel = (ModelData&)model; + convertToStr(model.header.name, LEN_MODEL_NAME_219); + for (uint8_t i=0; ifunc == FUNC_PLAY_TRACK || cfn->func == FUNC_BACKGND_MUSIC) { + convertToStr(cfn->play.name, LEN_FUNCTION_NAME_219); + } + } + + // GVarData::name ? + for (uint8_t i=0; iinit(); #endif - // - // TODO: convert all names from zchar to "normal" chars - // - // g_model.telemetrySensors[i].label - // g_model.header.name - // g_model.header.bitmap // ???? really ???? - // timer.name - // fm->name - // expo->name - // g_model.inputNames[chn] - // mix->name - // CurveHeader.name - // cfn->play.name - // limit->name + for (int i = 0; i < NUM_SWITCHES_219; ++i) { + char* sw_name = &(settings.switchNames[i][0]); + convertToStr(sw_name, LEN_SWITCH_NAME_219); + } + + for (int i = 0; i < NUM_STICKS_219 + NUM_POTS_219 + NUM_SLIDERS_219; ++i) { + char* sw_name = &(settings.anaNames[i][0]); + convertToStr(sw_name, LEN_ANA_NAME_219); + } + +#if defined(PCBHORUS) || defined(PCBNV14) + convertToStr(settings.bluetoothName, LEN_BLUETOOTH_NAME_219); +#endif free(oldSettingsAllocated); } diff --git a/radio/src/storage/conversions/datastructs_219.h b/radio/src/storage/conversions/datastructs_219.h index 5509b82be..ef83d2471 100644 --- a/radio/src/storage/conversions/datastructs_219.h +++ b/radio/src/storage/conversions/datastructs_219.h @@ -43,6 +43,25 @@ #error "Unsupported Conversion for Radio" #endif +#if defined(PCBHORUS) + #define NUM_POTS_219 5 + #define NUM_SLIDERS_219 4 +#elif defined(PCBX9LITE) + #define NUM_POTS_219 1 + #define NUM_SLIDERS_219 0 +#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(PCBXLITE) || defined(PCBX7) + #define NUM_POTS_219 2 + #define NUM_SLIDERS_219 0 +#elif defined(PCBX9E) + #define NUM_POTS_219 4 + #define NUM_SLIDERS_219 4 +#else + #define NUM_POTS_219 3 + #define NUM_SLIDERS_219 2 +#endif + +#define NUM_STICKS_219 4 + #if defined(PCBHORUS) #define LEN_SWITCH_NAME_219 3 #define LEN_ANA_NAME_219 3 @@ -55,6 +74,7 @@ #endif #define LEN_GVAR_NAME_219 3 +#define TELEM_LABEL_LEN_219 4 #if defined(PCBHORUS) #define LEN_MODEL_NAME_219 15 diff --git a/radio/src/tests/conversions.cpp b/radio/src/tests/conversions.cpp index 2d9d5f5e3..0f33f22c5 100644 --- a/radio/src/tests/conversions.cpp +++ b/radio/src/tests/conversions.cpp @@ -31,106 +31,14 @@ void loadEEPROMFile(const char * filename) #endif #if defined(PCBX9DP) -#warning "TODO Make those tests on conversions work!" -//TEST(Conversions, ConversionX9DPFrom22) -//{ -// loadEEPROMFile(TESTS_PATH "/eeprom_22_x9d+.bin"); -// -// eepromOpen(); -// eeLoadGeneralSettingsData(); -// convertRadioData_218_to_219(g_eeGeneral); -// eeConvertModel(0, 218); -// eeLoadModel(0); -// -// EXPECT_EQ(-30, g_eeGeneral.vBatMin); -// EXPECT_EQ(8, g_eeGeneral.speakerVolume); -// EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); -// EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); -// -// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); -// EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); -// EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); -// -// EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); -// EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); -// -// EXPECT_ZSTREQ("Test", g_model.header.name); -// EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); -// EXPECT_EQ(80, g_model.mixData[0].weight); -// EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 -// EXPECT_EQ(80, g_model.expoData[0].weight); -// EXPECT_EQ(CURVE_REF_CUSTOM, g_model.expoData[0].curve.type); -// EXPECT_EQ(1, g_model.expoData[0].curve.value); -// EXPECT_EQ(CURVE_REF_EXPO, g_model.expoData[1].curve.type); -// EXPECT_EQ(20, g_model.expoData[1].curve.value); -// EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); -// EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); -// EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); -// EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); -// EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); -// EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); -// EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); -// EXPECT_EQ(10, g_model.telemetrySensors[0].id); -// EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); -// EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.logicalSw[0].v1); -//} -// -//TEST(Conversions, ConversionX9DPFrom23) -//{ -// loadEEPROMFile(TESTS_PATH "/eeprom_23_x9d+.bin"); -// -// eepromOpen(); -// eeLoadGeneralSettingsData(); -// eeLoadModel(0); -// -// EXPECT_EQ(-30, g_eeGeneral.vBatMin); -// EXPECT_EQ(8, g_eeGeneral.speakerVolume); -// EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); -// EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); -// -// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); -// EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); -// EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); -// -// EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); -// EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); -// -// EXPECT_ZSTREQ("Test", g_model.header.name); -// EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); -// EXPECT_EQ(80, g_model.mixData[0].weight); -// EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 -// EXPECT_EQ(80, g_model.expoData[0].weight); -// EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); -// EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); -// EXPECT_ZSTREQ("Test", g_model.flightModeData[0].name); -// -//#if defined(INTERNAL_MODULE_PXX2) -// EXPECT_EQ(MODULE_TYPE_ISRM_PXX2, g_model.moduleData[INTERNAL_MODULE].type); -// EXPECT_EQ(MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, g_model.moduleData[INTERNAL_MODULE].subType); -//#else -// EXPECT_EQ(MODULE_TYPE_NONE, g_model.moduleData[INTERNAL_MODULE].type); -//#endif -// -// EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); -// EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); -// -// EXPECT_ZSTREQ("Rud", g_model.inputNames[0]); -// EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); -// EXPECT_EQ(10, g_model.telemetrySensors[0].id); -// EXPECT_EQ(10, g_model.telemetrySensors[0].frskyInstance.physID); -// EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.logicalSw[0].v1); -//} -#endif - -#if defined(PCBXLITE) && !defined(PCBXLITES) -TEST(Conversions, ConversionXLiteFrom22) +TEST(Conversions, ConversionX9DPFrom23) { - loadEEPROMFile(TESTS_PATH "/eeprom_22_xlite.bin"); + loadEEPROMFile(TESTS_PATH "/eeprom_23_x9d+.bin"); eepromOpen(); eeLoadGeneralSettingsData(); - convertRadioData_218_to_219(g_eeGeneral); - eeConvertModel(0, 218); + convertRadioData_219_to_220(g_eeGeneral); + eeConvertModel(0, 219); eeLoadModel(0); EXPECT_EQ(-30, g_eeGeneral.vBatMin); @@ -142,87 +50,137 @@ TEST(Conversions, ConversionXLiteFrom22) EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); - EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); + EXPECT_STREQ("Tes", g_eeGeneral.switchNames[0]); // ZSTREQ EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); - EXPECT_ZSTREQ("Test", g_model.header.name); - EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); + EXPECT_STREQ("Test", g_model.header.name); // ZSTREQ + EXPECT_EQ(TMRMODE_COUNT - 1 + SWSRC_SA0, g_model.timers[0].mode); // new! EXPECT_EQ(80, g_model.mixData[0].weight); - EXPECT_EQ(80, g_model.expoData[0].weight); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[4].srcRaw); - EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[4].swtch); - EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); - EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); - - EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); - EXPECT_EQ(10, g_model.telemetrySensors[0].id); - EXPECT_EQ(8, g_model.telemetrySensors[0].frskyInstance.physID); EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 - - EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); - EXPECT_EQ(0, g_model.logicalSw[0].v2); - - EXPECT_EQ(TELEMETRY_SCREEN_TYPE_VALUES, g_model.screensType & 0x03); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.screens[0].lines[0].sources[0]); - EXPECT_EQ(MIXSRC_TIMER3, g_model.screens[0].lines[0].sources[1]); -} -#endif - -#if defined(PCBX7) -TEST(Conversions, ConversionX7From22) -{ - loadEEPROMFile(TESTS_PATH "/eeprom_22_x7.bin"); - - eepromOpen(); - eeLoadGeneralSettingsData(); - convertRadioData_218_to_219(g_eeGeneral); - eeConvertModel(0, 218); - eeLoadModel(0); - - EXPECT_EQ(-30, g_eeGeneral.vBatMin); - EXPECT_EQ(8, g_eeGeneral.speakerVolume); - EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); - EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); - - EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); - EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); - EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); - - EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); - EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); - - EXPECT_ZSTREQ("Test", g_model.header.name); - EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); - EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); - EXPECT_EQ(80, g_model.mixData[0].weight); EXPECT_EQ(80, g_model.expoData[0].weight); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[4].srcRaw); - EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[4].swtch); - EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); - EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); - - EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); - EXPECT_EQ(10, g_model.telemetrySensors[0].id); - EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); - EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 - EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); - EXPECT_ZSTREQ("FMtest", g_model.flightModeData[1].name); - EXPECT_EQ(45, g_model.flightModeData[1].swtch); - EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); + EXPECT_STREQ("Tes", g_model.gvars[0].name); // ZSTREQ + EXPECT_STREQ("Test", g_model.flightModeData[0].name); // ZSTREQ - EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); - EXPECT_EQ(0, g_model.logicalSw[0].v2); +#if defined(INTERNAL_MODULE_PXX2) + EXPECT_EQ(MODULE_TYPE_ISRM_PXX2, g_model.moduleData[INTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_ISRM_PXX2_ACCST_D16, g_model.moduleData[INTERNAL_MODULE].subType); +#else + EXPECT_EQ(MODULE_TYPE_NONE, g_model.moduleData[INTERNAL_MODULE].type); +#endif - EXPECT_EQ(TELEMETRY_SCREEN_TYPE_VALUES, g_model.screensType & 0x03); - EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.screens[0].lines[0].sources[0]); - EXPECT_EQ(MIXSRC_TIMER3, g_model.screens[0].lines[0].sources[1]); + EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); + EXPECT_EQ(MODULE_SUBTYPE_R9M_FCC, g_model.moduleData[EXTERNAL_MODULE].subType); + + EXPECT_STREQ("Rud", g_model.inputNames[0]); // ZSTREQ + EXPECT_STREQ("Tes", g_model.telemetrySensors[0].label); // ZSTREQ + EXPECT_EQ(10, g_model.telemetrySensors[0].id); + EXPECT_EQ(10, g_model.telemetrySensors[0].frskyInstance.physID); + EXPECT_EQ(MIXSRC_FIRST_TELEM, g_model.logicalSw[0].v1); } #endif +// #if defined(PCBXLITE) && !defined(PCBXLITES) +// TEST(Conversions, ConversionXLiteFrom22) +// { +// loadEEPROMFile(TESTS_PATH "/eeprom_22_xlite.bin"); + +// eepromOpen(); +// eeLoadGeneralSettingsData(); +// convertRadioData_218_to_219(g_eeGeneral); +// eeConvertModel(0, 218); +// eeLoadModel(0); + +// EXPECT_EQ(-30, g_eeGeneral.vBatMin); +// EXPECT_EQ(8, g_eeGeneral.speakerVolume); +// EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); +// EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); + +// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); +// EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); +// EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); + +// EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); +// EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); + +// EXPECT_ZSTREQ("Test", g_model.header.name); +// EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); +// EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); +// EXPECT_EQ(80, g_model.mixData[0].weight); +// EXPECT_EQ(80, g_model.expoData[0].weight); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[4].srcRaw); +// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[4].swtch); +// EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); +// EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); + +// EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); +// EXPECT_EQ(10, g_model.telemetrySensors[0].id); +// EXPECT_EQ(8, g_model.telemetrySensors[0].frskyInstance.physID); +// EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 + +// EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); +// EXPECT_EQ(0, g_model.logicalSw[0].v2); + +// EXPECT_EQ(TELEMETRY_SCREEN_TYPE_VALUES, g_model.screensType & 0x03); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.screens[0].lines[0].sources[0]); +// EXPECT_EQ(MIXSRC_TIMER3, g_model.screens[0].lines[0].sources[1]); +// } +// #endif + +// #if defined(PCBX7) +// TEST(Conversions, ConversionX7From22) +// { +// loadEEPROMFile(TESTS_PATH "/eeprom_22_x7.bin"); + +// eepromOpen(); +// eeLoadGeneralSettingsData(); +// convertRadioData_218_to_219(g_eeGeneral); +// eeConvertModel(0, 218); +// eeLoadModel(0); + +// EXPECT_EQ(-30, g_eeGeneral.vBatMin); +// EXPECT_EQ(8, g_eeGeneral.speakerVolume); +// EXPECT_EQ('e', g_eeGeneral.ttsLanguage[0]); +// EXPECT_EQ('n', g_eeGeneral.ttsLanguage[1]); + +// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_eeGeneral.customFn[0].swtch); +// EXPECT_EQ(FUNC_LOGS, g_eeGeneral.customFn[0].func); +// EXPECT_EQ(20, g_eeGeneral.customFn[0].all.val); + +// EXPECT_ZSTREQ("Tes", g_eeGeneral.switchNames[0]); +// EXPECT_EQ(SWITCH_3POS, SWITCH_CONFIG(0)); + +// EXPECT_ZSTREQ("Test", g_model.header.name); +// EXPECT_EQ(MODULE_TYPE_R9M_PXX1, g_model.moduleData[EXTERNAL_MODULE].type); +// EXPECT_EQ(MODULE_SUBTYPE_R9M_EU, g_model.moduleData[EXTERNAL_MODULE].subType); +// EXPECT_EQ(80, g_model.mixData[0].weight); +// EXPECT_EQ(80, g_model.expoData[0].weight); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.mixData[4].srcRaw); +// EXPECT_EQ(SWSRC_TELEMETRY_STREAMING, g_model.mixData[4].swtch); +// EXPECT_EQ(SWASH_TYPE_120X, g_model.swashR.type); +// EXPECT_ZSTREQ("Thr", g_model.inputNames[0]); + +// EXPECT_ZSTREQ("Tes", g_model.telemetrySensors[0].label); +// EXPECT_EQ(10, g_model.telemetrySensors[0].id); +// EXPECT_EQ(9, g_model.telemetrySensors[0].frskyInstance.physID); +// EXPECT_EQ(-100, g_model.limitData[0].max); // 90.0 + +// EXPECT_EQ(10, g_model.flightModeData[0].gvars[0]); +// EXPECT_ZSTREQ("FMtest", g_model.flightModeData[1].name); +// EXPECT_EQ(45, g_model.flightModeData[1].swtch); +// EXPECT_ZSTREQ("Tes", g_model.gvars[0].name); + +// EXPECT_EQ(LS_FUNC_VPOS, g_model.logicalSw[0].func); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.logicalSw[0].v1); +// EXPECT_EQ(0, g_model.logicalSw[0].v2); + +// EXPECT_EQ(TELEMETRY_SCREEN_TYPE_VALUES, g_model.screensType & 0x03); +// EXPECT_EQ(MIXSRC_FIRST_TRAINER, g_model.screens[0].lines[0].sources[0]); +// EXPECT_EQ(MIXSRC_TIMER3, g_model.screens[0].lines[0].sources[1]); +// } +// #endif + #if 0 //TODO defined(PCBX10) && !defined(RADIO_FAMILY_T16) TEST(Conversions, ConversionX10From22) {