diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index a9c1eccde..fb67e578e 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -775,7 +775,7 @@ bool deserializeConfig(JsonObject doc, bool fromFS) { static const char s_cfg_json[] PROGMEM = "/cfg.json"; -void deserializeConfigFromFS() { +bool deserializeConfigFromFS() { [[maybe_unused]] bool success = deserializeConfigSec(); #ifdef WLED_ADD_EEPROM_SUPPORT if (!success) { //if file does not exist, try reading from EEPROM @@ -783,7 +783,7 @@ void deserializeConfigFromFS() { } #endif - if (!requestJSONBufferLock(1)) return; + if (!requestJSONBufferLock(1)) return false; DEBUG_PRINTLN(F("Reading settings from /cfg.json...")); @@ -795,7 +795,7 @@ void deserializeConfigFromFS() { bool needsSave = deserializeConfig(root, true); releaseJSONBufferLock(); - if (needsSave) serializeConfigToFS(); // usermods required new parameters + return needsSave; } void serializeConfigToFS() { diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index d2f62870d..e53dd2a9d 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -25,7 +25,7 @@ void IRAM_ATTR touchButtonISR(); //cfg.cpp bool deserializeConfig(JsonObject doc, bool fromFS = false); -void deserializeConfigFromFS(); +bool deserializeConfigFromFS(); bool deserializeConfigSec(); void serializeConfig(JsonObject doc); void serializeConfigToFS(); diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 63af7c2b8..c372d22ab 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -423,7 +423,7 @@ void WLED::setup() multiWiFi.push_back(WiFiConfig(CLIENT_SSID,CLIENT_PASS)); // initialise vector with default WiFi DEBUG_PRINTLN(F("Reading config")); - deserializeConfigFromFS(); + bool needsCfgSave = deserializeConfigFromFS(); DEBUG_PRINTF_P(PSTR("heap %u\n"), ESP.getFreeHeap()); #if defined(STATUSLED) && STATUSLED>=0 @@ -443,6 +443,8 @@ void WLED::setup() UsermodManager::setup(); DEBUG_PRINTF_P(PSTR("heap %u\n"), ESP.getFreeHeap()); + if (needsCfgSave) serializeConfigToFS(); // usermods required new parameters; need to wait for strip to be initialised #4752 + if (strcmp(multiWiFi[0].clientSSID, DEFAULT_CLIENT_SSID) == 0) showWelcomePage = true; WiFi.persistent(false);