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:
parent
40841c8d09
commit
419ac45e98
4 changed files with 29 additions and 16 deletions
|
@ -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;
|
||||
};
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
Loading…
Add table
Reference in a new issue