update Display interface and downstream code to add flush callback

Hoping to allow implementation of interface to allow Hardware abstract to setup LVGL
This commit is contained in:
Matthew Colvin 2023-08-13 20:44:27 -05:00 committed by MatthewColvin
parent 40841c8d09
commit 419ac45e98
4 changed files with 29 additions and 16 deletions

View file

@ -1,9 +1,13 @@
#pragma once
#include <cstdint>
#include "lvgl.h"
class DisplayInterface
{
virtual void setup(int backlight_pin, int enable_pin) = 0;
virtual void pushPixel(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint16_t* pixel_values) = 0;
virtual void turnOff() = 0;
virtual void setBrightness(uint8_t brightness) = 0;
public:
virtual void setBrightness(uint8_t brightness) = 0;
virtual void turnOff() = 0;
protected:
virtual void pushPixel(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint16_t* pixel_values) = 0;
virtual void flushDisplay(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) = 0;
};

View file

@ -1,4 +1,5 @@
#include "HardwareRevX.hpp"
#include "display.hpp"
#include "wifihandler.hpp"
#include "driver/ledc.h"
@ -53,7 +54,8 @@ void HardwareRevX::initIO() {
HardwareRevX::HardwareRevX():
HardwareAbstract(
std::make_shared<Battery>(ADC_BAT,CRG_STAT),
wifiHandler::getInstance()
wifiHandler::getInstance(),
Display::getInstance()
){}
HardwareRevX::WakeReason getWakeReason() {

View file

@ -1,17 +1,20 @@
#include "display.hpp"
#include "omoteconfig.h"
Display* Display::getInstance()
std::shared_ptr<Display> Display::mInstance = nullptr;
std::shared_ptr<Display> Display::getInstance()
{
if (instance == nullptr)
if (mInstance == nullptr)
{
instance = new Display();
mInstance = std::shared_ptr<Display>(new Display(LCD_EN, LCD_BL));
}
return instance;
return mInstance;
}
void Display::setup(int backlight_pin, int enable_pin)
Display::Display(int backlight_pin, int enable_pin)
{
this->enable_pin = enable_pin;
this->backlight_pin = backlight_pin;

View file

@ -1,6 +1,7 @@
#pragma once
#include "DisplayInterface.h"
#include <TFT_eSPI.h>
#include <memory>
#include "driver/ledc.h"
/*LEDC Channel to use for the LCD backlight*/
@ -13,19 +14,22 @@
#define DEFAULT_BACKLIGHT_BRIGHTNESS 128
class Display:public DisplayInterface
class Display: public DisplayInterface
{
public:
static Display* getInstance();
static std::shared_ptr<Display> getInstance();
virtual void setup(int backlight_pin, int enable_pin) override;
virtual void pushPixel(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint16_t* pixel_values) override;
virtual void setBrightness(uint8_t brightness) override;
virtual void turnOff() override;
protected:
virtual void flushDisplay(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) {};
virtual void pushPixel(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint16_t* pixel_values) override;
private:
static Display* instance;
static std::shared_ptr<Display> mInstance;
int enable_pin;
int backlight_pin;
Display();
Display(int backlight_pin, int enable_pin);
TFT_eSPI tft;
};