|
@@ -0,0 +1,69 @@
|
|
|
|
|
+#include "display.h"
|
|
|
|
|
+#include "config.h"
|
|
|
|
|
+#include "logo.h"
|
|
|
|
|
+#include <Fonts/FreeSansBold24pt7b.h>
|
|
|
|
|
+#include <Fonts/FreeSans9pt7b.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.setFreeFont(&FreeSans9pt7b);
|
|
|
|
|
+ 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.setFreeFont(&FreeSansBold24pt7b);
|
|
|
|
|
+ spr.setTextColor(letterColour, bgColour);
|
|
|
|
|
+ spr.drawString(letter, DISPLAY_CX, 138);
|
|
|
|
|
+
|
|
|
|
|
+ // Separator line above ACTIVE
|
|
|
|
|
+ spr.drawFastHLine(DISPLAY_CX - 55, 164, 110, COL_LABEL);
|
|
|
|
|
+
|
|
|
|
|
+ // "ACTIVE" label
|
|
|
|
|
+ spr.setFreeFont(&FreeSans9pt7b);
|
|
|
|
|
+ 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");
|
|
|
|
|
+}
|