From b584962334d4d32047b4fdc306d6c3fd9b22581c Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 29 Apr 2024 13:06:18 +0200 Subject: [PATCH] clear presets.json cache on upload needed to avoid inconsistent/corrupted presets after upload or restore. --- wled00/file.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/wled00/file.cpp b/wled00/file.cpp index 3a424b14..2b83d7f2 100644 --- a/wled00/file.cpp +++ b/wled00/file.cpp @@ -439,8 +439,11 @@ static const uint8_t *getPresetCache(size_t &size) { file.read(presetsCached, presetsCachedSize); presetsCached[presetsCachedSize] = 0; file.close(); + //USER_PRINTLN(F("getPresetCache(): /presets.json cached in PSRAM.")); } } + } else { + //USER_PRINTLN(F("getPresetCache(): /presets.json served from PSRAM.")); } size = presetsCachedSize; @@ -460,6 +463,16 @@ void invalidateFileNameCache() { // reset "file not found" cache haveSkinFile = true; haveICOFile = true; haveCpalFile = true; + + #if defined(BOARD_HAS_PSRAM) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) + // WLEDMM hack to clear presets.json cache + size_t dummy; + unsigned long realpresetsTime = presetsModifiedTime; + presetsModifiedTime = toki.second(); // pretend we have changes + (void) getPresetCache(dummy); // clear presets.json cache + presetsModifiedTime = realpresetsTime; // restore correct value +#endif + //USER_PRINTLN("WS FileRead cache cleared"); } bool handleFileRead(AsyncWebServerRequest* request, String path){