| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #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");
- }
|