#include "display.h" #include "common/constants.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/event_groups.h" // TODO: implement actual display functionality DisplayHandler::DisplayHandler(QueueHandle_t touch_queue, SemaphoreHandle_t lvgl_mutex) { (void)touch_queue; (void)lvgl_mutex; } DisplayHandler::~DisplayHandler() { } EInkDisplayHandler::EInkDisplayHandler(QueueHandle_t touch_queue, SemaphoreHandle_t lvgl_mutex) : DisplayHandler(touch_queue, lvgl_mutex) { } EInkDisplayHandler::~EInkDisplayHandler() { } void EInkDisplayHandler::init(EventGroupHandle_t system_event_group) { if (system_event_group != NULL) { xEventGroupSetBits(system_event_group, DISPLAY_READY_BIT); } } void EInkDisplayHandler::start_event_loop() { // Minimal background task to represent display processing xTaskCreate( // use the static adapter and pass `this` as the task parameter EInkDisplayHandler::task_adapter, "display_task", 2048, this, tskIDLE_PRIORITY + 1, nullptr ); } // static void EInkDisplayHandler::task_adapter(void* arg) { EInkDisplayHandler* self = static_cast(arg); if (self) { self->run_event_loop(); } else { printf("EInkDisplayHandler::task_adapter received null pointer\n"); } // If run_event_loop ever returns, delete the task. vTaskDelete(NULL); } void EInkDisplayHandler::run_event_loop() { for (;;) { vTaskDelay(pdMS_TO_TICKS(1000)); } } shutdown_display_handlerFunc EInkDisplayHandler::get_shutdown_display_handler() { return nullptr; } restart_display_handlerFunc EInkDisplayHandler::get_restart_display_handler() { return nullptr; }