#include "freertos/idf_additions.h" #include "esp_heap_caps.h" #include "program.h" Program::Program(DISPLAY_STATE* display_state) { _display_state = display_state; } int Program::init(int id, std::string name, Window* window) { _id = id; _task_name = name; _window = window; xTaskCreatePinnedToCore(loop, _task_name.c_str(), 4096, this, 1, &_task_handle, 0); return _id; } void Program::close() { vTaskDelete(_task_handle); } void Program::loop(void* pvParameters) { Program* self = static_cast(pvParameters); (self->_installed_program.*(self->_program_func))(); while (true) { vTaskDelay(pdMS_TO_TICKS(1000)); // Sleep for 1 second } }