diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 11862f83f..194ef4fbf 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -671,7 +671,7 @@ void deserializeConfigFromFS() { // call readFromConfig() with an empty object so that usermods can initialize to defaults prior to saving JsonObject empty = JsonObject(); UsermodManager::readFromConfig(empty); - serializeConfig(); + serializeConfigToFS(); // init Ethernet (in case default type is set at compile time) #if defined(ARDUINO_ARCH_ESP32) && defined(WLED_USE_ETHERNET) initEthernet(); @@ -685,10 +685,10 @@ void deserializeConfigFromFS() { bool needsSave = deserializeConfig(root, true); releaseJSONBufferLock(); - if (needsSave) serializeConfig(); // usermods required new parameters + if (needsSave) serializeConfigToFS(); // usermods required new parameters } -void serializeConfig() { +void serializeConfigToFS() { serializeConfigSec(); DEBUG_PRINTLN(F("Writing settings to /cfg.json...")); @@ -697,6 +697,17 @@ void serializeConfig() { JsonObject root = pDoc->to(); + serializeConfig(root); + + File f = WLED_FS.open(FPSTR(s_cfg_json), "w"); + if (f) serializeJson(root, f); + f.close(); + releaseJSONBufferLock(); + + doSerializeConfig = false; +} + +void serializeConfig(JsonObject root) { JsonArray rev = root.createNestedArray("rev"); rev.add(1); //major settings revision rev.add(0); //minor settings revision @@ -1111,13 +1122,6 @@ void serializeConfig() { JsonObject usermods_settings = root.createNestedObject("um"); UsermodManager::addToConfig(usermods_settings); - - File f = WLED_FS.open(FPSTR(s_cfg_json), "w"); - if (f) serializeJson(root, f); - f.close(); - releaseJSONBufferLock(); - - doSerializeConfig = false; } diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index 497a775ee..0f4666b30 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -27,7 +27,8 @@ void IRAM_ATTR touchButtonISR(); bool deserializeConfig(JsonObject doc, bool fromFS = false); void deserializeConfigFromFS(); bool deserializeConfigSec(); -void serializeConfig(); +void serializeConfig(JsonObject doc); +void serializeConfigToFS(); void serializeConfigSec(); template diff --git a/wled00/improv.cpp b/wled00/improv.cpp index 197148b2b..0bc7a6698 100644 --- a/wled00/improv.cpp +++ b/wled00/improv.cpp @@ -272,5 +272,5 @@ void parseWiFiCommand(char* rpcData) { improvActive = 2; forceReconnect = true; - serializeConfig(); + serializeConfigToFS(); } \ No newline at end of file diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 34caeefa3..b2cf26440 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -200,7 +200,7 @@ void WLED::loop() loadLedmap = -1; } yield(); - if (doSerializeConfig) serializeConfig(); + if (doSerializeConfig) serializeConfigToFS(); yield(); handleWs();