Files
basic1/display/low_level_display_epaper.h
2026-01-28 20:12:41 -05:00

49 lines
1.6 KiB
C++

#ifndef LOW_LEVEL_DISPLAY_EPAPER_H
#define LOW_LEVEL_DISPLAY_EPAPER_H
#include "low_level_display.h"
// E-paper display configuration structure
struct epaper_config {
void* spi; // SPI instance
int gpio_din; // MOSI pin
int gpio_clk; // Clock pin
int gpio_cs; // Chip select pin
int gpio_dc; // Data/Command pin
int gpio_rst; // Reset pin
int gpio_busy; // Busy pin
};
class LowLevelDisplayEPaper : public LowLevelDisplay {
private:
const epaper_config* config;
int width;
int height;
bool initialized;
uint8_t* framebuffer; // E-paper needs a framebuffer
bool dirty; // Track if display needs refresh
public:
LowLevelDisplayEPaper(const epaper_config* cfg, int w, int h);
~LowLevelDisplayEPaper() override;
// Core display operations - native 1-bit monochrome
bool init() override;
void clear(bool white = true) override;
void draw_pixel(int x, int y, bool white) override;
void draw_buffer(const uint8_t* bit_buffer) override;
void refresh() override; // Actually update the e-paper display
// Display properties
int get_width() const override { return width; }
int get_height() const override { return height; }
DisplayType get_type() const override { return DISPLAY_TYPE_EPAPER; }
bool is_color() const override { return false; } // Most e-paper is monochrome
// E-paper specific
void clear_display();
void sleep(); // Put display in low power mode
};
#endif // LOW_LEVEL_DISPLAY_EPAPER_H