#ifndef display_h #define display_h #include "Arduino.h" #include #include "config.h" enum displayMode_e { PLAYER, VOL, STATIONS }; #define TIMEZONE 10800 // 3600*3=10800 (UTC+3) #define OFFSET 0 // Daylight Offset (sec.) class Scroll { public: Scroll() { }; void init(char *sep, byte tsize, byte top, uint16_t dlay, uint16_t fgcolor, uint16_t bgcolor); void setText(const char *txt); void loop(); void reset(); void lock(); void unlock(); private: byte textsize, texttop; char text[BUFLEN/2]; char separator[4]; uint16_t fg, bg; uint16_t delayStartScroll; uint16_t textwidth, textheight, sepwidth, startticks, scrollticks; int x; bool doscroll, locked; unsigned long scrolldelay; void clearscrolls(); void getbounds(uint16_t &tWidth, uint16_t &tHeight, uint16_t &sWidth); boolean checkdelay(int m, unsigned long &tstamp); void scroll(); void ticks(); void clear(); void setTextParams(); void drawFrame(); }; class Display { public: struct tm timeinfo; uint16_t syncTicks; bool clockRequest; uint16_t screenwidth, screenheight; displayMode_e mode; uint16_t currentPlItem; public: Display() {}; void init(); void clear(); void loop(); void start(); void centerText(const char* text, byte y, uint16_t fg, uint16_t bg); void rightText(const char* text, byte y, uint16_t fg, uint16_t bg); void bootString(const char* text, byte y); void station(); void title(const char *str); void time(); void volume(); void ip(); void swichMode(displayMode_e newmode); void drawPlaylist(); private: Ticker timer; Scroll meta, title1, title2, plCurrent; bool dt; // dots unsigned long volDelay; void heap(); void rssi(); void apScreen(); void drawPlayer(); void drawVolume(); }; extern Display display; #endif