abstracting display, touch and sd
This commit is contained in:
42
display/low_level_display.h
Normal file
42
display/low_level_display.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#ifndef LOW_LEVEL_DISPLAY_H
|
||||
#define LOW_LEVEL_DISPLAY_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
// Display type enumeration
|
||||
typedef enum {
|
||||
DISPLAY_TYPE_ST7796,
|
||||
DISPLAY_TYPE_ST7789,
|
||||
DISPLAY_TYPE_EPAPER
|
||||
} DisplayType;
|
||||
|
||||
// Abstract display interface
|
||||
class LowLevelDisplay {
|
||||
public:
|
||||
virtual ~LowLevelDisplay() {}
|
||||
|
||||
// Core display operations - all work with 1-bit monochrome buffers
|
||||
virtual bool init() = 0;
|
||||
virtual void clear(bool white = true) = 0; // Clear to white or black
|
||||
virtual void draw_pixel(int x, int y, bool white) = 0;
|
||||
virtual void draw_buffer(const uint8_t* bit_buffer) = 0; // 1-bit buffer (width*height/8 bytes)
|
||||
virtual void refresh() = 0; // Update display (converts 1-bit to native format)
|
||||
|
||||
// Display properties
|
||||
virtual int get_width() const = 0;
|
||||
virtual int get_height() const = 0;
|
||||
virtual DisplayType get_type() const = 0;
|
||||
virtual bool is_color() const = 0;
|
||||
|
||||
// Optional: Backlight control (if supported)
|
||||
virtual void set_backlight(bool on) { (void)on; }
|
||||
|
||||
// Optional: Orientation control (not commonly needed for bitmap displays)
|
||||
virtual void set_rotation(uint8_t rotation) { (void)rotation; }
|
||||
|
||||
// Factory method - creates display based on type, using board_config.h for pins
|
||||
static LowLevelDisplay* create(DisplayType type, int width, int height);
|
||||
};
|
||||
|
||||
#endif // LOW_LEVEL_DISPLAY_H
|
||||
Reference in New Issue
Block a user