111 virtual void setCursor(uint8_t row, uint8_t col);
113 virtual size_t write(uint8_t) {
return 0; };
124 size_t write(
const char *str);
133 size_t write(
const char *buffer,
size_t size);
151 virtual void on() = 0;
232 virtual void flush();
252 virtual void flush(uint8_t startAddr, uint8_t length);
348 bool _dotWrite(uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset);
413 void _writeRamMasked(uint8_t data, uint8_t address, uint8_t mask = 0xFF);
421 void _writeRam(uint8_t data, uint8_t address = 0);
430 virtual void _writeRam(uint8_t *data,
size_t length, uint8_t address) = 0;
ModeBias
Bias mode used by LCD controller.
Definition SegLCDLib.h:31
@ MODE_BIAS_13
1/3 bias
Definition SegLCDLib.h:32
@ MODE_BIAS_12
1/2 bias
Definition SegLCDLib.h:33
ModeDrive
Drive mode used by LCD controller.
Definition SegLCDLib.h:21
@ MODE_DRIVE_12
1/2 multiplexing
Definition SegLCDLib.h:23
@ MODE_DRIVE_13
1/3 multiplexing
Definition SegLCDLib.h:24
@ MODE_DRIVE_14
1/4 multiplexing
Definition SegLCDLib.h:25
@ MODE_DRIVE_STATIC
Static drive (1/1 duty)
Definition SegLCDLib.h:22
Abstract backlight control.
Definition SegBacklight.h:11
Abstract base class for LCD segment display drivers.
Definition SegLCDLib.h:45
SegLCDLib & operator=(const SegLCDLib &)=delete
virtual void command(uint8_t command)=0
Send RAW command to controller.
SegBacklight * _backlight
Backlight implementation (nullptr if disabled)
Definition SegLCDLib.h:281
void _writeRamMasked(uint8_t data, uint8_t address, uint8_t mask=0xFF)
Write to display RAM with nibble-aware masking support.
Definition SegLCDLib.cpp:38
void initBacklight(SegBacklight *backlight, BacklightMode backlightMode=BACKLIGHT_DIGITAL)
Initialize backlight control.
Definition SegLCDLib.cpp:97
static constexpr uint8_t FLAG_PENDING_DOT
Common flag for decimal handling when RAM offset is 0.
Definition SegLCDLib.h:311
virtual ~SegLCDLib()
Virtual destructor to ensure proper cleanup in derived classes.
Definition SegLCDLib.cpp:8
void _setFlag(uint8_t mask)
Set a specific flag bit.
Definition SegLCDLib.cpp:347
virtual void flush()
Flush all buffered changes to the display.
Definition SegLCDLib.cpp:322
virtual void _setColon(uint8_t, uint8_t, bool)
Virtual method for setting colon.
Definition SegLCDLib.h:384
uint8_t _cursorCol
Current Column.
Definition SegLCDLib.h:451
void _colonClearIfNotFlagged(uint8_t ch, uint8_t colonCol, uint8_t colonFlag)
Clear colon if its flag is not set.
Definition SegLCDLib.cpp:383
virtual void setBacklight(bool state)
Set backlight state (on/off).
Definition SegLCDLib.cpp:109
SegLCDLib()=default
Default constructor.
uint8_t _get_char_value(char ch)
Helper method to convert a character to its segment representation.
Definition SegLCDLib.cpp:129
uint16_t _get_16char_value(char ch)
Helper method to convert a character to its 16-segment representation.
Definition SegLCDLib.cpp:215
void _writeRam(uint8_t data, uint8_t address=0)
Low-level method to write a single byte to display RAM.
Definition SegLCDLib.cpp:389
virtual void init()
Logical display sections that can be targeted by higher-level rendering logic.
Definition SegLCDLib.cpp:21
size_t getRamBufferSize() const
Get size of internal RAM buffer in bytes.
Definition SegLCDLib.cpp:318
bool getAutoFlush() const
Get current autoflush state.
Definition SegLCDLib.cpp:310
virtual void _writeRam(uint8_t *data, size_t length, uint8_t address)=0
Low-level method to write a data buffer to display RAM.
const uint8_t * getRamBuffer() const
Get pointer to internal RAM buffer (read-only).
Definition SegLCDLib.cpp:314
size_t _ramBufferSize
Size of allocated RAM buffer in bytes.
Definition SegLCDLib.h:394
uint8_t _backlightBrightness
Cached backlight brightness.
Definition SegLCDLib.h:291
virtual void on()=0
Turn the display on.
bool _dotWrite(uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset)
Write decimal point.
Definition SegLCDLib.cpp:363
SegLCDLib(const SegLCDLib &)=delete
Disable copying to keep the RAM buffer uniquely owned.
virtual void _setDecimal(uint8_t, uint8_t, bool)
Virtual method for setting decimal point.
Definition SegLCDLib.h:377
void setAutoFlush(bool enable)
Enable or disable autoflush mode.
Definition SegLCDLib.cpp:306
void _dotClearCur(int8_t minCol, int8_t maxCol)
Clear current decimal (overwrite).
Definition SegLCDLib.cpp:377
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:92
virtual size_t write(uint8_t)
Definition SegLCDLib.h:113
bool _autoFlush
Autoflush mode enabled flag (default: true for LCD API 1.0 compatibility).
Definition SegLCDLib.h:276
void home()
Set cursor to 0, 0 without clear display.
Definition SegLCDLib.cpp:88
uint8_t _displayFlags
Generic flag storage for display-specific state tracking.
Definition SegLCDLib.h:303
virtual void clear()
Clear all visible segments on the display.
Definition SegLCDLib.cpp:80
BacklightMode
Backlight mode for GPIO control.
Definition SegLCDLib.h:51
@ BACKLIGHT_PWM
PWM brightness control (0-255)
Definition SegLCDLib.h:53
@ BACKLIGHT_DIGITAL
Digital on/off mode.
Definition SegLCDLib.h:52
void _clearAllFlags()
Clear all flags.
Definition SegLCDLib.cpp:359
void _allocateBuffer(size_t size)
Allocate RAM buffer for display data.
Definition SegLCDLib.cpp:15
uint8_t _cursorRow
Current Row.
Definition SegLCDLib.h:446
bool _isFlagSet(uint8_t mask) const
Check if a specific flag bit is set.
Definition SegLCDLib.cpp:355
void _clearFlag(uint8_t mask)
Clear a specific flag bit.
Definition SegLCDLib.cpp:351
uint8_t * _ramBuffer
Dynamic RAM buffer for display data (allocated by derived classes).
Definition SegLCDLib.h:389
BacklightMode _backlightMode
Backlight mode (DIGITAL or PWM)
Definition SegLCDLib.h:286