From 7c7d5413098fb68555581fda8d2cbc7226226b4b Mon Sep 17 00:00:00 2001 From: Peter Feerick Date: Fri, 17 Feb 2023 16:18:39 +1000 Subject: [PATCH] fix: `loadRadioSettingsYaml` not honoring chk flag (#3197) --- radio/src/storage/sdcard_yaml.cpp | 9 ++++++--- radio/src/storage/sdcard_yaml.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/radio/src/storage/sdcard_yaml.cpp b/radio/src/storage/sdcard_yaml.cpp index 7a3721e8c..e690153e6 100644 --- a/radio/src/storage/sdcard_yaml.cpp +++ b/radio/src/storage/sdcard_yaml.cpp @@ -131,7 +131,7 @@ static const char * attemptLoad(const char *filename, ChecksumResult* checksum_s return readYamlFile(filename, YamlTreeWalker::get_parser_calls(), &tree, checksum_status); } -const char * loadRadioSettingsYaml() +const char * loadRadioSettingsYaml(bool checks) { // YAML reader TRACE("YAML radio settings reader"); @@ -139,6 +139,9 @@ const char * loadRadioSettingsYaml() ChecksumResult checksum_status; const char* p = attemptLoad(RADIO_SETTINGS_YAML_PATH, &checksum_status); + if(!checks) + return p; + if((p != NULL) || (checksum_status != ChecksumResult::Success) ) { // Read failed or checksum check failed FRESULT result = FR_OK; @@ -182,7 +185,7 @@ const char * loadRadioSettings() g_eeGeneral.internalModule = DEFAULT_INTERNAL_MODULE; #endif - const char* error = loadRadioSettingsYaml(); + const char* error = loadRadioSettingsYaml(true); if (!error) { g_eeGeneral.chkSum = evalChkSum(); } @@ -598,5 +601,5 @@ const char * restoreModel(uint8_t idx, char *model_name) bool storageReadRadioSettings(bool checks) { if (!sdMounted()) sdInit(); - return loadRadioSettingsYaml() == nullptr; + return loadRadioSettingsYaml(checks) == nullptr; } diff --git a/radio/src/storage/sdcard_yaml.h b/radio/src/storage/sdcard_yaml.h index ce124c808..a6a461f1b 100644 --- a/radio/src/storage/sdcard_yaml.h +++ b/radio/src/storage/sdcard_yaml.h @@ -26,7 +26,7 @@ enum class ChecksumResult {Success, Failed, None}; constexpr uint8_t MODELIDX_STRLEN = sizeof(MODEL_FILENAME_PREFIX "00"); -const char * loadRadioSettingsYaml(); +const char * loadRadioSettingsYaml(bool checks); const char * writeModelYaml(const char* filename); const char * readModelYaml(const char * filename, uint8_t * buffer, uint32_t size, const char* pathName = STR_MODELS_PATH); bool YamlFileChecksum(const YamlNode* root_node, uint8_t* data, uint16_t* checksum);