SegLCDLib
Loading...
Searching...
No Matches
SegLCD_PCF85176_2Row4DigSigBatPwr Class Reference

#include <SegLCD_PCF85176_2Row4DigSigBatPwr.h>

Inheritance diagram for SegLCD_PCF85176_2Row4DigSigBatPwr:
SegDriver_PCF85176 SegDriver_PCx85 SegLCDLib

Public Member Functions

 SegLCD_PCF85176_2Row4DigSigBatPwr (SegTransportI2C &transport, uint8_t address=DEFAULT_PCF85176_I2C_ADDRESS, uint8_t subaddress=DEFAULT_SUBADDRESS)
 
void init () override
 Logical display sections that can be targeted by higher-level rendering logic.
 
void setBatteryLevel (uint8_t value)
 
void setSignalLevel (uint8_t value)
 
void setPowerSymbol (bool state, uint8_t index=0)
 
size_t write (uint8_t ch) override
 
- Public Member Functions inherited from SegDriver_PCF85176
 SegDriver_PCF85176 (SegTransportI2C &transport, uint8_t address=DEFAULT_PCF85176_I2C_ADDRESS, uint8_t subaddress=DEFAULT_SUBADDRESS)
 Constructor for PCF85176 segment driver.
 
- Public Member Functions inherited from SegDriver_PCx85
 SegDriver_PCx85 (SegTransportI2C &transport, uint8_t address, uint8_t subaddress)
 Constructor for PCx85 segment driver.
 
void bankSelect (uint8_t input, uint8_t output)
 Select bank for input and output.
 
void blink (BlinkFrequency blink=BLINK_FREQUENCY_OFF, BlinkMode mode=BLINK_MODE_NORMAL)
 Set blink frequency and mode.
 
void on () override
 Turn the display on.
 
void off () override
 Turn the display off.
 
void command (uint8_t) override
 Send RAW command to controller.
 
void flush (uint8_t startAddr, uint8_t length) override
 Flush specific range of buffered changes to the display.
 
virtual void flush ()
 Flush all buffered changes to the display.
 
virtual void flush (uint8_t startAddr, uint8_t length)
 Flush specific range of buffered changes to the display.
 
- Public Member Functions inherited from SegLCDLib
virtual ~SegLCDLib ()
 Virtual destructor to ensure proper cleanup in derived classes.
 
virtual void clear ()
 Clear all visible segments on the display.
 
void home ()
 Set cursor to 0, 0 without clear display.
 
virtual void setCursor (uint8_t row, uint8_t col)
 Set cursor on exact digit.
 
void initBacklight (int8_t backlightPin, BacklightMode backlightMode=BACKLIGHT_DIGITAL, bool backlightActiveHigh=true)
 Initialize GPIO backlight control.
 
virtual void setBacklight (bool state)
 Set backlight state (on/off).
 
virtual void setBacklight (int brightness)
 Set backlight brightness (0-255).
 
void setAutoFlush (bool enable)
 Enable or disable autoflush mode.
 
bool getAutoFlush () const
 Get current autoflush state.
 
const uint8_t * getRamBuffer () const
 Get pointer to internal RAM buffer (read-only).
 
size_t getRamBufferSize () const
 Get size of internal RAM buffer in bytes.
 

Private Member Functions

void _setDecimal (uint8_t row, uint8_t col, bool state) override
 Virtual method for setting decimal point.
 
bool _handleDotNoPrevClear (uint8_t ch)
 
uint8_t _mapSegmentsRow1 (uint8_t val)
 
uint8_t _mapSegmentsRow2 (uint8_t val)
 

Static Private Attributes

static constexpr uint8_t ADDR_POWER = 6
 
static constexpr uint8_t ADDR_SIGNAL = 14
 
static constexpr uint8_t ADDR_BATT = 16
 
static constexpr uint8_t ADDR_1_SEGS = 0
 
static constexpr uint8_t ADDR_2_SEGS = 8
 
static constexpr uint8_t RAM_SIZE = 9
 
