refactor display class

Display class gets access to App interface and HmRadio
Display class prepares relevant online information for displays in new DisplayData structure
Displays get pointer to DisplayData and only use information received from there
This commit is contained in:
Wusaweki 2023-09-10 16:19:10 +02:00
parent e8fa9c747e
commit f1bff0b824
13 changed files with 207 additions and 197 deletions

View file

@ -9,6 +9,7 @@
#define DISP_FMT_TEXT_LEN 32
#define BOTTOM_MARGIN 5
#include "defines.h"
#ifdef ESP8266
#include <ESP8266WiFi.h>
@ -16,25 +17,29 @@
#include <WiFi.h>
#endif
#include "../../utils/helper.h"
#include "Display_data.h"
class DisplayMono {
public:
DisplayMono() {};
virtual void init(uint8_t type, uint8_t rot, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, uint32_t* utcTs, const char* version) = 0;
virtual void config(bool enPowerSafe, bool enScreenSaver, uint8_t lum) = 0;
virtual void init(uint8_t type, uint8_t rot, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) = 0;
virtual void config(bool enPowerSave, bool enScreenSaver, uint8_t lum) = 0;
virtual void loop(uint8_t lum) = 0;
virtual void disp(float totalPower, float totalYieldDay, float totalYieldTotal, uint8_t isprod) = 0;
virtual void disp(void) = 0;
protected:
U8G2* mDisplay;
DisplayData *mDisplayData;
uint8_t mType;
bool mEnPowerSafe, mEnScreenSaver;
uint16_t mDispWidth;
uint16_t mDispHeight;
bool mEnPowerSave, mEnScreenSaver;
uint8_t mLuminance;
uint8_t mLoopCnt;
uint32_t* mUtcTs;
uint8_t mLineXOffsets[5] = {};
uint8_t mLineYOffsets[5] = {};
@ -42,4 +47,17 @@ class DisplayMono {
uint8_t mExtra;
uint16_t mTimeout;
char mFmtText[DISP_FMT_TEXT_LEN];};
char mFmtText[DISP_FMT_TEXT_LEN];
// Common initialization function to be called by subclasses
void monoInit(U8G2* display, uint8_t type, DisplayData *displayData) {
mDisplay = display;
mType = type;
mDisplayData = displayData;
mDisplay->begin();
mDisplay->setContrast(mLuminance);
mDisplay->clearBuffer();
mDispWidth = mDisplay->getDisplayWidth();
mDispHeight = mDisplay->getDisplayHeight();
}
};