SegLCDLib
Loading...
Searching...
No Matches
SegLCD_PCF85176_2Row4DigSigBatPwr.h
Go to the documentation of this file.
1#ifndef SEGLCD_PCx85_2Row4DigSigBatPwr_H
2#define SEGLCD_PCx85_2Row4DigSigBatPwr_H
3
4#include <SegDriver_PCx85.h>
5
13 public:
15 void init() override;
16 void setBatteryLevel(uint8_t value);
17 void setSignalLevel(uint8_t value);
18 void setPowerSymbol(bool state, uint8_t index = 0);
19 size_t write(uint8_t ch) override;
20
21 private:
22 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
23 bool _handleDotNoPrevClear(uint8_t ch);
24 static constexpr uint8_t ADDR_POWER = 6;
25 static constexpr uint8_t ADDR_SIGNAL = 14;
26 static constexpr uint8_t ADDR_BATT = 16;
27 static constexpr uint8_t ADDR_1_SEGS = 0;
28 static constexpr uint8_t ADDR_2_SEGS = 8;
29
30 static constexpr uint8_t RAM_SIZE = 9;
31
32 // RAM layout (matches _ramBuffer allocation):
33 static constexpr uint8_t OFFSET_POWER = ADDR_POWER / 2;
34 static constexpr uint8_t OFFSET_SIGNAL = ADDR_SIGNAL / 2;
35 static constexpr uint8_t OFFSET_BATT = ADDR_BATT / 2;
36 static constexpr uint8_t OFFSET_ROW1 = ADDR_1_SEGS / 2;
37 static constexpr uint8_t OFFSET_ROW2 = ADDR_2_SEGS / 2;
38
39 static constexpr uint8_t ROW1 = 0;
40 static constexpr uint8_t ROW2 = 1;
41
42 static constexpr uint8_t DECIMAL_POINT_BIT_ROW1 = 0x01;
43 static constexpr uint8_t DECIMAL_POINT_BIT_ROW2 = 0x08;
44 static constexpr uint8_t DECIMAL_MIN_ROW = 0;
45 static constexpr uint8_t DECIMAL_MAX_ROW = 1;
46 static constexpr uint8_t DECIMAL_MIN_COL = 0;
47 static constexpr uint8_t DECIMAL_MAX_COL = 3;
48 static constexpr int8_t DECIMAL_COL_OFFSET = -1;
49
50 // Signal/Battery level constants
51 static constexpr uint8_t MAX_BATTERY_LEVEL = 4;
52 static constexpr uint8_t BATTERY_MASK = 0xF0;
53 static constexpr uint8_t BATTERY_LEVEL_SEG[MAX_BATTERY_LEVEL] = {0x80, 0x20, 0x40, 0x10};
54
55 static constexpr uint8_t MAX_SIGNAL_LEVEL = 1;
56 static constexpr uint8_t SIGNAL_MASK = DECIMAL_POINT_BIT_ROW2;
58
59 static constexpr uint8_t POWER_BIT = DECIMAL_POINT_BIT_ROW1;
60
61 uint8_t _mapSegmentsRow1(uint8_t val);
62 uint8_t _mapSegmentsRow2(uint8_t val);
63};
64#endif
Implementation of the PCF85176 controllers.
Definition SegDriver_PCx85.h:141
static constexpr uint8_t DEFAULT_PCF85176_I2C_ADDRESS
Definition SegDriver_PCx85.h:23
static constexpr uint8_t DEFAULT_SUBADDRESS
Definition SegDriver_PCx85.h:24
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:12
static constexpr uint8_t ADDR_SIGNAL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:25
static constexpr uint8_t ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:40
static constexpr uint8_t DECIMAL_MAX_ROW
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:45
static constexpr uint8_t OFFSET_POWER
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:33
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:52
static constexpr uint8_t SIGNAL_LEVEL_BITS[MAX_SIGNAL_LEVEL]
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:57
static constexpr uint8_t DECIMAL_MAX_COL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:47
static constexpr uint8_t SIGNAL_MASK
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:56
static constexpr uint8_t ADDR_POWER
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:24
uint8_t _mapSegmentsRow1(uint8_t val)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:148
static constexpr uint8_t OFFSET_ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:37
static constexpr uint8_t DECIMAL_POINT_BIT_ROW1
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:42
static constexpr uint8_t DECIMAL_MIN_COL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:46
void setSignalLevel(uint8_t value)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:32
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:69
static constexpr uint8_t ADDR_2_SEGS
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:28
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:51
static constexpr uint8_t OFFSET_SIGNAL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:34
static constexpr uint8_t OFFSET_BATT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:35
size_t write(uint8_t ch) override
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:106
static constexpr uint8_t RAM_SIZE
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:30
void init() override
Logical display sections that can be targeted by higher-level rendering logic.
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:8
static constexpr uint8_t ROW1
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:39
static constexpr uint8_t BATTERY_LEVEL_SEG[MAX_BATTERY_LEVEL]
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:53
void setPowerSymbol(bool state, uint8_t index=0)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:45
static constexpr uint8_t OFFSET_ROW1
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:36
void setBatteryLevel(uint8_t value)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:13
uint8_t _mapSegmentsRow2(uint8_t val)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:162
static constexpr uint8_t DECIMAL_MIN_ROW
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:44
static constexpr uint8_t ADDR_1_SEGS
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:27
static constexpr uint8_t DECIMAL_POINT_BIT_ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:43
static constexpr uint8_t MAX_SIGNAL_LEVEL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:55
static constexpr uint8_t ADDR_BATT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:26
bool _handleDotNoPrevClear(uint8_t ch)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:56
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:48
static constexpr uint8_t POWER_BIT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:59
Abstract I2C transport.
Definition SegTransport.h:65