static constexpr uint8_t OFFSET_POWER = ADDR_POWER / 2
 
static constexpr uint8_t OFFSET_SIGNAL = ADDR_SIGNAL / 2
 
static constexpr uint8_t OFFSET_BATT = ADDR_BATT / 2
 
static constexpr uint8_t OFFSET_ROW1 = ADDR_1_SEGS / 2
 
static constexpr uint8_t OFFSET_ROW2 = ADDR_2_SEGS / 2
 
static constexpr uint8_t ROW1 = 0
 
static constexpr uint8_t ROW2 = 1
 
static constexpr uint8_t DECIMAL_POINT_BIT_ROW1 = 0x01
 
static constexpr uint8_t DECIMAL_POINT_BIT_ROW2 = 0x08
 
static constexpr uint8_t DECIMAL_MIN_ROW = 0
 
static constexpr uint8_t DECIMAL_MAX_ROW = 1
 
static constexpr uint8_t DECIMAL_MIN_COL = 0
 
static constexpr uint8_t DECIMAL_MAX_COL = 3
 
static constexpr int8_t DECIMAL_COL_OFFSET = -1
 
static constexpr uint8_t MAX_BATTERY_LEVEL = 4
 
static constexpr uint8_t BATTERY_MASK = 0xF0
 
static constexpr uint8_t BATTERY_LEVEL_SEG [MAX_BATTERY_LEVEL] = {0x80, 0x20, 0x40, 0x10}
 
static constexpr uint8_t MAX_SIGNAL_LEVEL = 1
 
static constexpr uint8_t SIGNAL_MASK = DECIMAL_POINT_BIT_ROW2
 
static constexpr uint8_t SIGNAL_LEVEL_BITS [MAX_SIGNAL_LEVEL] = {DECIMAL_POINT_BIT_ROW2}
 
static constexpr uint8_t POWER_BIT = DECIMAL_POINT_BIT_ROW1
 

Additional Inherited Members

- Public Types inherited from SegDriver_PCx85
enum  ModeStatus { MODE_STATUS_BLANK = 0 , MODE_STATUS_ENABLED = 1 }
 Enable/disable display. More...
 
enum  BlinkFrequency { BLINK_FREQUENCY_OFF = 0 , BLINK_FREQUENCY_1 = 1 , BLINK_FREQUENCY_2 = 2 , BLINK_FREQUENCY_3 = 3 }
 Set blink frequency. More...
 
enum  BlinkMode { BLINK_MODE_NORMAL = 0 , BLINK_MODE_ALTRAM = 1 }
 Set blink mode. More...
 
- Public Types inherited from SegLCDLib
enum  BacklightMode { BACKLIGHT_DIGITAL , BACKLIGHT_PWM }
 Backlight mode for GPIO control. More...
 
- Protected Member Functions inherited from SegDriver_PCx85
void _setMode (ModeStatus status, ModeDrive drive=MODE_DRIVE_14, ModeBias bias=MODE_BIAS_13)
 Set the mode of the display.
 
void _writeRam (uint8_t *data, size_t length, uint8_t address=0) override
 Low-level method to write a data buffer to display RAM.
 
void _writeRam (uint8_t data, uint8_t address=0)
 Low-level method to write a single byte to display RAM.
 
virtual void _writeRam (uint8_t *data, size_t length, uint8_t address)=0
 Low-level method to write a data buffer to display RAM.
 
- Protected Member Functions inherited from SegLCDLib
void _setFlag (uint8_t mask)
 Set a specific flag bit.
 
void _clearFlag (uint8_t mask)
 Clear a specific flag bit.
 
bool _isFlagSet (uint8_t mask) const
 Check if a specific flag bit is set.
 
void _clearAllFlags ()
 Clear all flags.
 
bool _dotWrite (uint8_t ch, int8_t minCol, int8_t maxCol, int8_t ramOffset)
 Write decimal point.
 
