From ab0173a5b6d4730049cb4f8dff9413da60b51a36 Mon Sep 17 00:00:00 2001 From: R_Duszkiewicz <181826@stud.prz.edu.pl> Date: Sun, 10 May 2026 19:28:41 +0200 Subject: [PATCH] Fix IDLE0 starvation with vTaskDelay(1) --- releases/v1.3.4.2/src/UploadManager.cpp | 21 ++++++++++++++------- src/UploadManager.cpp | 21 ++++++++++++++------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/releases/v1.3.4.2/src/UploadManager.cpp b/releases/v1.3.4.2/src/UploadManager.cpp index e48ff1b..dd9f15e 100644 --- a/releases/v1.3.4.2/src/UploadManager.cpp +++ b/releases/v1.3.4.2/src/UploadManager.cpp @@ -60,28 +60,35 @@ void UploadManager::processPendingUploads() { File dir = SD.open(path); if (!dir || !dir.isDirectory()) { if(dir) dir.close(); + vTaskDelay(1); // yield do IDLE0 między katalogami continue; } for (File f = dir.openNextFile(); f; f = dir.openNextFile()) { + vTaskDelay(1); // yield do IDLE0 przy każdym pliku — zapobiega głodzeniu WDT if (f.isDirectory()) { f.close(); continue; } String childPath = String(f.name()); if (!childPath.startsWith("/")) { childPath = path + "/" + childPath; } - - if (childPath.endsWith(".wmt")) { - if (childPath == capture_.getCurrentCapturePath()) continue; - ESP_LOGI(TAG_UPLOAD, "Found pending file: %s", childPath.c_str()); - uploadFile(childPath); - delay(1000); - } f.close(); + + // Pomijamy pliki .upl (już wgrane) i inne rozszerzenia + if (!childPath.endsWith(".wmt")) continue; + + // Pomijamy plik aktualnie zapisywany przez pomiar + if (childPath == capture_.getCurrentCapturePath()) continue; + Watchdog::feed(); if (WiFi.status() != WL_CONNECTED) { dir.close(); return; } + + ESP_LOGI(TAG_UPLOAD, "Found pending file: %s", childPath.c_str()); + uploadFile(childPath); + // Krótka przerwa po uploaderze — pozwala IDLE0 na reset WDT + vTaskDelay(pdMS_TO_TICKS(200)); } dir.close(); } diff --git a/src/UploadManager.cpp b/src/UploadManager.cpp index e48ff1b..dd9f15e 100644 --- a/src/UploadManager.cpp +++ b/src/UploadManager.cpp @@ -60,28 +60,35 @@ void UploadManager::processPendingUploads() { File dir = SD.open(path); if (!dir || !dir.isDirectory()) { if(dir) dir.close(); + vTaskDelay(1); // yield do IDLE0 między katalogami continue; } for (File f = dir.openNextFile(); f; f = dir.openNextFile()) { + vTaskDelay(1); // yield do IDLE0 przy każdym pliku — zapobiega głodzeniu WDT if (f.isDirectory()) { f.close(); continue; } String childPath = String(f.name()); if (!childPath.startsWith("/")) { childPath = path + "/" + childPath; } - - if (childPath.endsWith(".wmt")) { - if (childPath == capture_.getCurrentCapturePath()) continue; - ESP_LOGI(TAG_UPLOAD, "Found pending file: %s", childPath.c_str()); - uploadFile(childPath); - delay(1000); - } f.close(); + + // Pomijamy pliki .upl (już wgrane) i inne rozszerzenia + if (!childPath.endsWith(".wmt")) continue; + + // Pomijamy plik aktualnie zapisywany przez pomiar + if (childPath == capture_.getCurrentCapturePath()) continue; + Watchdog::feed(); if (WiFi.status() != WL_CONNECTED) { dir.close(); return; } + + ESP_LOGI(TAG_UPLOAD, "Found pending file: %s", childPath.c_str()); + uploadFile(childPath); + // Krótka przerwa po uploaderze — pozwala IDLE0 na reset WDT + vTaskDelay(pdMS_TO_TICKS(200)); } dir.close(); }