From b3b7eb10c22dd0fc4c1b2ae9a39b301cd7658911 Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Fri, 2 Aug 2024 18:40:44 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=AB=80=20Adds=20task=20to=20analytics?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- esp32/lib/ESP32-sveltekit/AnalyticsService.h | 3 +-- esp32/lib/ESP32-sveltekit/TaskManager.h | 13 ++++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/esp32/lib/ESP32-sveltekit/AnalyticsService.h b/esp32/lib/ESP32-sveltekit/AnalyticsService.h index 92f5f90..7841d9c 100644 --- a/esp32/lib/ESP32-sveltekit/AnalyticsService.h +++ b/esp32/lib/ESP32-sveltekit/AnalyticsService.h @@ -52,8 +52,7 @@ class AnalyticsService { doc["cpu0_usage"] = _taskManager->getCpuUsage(0); doc["cpu1_usage"] = _taskManager->getCpuUsage(1); doc["cpu_usage"] = _taskManager->getCpuUsage(); - // Add _taskManager->getTaskNames() as a JSON array - JsonArray tasks = doc["tasks"].as(); + JsonArray tasks = doc["tasks"].to(); for (auto const &task : _taskManager->getTasks()) { JsonObject nested = tasks.add(); nested["name"] = task.name; diff --git a/esp32/lib/ESP32-sveltekit/TaskManager.h b/esp32/lib/ESP32-sveltekit/TaskManager.h index e4a8d80..5fe4da1 100644 --- a/esp32/lib/ESP32-sveltekit/TaskManager.h +++ b/esp32/lib/ESP32-sveltekit/TaskManager.h @@ -84,6 +84,7 @@ class TaskManager { } std::vector getTasks() { + update(); std::vector tasks; for (auto const &task : _tasks) tasks.push_back(task.second); return tasks; @@ -94,9 +95,15 @@ class TaskManager { int getKernelTaskCount() const { return uxTaskGetNumberOfTasks(); } void update() { - for (auto const &task : _tasks) { - _tasks[task.first].priority = uxTaskPriorityGet(task.second.handle); - _tasks[task.first].coreId = xTaskGetAffinity(task.second.handle); + for (auto task = _tasks.begin(); task != _tasks.end();) { + eTaskState state = eTaskGetState(task->second.handle); + if (state == eDeleted) { + task = _tasks.erase(task); + } else { + _tasks[task->first].priority = uxTaskPriorityGet(task->second.handle); + _tasks[task->first].coreId = xTaskGetAffinity(task->second.handle); + ++task; + } } }