void _dotClearCur (int8_t minCol, int8_t maxCol)
 Clear current decimal (overwrite).
 
void _colonClearIfNotFlagged (uint8_t ch, uint8_t colonCol, uint8_t colonFlag)
 Clear colon if its flag is not set.
 
virtual void _setColon (uint8_t, uint8_t, bool)
 Virtual method for setting colon.
 
void _allocateBuffer (size_t size)
 Allocate RAM buffer for display data.
 
void _writeRamMasked (uint8_t data, uint8_t address, uint8_t mask=0xFF)
 Write to display RAM with nibble-aware masking support.
 
void _writeRam (uint8_t data, uint8_t address=0)
 Low-level method to write a single byte to display RAM.
 
uint8_t _get_char_value (char ch)
 Helper method to convert a character to its segment representation.
 
uint16_t _get_16char_value (char ch)
 Helper method to convert a character to its 16-segment representation.
 
- Protected Attributes inherited from SegLCDLib
bool _autoFlush = true
 Autoflush mode enabled flag (default: true for LCD API 1.0 compatibility).
 
int8_t _backlightPin = -1
 Backlight GPIO pin (-1 if disabled)
 
BacklightMode _backlightMode = BACKLIGHT_DIGITAL
 Backlight mode (DIGITAL or PWM)
 
bool _backlightActiveHigh = true
 Backlight active high flag.
 
uint8_t _backlightBrightness = 0
 Cached backlight brightness.
 
uint8_t _displayFlags = 0
 LEDC channel for old ESP32 Arduino Core (2.0.x)
 
uint8_t * _ramBuffer = nullptr
 Dynamic RAM buffer for display data (allocated by derived classes).
 
size_t _ramBufferSize = 0
 Size of allocated RAM buffer in bytes.
 
uint8_t _cursorRow = 0
 Current Row.
 
uint8_t _cursorCol = 0
 Current Column.
 
- Static Protected Attributes inherited from SegDriver_PCx85
static constexpr uint8_t DEFAULT_PCF85176_I2C_ADDRESS = 0x38
 
static constexpr uint8_t DEFAULT_SUBADDRESS = 0x00
 
static constexpr uint8_t MAX_ADDRESS = 39
 Last valid start HW nibble address for byte write on a single PCx85 device.
 
- Static Protected Attributes inherited from SegLCDLib
static constexpr uint8_t FLAG_PENDING_DOT = 0x80
 Common flag for decimal handling when RAM offset is 0.
 

Constructor & Destructor Documentation

◆ SegLCD_PCF85176_2Row4DigSigBatPwr()

SegLCD_PCF85176_2Row4DigSigBatPwr::SegLCD_PCF85176_2Row4DigSigBatPwr ( SegTransportI2C transport,
uint8_t  address = DEFAULT_PCF85176_I2C_ADDRESS,
uint8_t  subaddress = DEFAULT_SUBADDRESS 
)

Member Function Documentation

◆ _handleDotNoPrevClear()

bool SegLCD_PCF85176_2Row4DigSigBatPwr::_handleDotNoPrevClear ( uint8_t  ch)
private

◆ _mapSegmentsRow1()

uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::_mapSegmentsRow1 ( uint8_t  val)
private

◆ _mapSegmentsRow2()

uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::_mapSegmentsRow2 ( uint8_t  val)
private

◆ _setDecimal()

void SegLCD_PCF85176_2Row4DigSigBatPwr::_setDecimal ( uint8_t  ,
uint8_t  ,
bool   
)
overrideprivatevirtual

Virtual method for setting decimal point.

Each LCD has its own implementation with HW specifics. Default implementation is empty (no-op).

Reimplemented from SegLCDLib.

◆ init()

void SegLCD_PCF85176_2Row4DigSigBatPwr::init ( )
overridevirtual

Logical display sections that can be targeted by higher-level rendering logic.

Initialize the display driver, clear display and set position to 0,0.

Reimplemented from SegDriver_PCx85.

◆ setBatteryLevel()

