diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp index 0656467..7f586da 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.cpp @@ -83,6 +83,7 @@ void ESP32SvelteKit::begin() { startServices(); ESP_LOGV("ESP32SvelteKit", "Starting loop task"); + _taskManager.createTask(this->_loopImpl, "Spot main", 4096, this, 2, NULL, ESP32SVELTEKIT_RUNNING_CORE); } void ESP32SvelteKit::setupServer() { diff --git a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h index 2f61dbd..80b5038 100644 --- a/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h +++ b/esp32/lib/ESP32-sveltekit/ESP32SvelteKit.h @@ -186,6 +186,7 @@ class ESP32SvelteKit { String _appName = APP_NAME; protected: + static void _loopImpl(void *_this) { static_cast(_this)->loop(); } void setupServer(); void setupMDNS(); void startServices(); diff --git a/esp32/lib/ESP32-sveltekit/TaskManager.h b/esp32/lib/ESP32-sveltekit/TaskManager.h index 5fe4da1..ff570d6 100644 --- a/esp32/lib/ESP32-sveltekit/TaskManager.h +++ b/esp32/lib/ESP32-sveltekit/TaskManager.h @@ -73,10 +73,8 @@ class TaskManager { TaskManager() {} void begin() { - createTask(IdleTask::IdleTaskEntry, "Idle Core 0", IDLE_STACK_SIZE, &_taskIdle0, tskIDLE_PRIORITY + 1, &_hIdle0, - 0); - createTask(IdleTask::IdleTaskEntry, "Idle Core 1", IDLE_STACK_SIZE, &_taskIdle1, tskIDLE_PRIORITY + 1, &_hIdle1, - 1); + createTask(IdleTask::IdleTaskEntry, "Idle Core 0", IDLE_STACK_SIZE, &_taskIdle0, 1, &_hIdle0, 0); + createTask(IdleTask::IdleTaskEntry, "Idle Core 1", IDLE_STACK_SIZE, &_taskIdle1, 1, &_hIdle1, 1); esp_task_wdt_delete(xTaskGetIdleTaskHandleForCPU(0)); esp_task_wdt_delete(xTaskGetIdleTaskHandleForCPU(1)); esp_task_wdt_add(_hIdle0); @@ -116,8 +114,10 @@ class TaskManager { } BaseType_t createTask(void (*taskFunction)(void *), const char *name, uint32_t stackSize = 2048, - void *params = nullptr, UBaseType_t priority = tskIDLE_PRIORITY + 2, - TaskHandle_t *handle = nullptr, BaseType_t coreId = -1) { + void *params = nullptr, UBaseType_t priority = 2, TaskHandle_t *handle = nullptr, + BaseType_t coreId = -1) { + TaskHandle_t localHandle; + if (handle == nullptr) handle = &localHandle; BaseType_t res = coreId == -1 ? xTaskCreate(taskFunction, name, stackSize, params, tskIDLE_PRIORITY + priority, handle) : xTaskCreatePinnedToCore(taskFunction, name, stackSize, params, diff --git a/esp32/src/main.cpp b/esp32/src/main.cpp index 5b96eb3..fb473af 100644 --- a/esp32/src/main.cpp +++ b/esp32/src/main.cpp @@ -13,4 +13,4 @@ void setup() { spot.begin(); } -void loop() { spot.loop(); } +void loop() { vTaskDelete(NULL); }