#include "display.h" #include "config.h" #include "logo.h" // --------------------------------------------------------------------------- // Helpers // --------------------------------------------------------------------------- static void drawStatusScreen(TFT_eSPI &tft, uint16_t bgColour, uint16_t letterColour, const char *letter) { TFT_eSprite spr = TFT_eSprite(&tft); spr.createSprite(DISPLAY_W, DISPLAY_H); spr.fillSprite(bgColour); // Outer ring spr.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS, COL_RING); spr.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS - 1, COL_RING); // "SYSTEM" label spr.setTextDatum(MC_DATUM); spr.setTextFont(2); spr.setTextColor(COL_LABEL, bgColour); spr.drawString("SYSTEM", DISPLAY_CX, 72); // Separator line under label spr.drawFastHLine(DISPLAY_CX - 55, 88, 110, COL_LABEL); // Large system letter (A or B) spr.setTextFont(8); // large built-in font spr.setTextColor(letterColour, bgColour); spr.setTextDatum(MC_DATUM); spr.drawString(letter, DISPLAY_CX, 138); // Separator line above ACTIVE spr.drawFastHLine(DISPLAY_CX - 55, 164, 110, COL_LABEL); // "ACTIVE" label spr.setTextFont(2); spr.setTextColor(COL_LABEL, bgColour); spr.drawString("ACTIVE", DISPLAY_CX, 180); spr.pushSprite(0, 0); spr.deleteSprite(); } // --------------------------------------------------------------------------- // Public API // --------------------------------------------------------------------------- void displayInit(TFT_eSPI &tft) { tft.init(); tft.setRotation(0); tft.fillScreen(TFT_BLACK); } void displayShowLogo(TFT_eSPI &tft) { drawLogo(tft); } void displayShowSystemA(TFT_eSPI &tft) { drawStatusScreen(tft, COL_BG_SYS_A, COL_LETTER_A, "A"); } void displayShowSystemB(TFT_eSPI &tft) { drawStatusScreen(tft, COL_BG_SYS_B, COL_LETTER_B, "B"); }