From fb4f5554427fb9ba8ff999ff5a0f564126f6eab6 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 18 Oct 2021 10:39:34 +0200 Subject: [PATCH] Fix color lcd conversions --- radio/src/storage/conversions/conversions.cpp | 11 +++++++++-- radio/src/storage/conversions/conversions_219_220.cpp | 2 +- .../src/storage/conversions/yaml/dataconstants_220.h | 10 ++++++++++ .../conversions/yaml/yaml_datastructs_funcs.cpp | 2 ++ radio/src/storage/yaml/yaml_datastructs_funcs.cpp | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/radio/src/storage/conversions/conversions.cpp b/radio/src/storage/conversions/conversions.cpp index 6b38c49bb..a1f5a013f 100644 --- a/radio/src/storage/conversions/conversions.cpp +++ b/radio/src/storage/conversions/conversions.cpp @@ -82,11 +82,13 @@ void convertBinRadioData(const char * path, int version) #if STORAGE_CONVERSIONS < 220 if (version == 219) { convertRadioData_219_to_220(path); + version = 220; } #endif #if STORAGE_CONVERSIONS < 220 if (version == 220) { convertRadioData_220_to_221(path); + version = 221; } #endif converted++; @@ -137,17 +139,22 @@ void convertBinRadioData(const char * path, int version) const char* convertBinModelData(const char* filename, int version) { TRACE("convertModelData(%s,%d)", filename); + + char path[FF_MAX_LFN + 1]; + memcpy(path, MODELS_PATH, sizeof(MODELS_PATH)-1); + path[sizeof(MODELS_PATH)-1] = '/'; + strcat(&path[sizeof(MODELS_PATH)], filename); #if STORAGE_CONVERSIONS < 220 if (version == 219) { - const char* error = convertModelData_219_to_220(filename); + const char* error = convertModelData_219_to_220(path); if (error) return error; version = 220; } #endif #if STORAGE_CONVERSIONS < 221 if (version == 220) { - const char* error = convertModelData_220_to_221(filename); + const char* error = convertModelData_220_to_221(path); if (error) return error; version = 221; } diff --git a/radio/src/storage/conversions/conversions_219_220.cpp b/radio/src/storage/conversions/conversions_219_220.cpp index a045aafa6..c65b1eed2 100644 --- a/radio/src/storage/conversions/conversions_219_220.cpp +++ b/radio/src/storage/conversions/conversions_219_220.cpp @@ -301,7 +301,7 @@ void convertRadioData_219_to_220(void* data) // Clear CustomScreenData + TopBarPersistentData // as they cannot be converted (missing option types) strcpy(settings.themeName, defaultTheme->getName()); - defaultTheme->init(); // TODO: just dump the data into the settings + memset(&settings.themeData, 0, sizeof(settings.themeData)); #endif for (int i = 0; i < NUM_SWITCHES_219; ++i) { diff --git a/radio/src/storage/conversions/yaml/dataconstants_220.h b/radio/src/storage/conversions/yaml/dataconstants_220.h index 05c1dc337..a627c1186 100644 --- a/radio/src/storage/conversions/yaml/dataconstants_220.h +++ b/radio/src/storage/conversions/yaml/dataconstants_220.h @@ -33,6 +33,9 @@ #define STORAGE_NUM_SLIDERS 0 #define STORAGE_NUM_MOUSE_ANALOGS 0 +#define NUM_POTS 2 +#define NUM_XPOTS 0 + #elif defined(PCBHORUS) #define STORAGE_NUM_SWITCHES 10 @@ -40,6 +43,13 @@ #define STORAGE_NUM_SLIDERS 4 #define STORAGE_NUM_MOUSE_ANALOGS 2 +#if defined(PCBX10) + #define NUM_POTS 5 +#else + #define NUM_POTS 3 +#endif +#define NUM_XPOTS NUM_POTS + #elif defined(PCBTARANIS) #if defined(PCBX9LITE) diff --git a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp index 693b6d068..8e62f8285 100644 --- a/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/conversions/yaml/yaml_datastructs_funcs.cpp @@ -94,6 +94,8 @@ static uint8_t select_zov(uint8_t* data, uint32_t bitoffs) data += bitoffs >> 3UL; data -= sizeof(ZoneOptionValueEnum); ZoneOptionValueEnum* p_zovt = (ZoneOptionValueEnum*)data; + if (*p_zovt > ZOV_String) + return 0; return *p_zovt; } #endif diff --git a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp index 8e5c46022..b59c0155c 100644 --- a/radio/src/storage/yaml/yaml_datastructs_funcs.cpp +++ b/radio/src/storage/yaml/yaml_datastructs_funcs.cpp @@ -132,6 +132,8 @@ static uint8_t select_zov(uint8_t* data, uint32_t bitoffs) data += bitoffs >> 3UL; data -= sizeof(ZoneOptionValueEnum); ZoneOptionValueEnum* p_zovt = (ZoneOptionValueEnum*)data; + if (*p_zovt > ZOV_String) + return 0; return *p_zovt; } #endif