From 617a98ddd87eef057e911b2866a6a350e0146ce5 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:00:27 +0200 Subject: [PATCH] bugfix: preset loading should not resets all error preset loading was always resetting errorFlag to NO_ERROR. Changed so only preset-related error are reset. --- wled00/presets.cpp | 9 ++++++--- wled00/wled.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/wled00/presets.cpp b/wled00/presets.cpp index 3beab1b8..90784a0d 100644 --- a/wled00/presets.cpp +++ b/wled00/presets.cpp @@ -228,6 +228,7 @@ void handlePresets() presetToApply = 0; //clear request for preset callModeToApply = 0; + byte presetErrorFlag = ERR_NONE; DEBUG_PRINT(F("Applying preset: ")); DEBUG_PRINTLN(tmpPreset); @@ -235,11 +236,13 @@ void handlePresets() #ifdef ARDUINO_ARCH_ESP32 if (tmpPreset==255 && tmpRAMbuffer!=nullptr) { deserializeJson(*fileDoc,tmpRAMbuffer); - errorFlag = ERR_NONE; + if ((errorFlag == ERR_FS_PLOAD) || (errorFlag == ERR_JSON)) errorFlag = ERR_NONE; // WLEDMM only reset our own error } else #endif { - errorFlag = readObjectFromFileUsingId(filename, tmpPreset, fileDoc) ? ERR_NONE : ERR_FS_PLOAD; + presetErrorFlag = readObjectFromFileUsingId(filename, tmpPreset, fileDoc) ? ERR_NONE : ERR_FS_PLOAD; + if ((errorFlag == ERR_FS_PLOAD) || (errorFlag == ERR_JSON)) errorFlag = ERR_NONE; // WLEDMM only reset our own error + if (presetErrorFlag == ERR_FS_PLOAD) errorFlag = presetErrorFlag; } fdo = fileDoc->as(); @@ -258,7 +261,7 @@ void handlePresets() fdo.remove("ps"); // remove load request for presets to prevent recursive crash (if not called by button and contains preset cycling string "1~5~") deserializeState(fdo, CALL_MODE_NO_NOTIFY, tmpPreset); // may change presetToApply by calling applyPreset() } - if (!errorFlag && tmpPreset < 255 && changePreset) currentPreset = tmpPreset; + if (!presetErrorFlag && tmpPreset < 255 && changePreset) currentPreset = tmpPreset; #if defined(ARDUINO_ARCH_ESP32) //Aircoookie recommended not to delete buffer diff --git a/wled00/wled.h b/wled00/wled.h index e3cadc5d..085a888f 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2410080 +#define VERSION 2410170 // WLEDMM - you can check for this define in usermods, to only enabled WLEDMM specific code in the "right" fork. Its not defined in AC WLED. #define _MoonModules_WLED_