// (C) 2023 by Folkert van Heusden // Released under MIT license #include #include #include #include #include "console_shabadge.h" #include "cpu.h" #include "error.h" #include "utils.h" #define COLORED 0 #define UNCOLORED 1 console_shabadge::console_shabadge(std::atomic_uint32_t *const stop_event, std::vector & io_ports) : console_esp32(stop_event, io_ports, 296 / 8, 128 / 8) { if (epd.Init() != 0) Serial.println("Init of DEPG0290B01 failed"); else { Serial.println("DEPG0290B01 initialized"); paint = new Paint(image, 0, 0); paint->SetRotate(ROTATE_270); paint->SetWidth(128); paint->SetHeight(296); paint->Clear(UNCOLORED); epd.ClearFrameMemory(UNCOLORED); } } console_shabadge::~console_shabadge() { stop_thread(); delete paint; } void console_shabadge::put_char_ll(const char c) { console_esp32::put_char_ll(c); screen_updated_ts = millis(); screen_updated = true; } void console_shabadge::panel_update_thread() { for(;;) { vTaskDelay(100 / portTICK_RATE_MS); if (screen_updated && millis() - screen_updated_ts >= 1000) { screen_updated = false; paint->Clear(UNCOLORED); for(int y=0; yDrawCharAt(x * 8, y * 8, c, &Font8, COLORED); } } epd.SetFrameMemory(paint->GetImage(), 0, 0, paint->GetWidth(), paint->GetHeight()); epd.DisplayFrame(); } } }