#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.fillScreen(bgColour); // Outer ring tft.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS, COL_RING); tft.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS - 1, COL_RING); tft.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS - 2, COL_RING); tft.drawCircle(DISPLAY_CX, DISPLAY_CY, DISPLAY_RADIUS - 3, COL_RING); // "SYSTEM" label tft.setTextDatum(MC_DATUM); tft.setTextFont(4); tft.setTextSize(1); tft.setTextColor(COL_LABEL, bgColour); tft.drawString("SYSTEM", DISPLAY_CX, 72); // Separator line under label tft.drawFastHLine(DISPLAY_CX - 55, 88, 110, COL_LABEL); // Large system letter (A or B) tft.setTextFont(4); tft.setTextSize(3); tft.setTextColor(letterColour, bgColour); tft.setTextDatum(MC_DATUM); tft.drawString(letter, DISPLAY_CX, 135); // Separator line above ACTIVE tft.drawFastHLine(DISPLAY_CX - 55, 164, 110, COL_LABEL); // "ACTIVE" label tft.setTextFont(4); tft.setTextSize(1); tft.setTextColor(COL_LABEL, bgColour); tft.drawString("ACTIVE", DISPLAY_CX, 185); } // --------------------------------------------------------------------------- // Public API // --------------------------------------------------------------------------- void displayShowSplash(TFT_eSPI &tft) { tft.fillScreen(TFT_BLACK); tft.setTextDatum(MC_DATUM); // "MMC" — large tft.setTextFont(4); tft.setTextSize(1); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.drawString("MMC", DISPLAY_CX, 80); // "SCOTTSDALE" tft.drawString("SCOTTSDALE", DISPLAY_CX, 120); // "2026" tft.drawString("2026", DISPLAY_CX, 160); tft.setTextSize(1); delay(SPLASH_MS); } void displayInit(TFT_eSPI &tft) { tft.init(); tft.setRotation(0); tft.fillScreen(TFT_BLACK); } void displayShowLogo(TFT_eSPI &tft) { drawLogo(tft); } void displayBlank(TFT_eSPI &tft) { tft.fillScreen(TFT_BLACK); } 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"); }