#ifndef Display_h #define Display_h #define FONT_LARGE 1 #define FONT_SMALL 0 struct DispEntry { int8_t y; int8_t x; int16_t fmt; void (*func)(DispEntry *de); const char *extra; }; struct DispInfo { DispEntry *de; uint8_t *actions; int16_t *timeouts; }; class Display { private: void freeLayouts(); int allocDispInfo(int entries, DispInfo *d); void parseDispElement(char *text, DispEntry *de); public: void initFromFile(); void setLayout(DispInfo *layout); DispInfo *layout; Display(); static char buf[17]; static void drawLat(DispEntry *de); static void drawLon(DispEntry *de); static void drawAlt(DispEntry *de); static void drawHS(DispEntry *de); static void drawVS(DispEntry *de); static void drawID(DispEntry *de); static void drawRSSI(DispEntry *de); static void drawQS(DispEntry *de); static void drawType(DispEntry *de); static void drawFreq(DispEntry *de); static void drawAFC(DispEntry *de); static void drawIP(DispEntry *de); static void drawSite(DispEntry *de); static void drawTelemetry(DispEntry *de); static void drawGPS(DispEntry *de); static void drawText(DispEntry *de); void clearIP(); void setIP(const char *ip, bool AP); void updateDisplayPos(); void updateDisplayPos2(); void updateDisplayID(); void updateDisplayRSSI(); void updateStat(); void updateDisplayRXConfig(); void updateDisplayIP(); void updateDisplay(); void setLayout(int layout); }; extern Display disp; #endif