MeshCore/src/helpers/ui/E213Display.h

48 lines
1.3 KiB
C
Raw Normal View History

2025-06-27 22:57:49 -07:00
#pragma once
2025-06-27 23:30:52 -07:00
#include "DisplayDriver.h"
2025-06-27 22:57:49 -07:00
#include <SPI.h>
#include <Wire.h>
#include <heltec-eink-modules.h>
#include <CRC32.h>
#include <helpers/RefCountedDigitalPin.h>
2025-06-27 22:57:49 -07:00
// Display driver for E213 e-ink display
class E213Display : public DisplayDriver {
BaseDisplay* display=NULL;
2025-06-27 22:57:49 -07:00
bool _init = false;
bool _isOn = false;
RefCountedDigitalPin* _periph_power;
CRC32 display_crc;
uint32_t last_display_crc_value = 0;
2025-06-27 22:57:49 -07:00
public:
E213Display(RefCountedDigitalPin* periph_power = NULL) : DisplayDriver(250, 122), _periph_power(periph_power) {}
~E213Display(){
if(display!=NULL) {
delete display;
}
}
2025-06-27 22:57:49 -07:00
bool begin();
bool isOn() override { return _isOn; }
void turnOn() override;
void turnOff() override;
void clear() override;
void startFrame(Color bkg = DARK) override;
void setTextSize(int sz) override;
void setColor(Color c) override;
void setCursor(int x, int y) override;
2025-06-27 23:30:52 -07:00
void print(const char *str) override;
2025-06-27 22:57:49 -07:00
void fillRect(int x, int y, int w, int h) override;
void drawRect(int x, int y, int w, int h) override;
2025-06-27 23:30:52 -07:00
void drawXbm(int x, int y, const uint8_t *bits, int w, int h) override;
uint16_t getTextWidth(const char *str) override;
2025-06-27 22:57:49 -07:00
void endFrame() override;
2025-06-27 23:30:52 -07:00
2025-06-27 22:57:49 -07:00
private:
BaseDisplay* detectEInk();
2025-06-27 22:57:49 -07:00
void powerOn();
void powerOff();
};