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 <Wire.h>
5#include <SegDriver_PCx85.h>
6
14 public:
15 SegLCD_PCF85176_2Row4DigSigBatPwr(TwoWire& i2c, uint8_t address = DEFAULT_PCF85176_I2C_ADDRESS, uint8_t subaddress = DEFAULT_SUBADDRESS);
16 void init() override;
17 void setBatteryLevel(uint8_t value);
18 void setSignalLevel(uint8_t value);
19 void setPowerSymbol(bool state, uint8_t index = 0);
20 size_t write(uint8_t ch) override;
21
22 private:
23 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
24 bool _handleDotNoPrevClear(uint8_t ch);
25 static constexpr uint8_t ADDR_POWER = 6;
26 static constexpr uint8_t ADDR_SIGNAL = 14;
27 static constexpr uint8_t ADDR_BATT = 16;
28 static constexpr uint8_t ADDR_1_SEGS = 0;
29 static constexpr uint8_t ADDR_2_SEGS = 8;
30
31 static constexpr uint8_t RAM_SIZE = 9;
32
33 // RAM layout (matches _ramBuffer allocation):
34 static constexpr uint8_t OFFSET_POWER = ADDR_POWER / 2;
35 static constexpr uint8_t OFFSET_SIGNAL = ADDR_SIGNAL / 2;
36 static constexpr uint8_t OFFSET_BATT = ADDR_BATT / 2;
37 static constexpr uint8_t OFFSET_ROW1 = ADDR_1_SEGS / 2;
38 static constexpr uint8_t OFFSET_ROW2 = ADDR_2_SEGS / 2;
39
40 static constexpr uint8_t ROW1 = 0;
41 static constexpr uint8_t ROW2 = 1;
42
43 static constexpr uint8_t DECIMAL_POINT_BIT_ROW1 = 0x01;
44 static constexpr uint8_t DECIMAL_POINT_BIT_ROW2 = 0x08;
45 static constexpr uint8_t DECIMAL_MIN_ROW = 0;
46 static constexpr uint8_t DECIMAL_MAX_ROW = 1;
47 static constexpr uint8_t DECIMAL_MIN_COL = 0;
48 static constexpr uint8_t DECIMAL_MAX_COL = 3;
49 static constexpr int8_t DECIMAL_COL_OFFSET = -1;
50
51 // Signal/Battery level constants
52 static constexpr uint8_t MAX_BATTERY_LEVEL = 4;
53 static constexpr uint8_t BATTERY_MASK = 0xF0;
54 static constexpr uint8_t BATTERY_LEVEL_SEG[MAX_BATTERY_LEVEL] = {0x80, 0x20, 0x40, 0x10};
55
56 static constexpr uint8_t MAX_SIGNAL_LEVEL = 1;
57 static constexpr uint8_t SIGNAL_MASK = DECIMAL_POINT_BIT_ROW2;
59
60 static constexpr uint8_t POWER_BIT = DECIMAL_POINT_BIT_ROW1;
61
62 uint8_t _mapSegmentsRow1(uint8_t val);
63 uint8_t _mapSegmentsRow2(uint8_t val);
64};
65#endif
Implementation of the PCF85176 controllers.
Definition SegDriver_PCx85.h:144
static constexpr uint8_t DEFAULT_PCF85176_I2C_ADDRESS
Definition SegDriver_PCx85.h:26
static constexpr uint8_t DEFAULT_SUBADDRESS
Definition SegDriver_PCx85.h:27
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:13
static constexpr uint8_t ADDR_SIGNAL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:26
static constexpr uint8_t ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:41
static constexpr uint8_t DECIMAL_MAX_ROW
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:46
static constexpr uint8_t OFFSET_POWER
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:34
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:53
static constexpr uint8_t SIGNAL_LEVEL_BITS[MAX_SIGNAL_LEVEL]
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:58
static constexpr uint8_t DECIMAL_MAX_COL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:48
static constexpr uint8_t SIGNAL_MASK
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:57
static constexpr uint8_t ADDR_POWER
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:25
uint8_t _mapSegmentsRow1(uint8_t val)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:148
static constexpr uint8_t OFFSET_ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:38
static constexpr uint8_t DECIMAL_POINT_BIT_ROW1
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:43
static constexpr uint8_t DECIMAL_MIN_COL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:47
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:29
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:52
static constexpr uint8_t OFFSET_SIGNAL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:35
static constexpr uint8_t OFFSET_BATT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:36
size_t write(uint8_t ch) override
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:106
static constexpr uint8_t RAM_SIZE
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:31
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:40
static constexpr uint8_t BATTERY_LEVEL_SEG[MAX_BATTERY_LEVEL]
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:54
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:37
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:45
static constexpr uint8_t ADDR_1_SEGS
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:28
static constexpr uint8_t DECIMAL_POINT_BIT_ROW2
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:44
static constexpr uint8_t MAX_SIGNAL_LEVEL
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:56
static constexpr uint8_t ADDR_BATT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:27
bool _handleDotNoPrevClear(uint8_t ch)
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.cpp:56
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:49
static constexpr uint8_t POWER_BIT
Definition SegLCD_PCF85176_2Row4DigSigBatPwr.h:60