87 virtual void setCursor(uint8_t row, uint8_t col);
89 virtual size_t write(uint8_t ch) { };
105 virtual void on() = 0;
187 virtual void flush();
207 virtual void flush(uint8_t startAddr, uint8_t length);
256 #if defined(ESP32) && ESP_IDF_VERSION_MAJOR < 5
257 uint8_t _backlightChannel = 0;
315 bool _dotWrite(uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset);
344 virtual void _setDecimal(uint8_t row, uint8_t col,
bool state) { }
351 virtual void _setColon(uint8_t row, uint8_t col,
bool state) { }
380 void _writeRamMasked(uint8_t data, uint8_t address, uint8_t mask = 0xFF);
388 virtual void _writeRam(uint8_t data, uint8_t address) = 0;
397 virtual void _writeRam(uint8_t *data,
size_t length, uint8_t address) = 0;
ModeBias
Bias mode used by LCD controller.
Definition SegLCDLib.h:25
@ MODE_BIAS_13
1/3 bias
Definition SegLCDLib.h:26
@ MODE_BIAS_12
1/2 bias
Definition SegLCDLib.h:27
ModeDrive
Drive mode used by LCD controller.
Definition SegLCDLib.h:15
@ MODE_DRIVE_12
1/2 multiplexing
Definition SegLCDLib.h:17
@ MODE_DRIVE_13
1/3 multiplexing
Definition SegLCDLib.h:18
@ MODE_DRIVE_14
1/4 multiplexing
Definition SegLCDLib.h:19
@ MODE_DRIVE_STATIC
Static drive (1/1 duty)
Definition SegLCDLib.h:16
Abstract base class for LCD segment display drivers.
Definition SegLCDLib.h:36
virtual void command(uint8_t command)=0
Send RAW command to controller.
virtual void _setDecimal(uint8_t row, uint8_t col, bool state)
Virtual method for setting decimal point.
Definition SegLCDLib.h:344
void _writeRamMasked(uint8_t data, uint8_t address, uint8_t mask=0xFF)
Write to display RAM with nibble-aware masking support.
Definition SegLCDLib.cpp:18
static constexpr uint8_t FLAG_PENDING_DOT
Common flag for decimal handling when RAM offset is 0.
Definition SegLCDLib.h:278
virtual ~SegLCDLib()
Virtual destructor to ensure proper cleanup in derived classes.
Definition SegLCDLib.cpp:5
void _setFlag(uint8_t mask)
Set a specific flag bit.
Definition SegLCDLib.cpp:357
virtual void flush()
Flush all buffered changes to the display.
Definition SegLCDLib.cpp:332
uint8_t _cursorCol
Current Column.
Definition SegLCDLib.h:418
void _colonClearIfNotFlagged(uint8_t ch, uint8_t colonCol, uint8_t colonFlag)
Clear colon if its flag is not set.
Definition SegLCDLib.cpp:393
virtual void setBacklight(bool state)
Set backlight state (on/off).
Definition SegLCDLib.cpp:105
uint8_t _get_char_value(char ch)
Helper method to convert a character to its segment representation.
Definition SegLCDLib.cpp:139
uint16_t _get_16char_value(char ch)
Helper method to convert a character to its 16-segment representation.
Definition SegLCDLib.cpp:225
size_t getRamBufferSize() const
Get size of internal RAM buffer in bytes.
Definition SegLCDLib.cpp:328
bool getAutoFlush() const
Get current autoflush state.
Definition SegLCDLib.cpp:320
virtual void _writeRam(uint8_t *data, size_t length, uint8_t address)=0
Low-level method to write a data buffer to display RAM.
virtual size_t write(uint8_t ch)
Definition SegLCDLib.h:89
const uint8_t * getRamBuffer() const
Get pointer to internal RAM buffer (read-only).
Definition SegLCDLib.cpp:324
size_t _ramBufferSize
Size of allocated RAM buffer in bytes.
Definition SegLCDLib.h:361
uint8_t _backlightBrightness
Cached backlight brightness.
Definition SegLCDLib.h:251
virtual void on()=0
Turn the display on.
virtual void _setColon(uint8_t row, uint8_t col, bool state)
Virtual method for setting colon.
Definition SegLCDLib.h:351
bool _dotWrite(uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset)
Write decimal point.
Definition SegLCDLib.cpp:373
virtual void _writeRam(uint8_t data, uint8_t address)=0
Low-level method to write a single byte to display RAM.
void setAutoFlush(bool enable)
Enable or disable autoflush mode.
Definition SegLCDLib.cpp:316
void _dotClearCur(int8_t minCol, int8_t maxCol)
Clear current decimal (overwrite).
Definition SegLCDLib.cpp:387
virtual void off()=0
Turn the display off.
virtual void setCursor(uint8_t row, uint8_t col)
Set cursor on exact digit.
Definition SegLCDLib.cpp:71
void initBacklight(int8_t backlightPin, BacklightMode backlightMode=BACKLIGHT_DIGITAL, bool backlightActiveHigh=true)
Initialize GPIO backlight control.
Definition SegLCDLib.cpp:76
bool _autoFlush
Autoflush mode enabled flag (default: true for LCD API 1.0 compatibility).
Definition SegLCDLib.h:231
int8_t _backlightPin
Backlight GPIO pin (-1 if disabled)
Definition SegLCDLib.h:236
void home()
Set cursor to 0, 0 without clear display.
Definition SegLCDLib.cpp:67
uint8_t _displayFlags
LEDC channel for old ESP32 Arduino Core (2.0.x)
Definition SegLCDLib.h:270
virtual void clear()
Clear all visible segments on the display.
Definition SegLCDLib.cpp:60
BacklightMode
Backlight mode for GPIO control.
Definition SegLCDLib.h:41
@ BACKLIGHT_PWM
PWM brightness control (0-255)
Definition SegLCDLib.h:43
@ BACKLIGHT_DIGITAL
Digital on/off mode.
Definition SegLCDLib.h:42
void _clearAllFlags()
Clear all flags.
Definition SegLCDLib.cpp:369
void _allocateBuffer(size_t size)
Allocate RAM buffer for display data.
Definition SegLCDLib.cpp:12
uint8_t _cursorRow
Current Row.
Definition SegLCDLib.h:413
bool _isFlagSet(uint8_t mask) const
Check if a specific flag bit is set.
Definition SegLCDLib.cpp:365
void _clearFlag(uint8_t mask)
Clear a specific flag bit.
Definition SegLCDLib.cpp:361
virtual void init()=0
Logical display sections that can be targeted by higher-level rendering logic.
bool _backlightActiveHigh
Backlight active high flag.
Definition SegLCDLib.h:246
uint8_t * _ramBuffer
Dynamic RAM buffer for display data (allocated by derived classes).
Definition SegLCDLib.h:356
BacklightMode _backlightMode
Backlight mode (DIGITAL or PWM)
Definition SegLCDLib.h:241