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
|
#pragma once
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include "lvgl.h"
|
||||||
class DisplayInterface
|
class DisplayInterface
|
||||||
{
|
{
|
||||||
virtual void setup(int backlight_pin, int enable_pin) = 0;
|
public:
|
||||||
virtual void pushPixel(uint32_t x, uint32_t y, uint32_t w, uint32_t h, uint16_t* pixel_values) = 0;
|
virtual void setBrightness(uint8_t brightness) = 0;
|
||||||
virtual void turnOff() = 0;
|
virtual void turnOff() = 0;
|
||||||
virtual void setBrightness(uint8_t brightness) = 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 "HardwareRevX.hpp"
|
||||||
|
#include "display.hpp"
|
||||||
#include "wifihandler.hpp"
|
#include "wifihandler.hpp"
|
||||||
#include "driver/ledc.h"
|
#include "driver/ledc.h"
|
||||||
|
|
||||||
|
@ -53,7 +54,8 @@ void HardwareRevX::initIO() {
|
||||||
HardwareRevX::HardwareRevX():
|
HardwareRevX::HardwareRevX():
|
||||||
HardwareAbstract(
|
HardwareAbstract(
|
||||||
std::make_shared<Battery>(ADC_BAT,CRG_STAT),
|
std::make_shared<Battery>(ADC_BAT,CRG_STAT),
|
||||||
wifiHandler::getInstance()
|
wifiHandler::getInstance(),
|
||||||
|
Display::getInstance()
|
||||||
){}
|
){}
|
||||||
|
|
||||||
HardwareRevX::WakeReason getWakeReason() {
|
HardwareRevX::WakeReason getWakeReason() {
|
||||||
|
|
|
@ -1,17 +1,20 @@
|
||||||
|
|
||||||
#include "display.hpp"
|
#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->enable_pin = enable_pin;
|
||||||
this->backlight_pin = backlight_pin;
|
this->backlight_pin = backlight_pin;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include "DisplayInterface.h"
|
#include "DisplayInterface.h"
|
||||||
#include <TFT_eSPI.h>
|
#include <TFT_eSPI.h>
|
||||||
|
#include <memory>
|
||||||
#include "driver/ledc.h"
|
#include "driver/ledc.h"
|
||||||
|
|
||||||
/*LEDC Channel to use for the LCD backlight*/
|
/*LEDC Channel to use for the LCD backlight*/
|
||||||
|
@ -13,19 +14,22 @@
|
||||||
#define DEFAULT_BACKLIGHT_BRIGHTNESS 128
|
#define DEFAULT_BACKLIGHT_BRIGHTNESS 128
|
||||||
|
|
||||||
|
|
||||||
class Display:public DisplayInterface
|
class Display: public DisplayInterface
|
||||||
{
|
{
|
||||||
public:
|
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 setBrightness(uint8_t brightness) override;
|
||||||
virtual void turnOff() 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:
|
private:
|
||||||
static Display* instance;
|
static std::shared_ptr<Display> mInstance;
|
||||||
int enable_pin;
|
int enable_pin;
|
||||||
int backlight_pin;
|
int backlight_pin;
|
||||||
Display();
|
Display(int backlight_pin, int enable_pin);
|
||||||
TFT_eSPI tft;
|
TFT_eSPI tft;
|
||||||
};
|
};
|
Loading…
Add table
Reference in a new issue