void SegLCD_PCF85176_2Row4DigSigBatPwr::setBatteryLevel ( uint8_t  value)

◆ setPowerSymbol()

void SegLCD_PCF85176_2Row4DigSigBatPwr::setPowerSymbol ( bool  state,
uint8_t  index = 0 
)

◆ setSignalLevel()

void SegLCD_PCF85176_2Row4DigSigBatPwr::setSignalLevel ( uint8_t  value)

◆ write()

size_t SegLCD_PCF85176_2Row4DigSigBatPwr::write ( uint8_t  ch)
overridevirtual

Reimplemented from SegLCDLib.

Field Documentation

◆ ADDR_1_SEGS

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ADDR_1_SEGS = 0
staticconstexprprivate

◆ ADDR_2_SEGS

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ADDR_2_SEGS = 8
staticconstexprprivate

◆ ADDR_BATT

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ADDR_BATT = 16
staticconstexprprivate

◆ ADDR_POWER

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ADDR_POWER = 6
staticconstexprprivate

◆ ADDR_SIGNAL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ADDR_SIGNAL = 14
staticconstexprprivate

◆ BATTERY_LEVEL_SEG

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::BATTERY_LEVEL_SEG[MAX_BATTERY_LEVEL] = {0x80, 0x20, 0x40, 0x10}
staticconstexprprivate

◆ BATTERY_MASK

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::BATTERY_MASK = 0xF0
staticconstexprprivate

◆ DECIMAL_COL_OFFSET

constexpr int8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_COL_OFFSET = -1
staticconstexprprivate

◆ DECIMAL_MAX_COL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_MAX_COL = 3
staticconstexprprivate

◆ DECIMAL_MAX_ROW

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_MAX_ROW = 1
staticconstexprprivate

◆ DECIMAL_MIN_COL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_MIN_COL = 0
staticconstexprprivate

◆ DECIMAL_MIN_ROW

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_MIN_ROW = 0
staticconstexprprivate

◆ DECIMAL_POINT_BIT_ROW1

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_POINT_BIT_ROW1 = 0x01
staticconstexprprivate

◆ DECIMAL_POINT_BIT_ROW2

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::DECIMAL_POINT_BIT_ROW2 = 0x08
staticconstexprprivate

◆ MAX_BATTERY_LEVEL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::MAX_BATTERY_LEVEL = 4
staticconstexprprivate

◆ MAX_SIGNAL_LEVEL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::MAX_SIGNAL_LEVEL = 1
staticconstexprprivate

◆ OFFSET_BATT

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::OFFSET_BATT = ADDR_BATT / 2
staticconstexprprivate

◆ OFFSET_POWER

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::OFFSET_POWER = ADDR_POWER / 2
staticconstexprprivate

◆ OFFSET_ROW1

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::OFFSET_ROW1 = ADDR_1_SEGS / 2
staticconstexprprivate

◆ OFFSET_ROW2

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::OFFSET_ROW2 = ADDR_2_SEGS / 2
staticconstexprprivate

◆ OFFSET_SIGNAL

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::OFFSET_SIGNAL = ADDR_SIGNAL / 2
staticconstexprprivate

◆ POWER_BIT

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::POWER_BIT = DECIMAL_POINT_BIT_ROW1
staticconstexprprivate

◆ RAM_SIZE

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::RAM_SIZE = 9
staticconstexprprivate

◆ ROW1

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ROW1 = 0
staticconstexprprivate

◆ ROW2

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::ROW2 = 1
staticconstexprprivate

◆ SIGNAL_LEVEL_BITS

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::SIGNAL_LEVEL_BITS[MAX_SIGNAL_LEVEL] = {DECIMAL_POINT_BIT_ROW2}
staticconstexprprivate

◆ SIGNAL_MASK

constexpr uint8_t SegLCD_PCF85176_2Row4DigSigBatPwr::SIGNAL_MASK = DECIMAL_POINT_BIT_ROW2
staticconstexprprivate

The documentation for this class was generated from the following files: