#ifndef DISPLAY_H_ #define DISPLAY_H_ #include #include #include #include #include #include #include #include #include class Timer; class StatusFrame; class DisplayFrame { public: DisplayFrame() { } virtual ~DisplayFrame() { } virtual void drawStatusPage(Bitmap &bitmap) = 0; }; class Display { public: Display(); ~Display(); void setup(std::shared_ptr boardConfig); void turn180(); void activateDisplaySaveMode(); void setDisplayTimeout(time_t timeout); void update(); void addFrame(std::shared_ptr frame); void setStatusFrame(std::shared_ptr frame); void showSpashScreen(String firmwareTitle, String version); private: std::shared_ptr _disp; std::list> _frames; std::shared_ptr _statusFrame; Timer _frameTimeout; Timer _displayTimeout; bool _displayOff; bool _displaySaveMode; void activateDisplay(); void deactivateDisplay(); }; class TextFrame : public DisplayFrame { public: TextFrame(String header, String text) : _header(header), _text(text) { } virtual ~TextFrame() { } void drawStatusPage(Bitmap &bitmap) override; private: String _header; String _text; }; #endif