#pragma once #include #include #include "../Global/GlobalDataController.h" #include #include #include "../../include/WeatherStationFonts.h" #include "BaseDisplayClient.h" class OledDisplay : public BaseDisplayClient { private: GlobalDataController *globalDataController; DebugController *debugController; OLEDDisplay *oledDisplay; OLEDDisplayUi *ui; boolean displayOn = true; long displayOffEpoch = 0; FrameCallback frames[3]; FrameCallback clockFrame[2]; boolean isClockOn = false; OverlayCallback overlays[1]; OverlayCallback clockOverlay[1]; public: OledDisplay(OLEDDisplay *oledDisplay, GlobalDataController *globalDataController, DebugController *debugController); void preSetup(); void postSetup(); void handleUpdate(); void flipDisplayUpdate(); void showBootScreen(); void showApAccessScreen(String apSsid, String apIp); void showWebserverSplashScreen(bool isEnabled); void checkDisplay(); void enableDisplay(boolean enable); void drawScreen1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawScreen2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawScreen3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawClock(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y); void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); void drawClockHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state); void drawRssi(OLEDDisplay *display); };