SegLCDLib
Loading...
Searching...
No Matches
SegLCD_HT1621_LCM0844.h
Go to the documentation of this file.
1#ifndef SEGLCD_HT1621_LCM0844_H
2#define SEGLCD_HT1621_LCM0844_H
3
4
5#if !defined(SEGLCD_DISABLE_ALL_LCDS) || defined(SEGLCD_ENABLE_HT1621_LCM0844)
6#include <SegDriver_HT1621.h>
7
19 public:
20 typedef enum : uint32_t {
21 // Address 0x00
22 UNIT_LEFT_KILO_PREFIX = (1UL << 0), // 0x00:0x01
23 UNIT_LEFT_MEGA_PREFIX = (1UL << 1), // 0x00:0x02
24
25 // Address 0x06
26 UNIT_LEFT_HZ = (1UL << 2), // 0x06:0x01
27
28 // Address 0x08
29 UNIT_LEFT_WATT = (1UL << 3), // 0x08:0x80
30 UNIT_LEFT_AMPERE = (1UL << 4), // 0x08:0x40
31 UNIT_LEFT_VOLT = (1UL << 5), // 0x08:0x20
32 UNIT_LEFT_PERCENT = (1UL << 6), // 0x08:0x10
33 UNIT_LEFT_WATT_HOUR_SUFFIX = (1UL << 7), // 0x08:0x01
34 UNIT_CENTER_HOUR = (1UL << 8), // 0x08:0x08
35 UNIT_CENTER_MINUTE = (1UL << 9), // 0x08:0x04
36
37 // Address 0x0E
38 UNIT_RIGHT_KILO_PREFIX = (1UL << 10), // 0x0E:0x01
39
40 // Address 0x14
41 UNIT_RIGHT_HZ = (1UL << 11), // 0x14:0x01
42
43 // Address 0x16
44 UNIT_RIGHT_WATT = (1UL << 12), // 0x16:0x80
45 UNIT_RIGHT_AMPERE = (1UL << 13), // 0x16:0x40
46 UNIT_RIGHT_VOLT = (1UL << 14), // 0x16:0x20
47 UNIT_RIGHT_PERCENT = (1UL << 15), // 0x16:0x10
48
49 // Address 0x1C
50 UNIT_RIGHT_WATT_HOUR_SUFFIX = (1UL << 16), // 0x1C:0x80
51
52 // Address 0x1E
53 UNIT_RIGHT_MEGA_PREFIX = (1UL << 17), // 0x1E:0x20
54 } UnitFlags;
55
56 typedef enum : uint32_t {
57 // Address 0x00
58 LABEL_AC = (1UL << 0), // 0x00:0x80
59 LABEL_PV1 = (1UL << 1), // 0x00:0x20
60 LABEL_PV2 = (1UL << 2), // 0x00:0x40
61 LABEL_INPUT = (1UL << 3), // 0x00:0x08
62 LABEL_LEFT_BATT = (1UL << 4), // 0x00:0x04
63
64 // Address 0x0E
65 LABEL_OUTPUT = (1UL << 5), // 0x0E:0x08
66 LABEL_RIGHT_BATT = (1UL << 6), // 0x0E:0x04
67 LABEL_LOAD = (1UL << 7), // 0x0E:0x02
68 LABEL_ERROR = (1UL << 8), // 0x0E:0x40
69 LABEL_OVERLOAD = (1UL << 9), // 0x16:0x08
70
71 // Address 0x1A
72 LABEL_BATT_AGM = (1UL << 10), // 0x1A:0x20
73 LABEL_BATT_FLD = (1UL << 11), // 0x1A:0x40
74 LABEL_BATT_USER = (1UL << 12), // 0x1A:0x80
75 } LabelFlags;
76
77 typedef enum : uint32_t {
78 SYMBOL_CLOCK = (1UL << 0),
79 SYMBOL_MAINTENANCE = (1UL << 1),
81
82 SYMBOL_LEFT_ARROWS = (1UL << 3),
83 SYMBOL_RIGHT_ARROWS = (1UL << 4),
84 SYMBOL_UNDERLINES = (1UL << 5),
85 SYMBOL_MUTE = (1UL << 6),
86
87 SYMBOL_CENTER_FRAME = (1UL << 7),
88
89 SYMBOL_BULB = (1UL << 8),
90 SYMBOL_JUNCTION = (1UL << 9),
92
97 SYMBOL_AC_DC_CONVERT = (1UL << 15),
98
99 SYMBOL_DC_DC_CONVERT = (1UL << 16),
101
102 SYMBOL_AC_LINE = (1UL << 18),
103 SYMBOL_AC_SYMBOL = (1UL << 19),
104 SYMBOL_PV2_SYMBOL = (1UL << 20),
105 SYMBOL_PV1_SYMBOL = (1UL << 21),
109 } SymbolFlags;
110
111 SegLCD_HT1621_LCM0844(SegTransport3Wire& transport, uint8_t chipselect);
112 void init() override;
113 void setBatteryLevel(uint8_t level);
114 void setLoadLevel(uint8_t level);
115 void setUnits(uint32_t units);
116 void clearUnits(uint32_t units);
117 void setLabels(uint32_t labels);
118 void clearLabels(uint32_t labels);
119 void setSymbols(uint32_t symbols);
120 void clearSymbols(uint32_t symbols);
121 void setClockSymbol(bool state, uint8_t index = 0);
122 void setMaintenanceSymbol(bool state, uint8_t index = 0);
123 void setWarningSymbol(bool state, uint8_t index = 0);
124 void setMuteSymbol(bool state, uint8_t index = 0);
125 using SegLCDLib::write;
126 size_t write(uint8_t ch) override;
127
128 private:
129
130 // Unit bit constants — address 0x00
131 static constexpr uint8_t UNIT_BIT_LEFT_KILO_PREFIX = 0x01;
132 static constexpr uint8_t UNIT_BIT_LEFT_MEGA_PREFIX = 0x02;
133
134 // Unit bit constants — address 0x06
135 static constexpr uint8_t UNIT_BIT_LEFT_HZ = 0x01;
136
137 // Unit bit constants — address 0x08
138 static constexpr uint8_t UNIT_BIT_LEFT_WATT = 0x80;
139 static constexpr uint8_t UNIT_BIT_LEFT_AMPERE = 0x40;
140 static constexpr uint8_t UNIT_BIT_LEFT_VOLT = 0x20;
141 static constexpr uint8_t UNIT_BIT_LEFT_PERCENT = 0x10;
142 static constexpr uint8_t UNIT_BIT_LEFT_WATT_HOUR_SUFFIX = 0x01;
143 static constexpr uint8_t UNIT_BIT_CENTER_HOUR = 0x08;
144 static constexpr uint8_t UNIT_BIT_CENTER_MINUTE = 0x04;
145
146 // Unit bit constants — address 0x0E
147 static constexpr uint8_t UNIT_BIT_RIGHT_KILO_PREFIX = 0x01;
148
149 // Unit bit constants — address 0x14
150 static constexpr uint8_t UNIT_BIT_RIGHT_HZ = 0x01;
151
152 // Unit bit constants — address 0x16
153 static constexpr uint8_t UNIT_BIT_RIGHT_WATT = 0x80;
154 static constexpr uint8_t UNIT_BIT_RIGHT_AMPERE = 0x40;
155 static constexpr uint8_t UNIT_BIT_RIGHT_VOLT = 0x20;
156 static constexpr uint8_t UNIT_BIT_RIGHT_PERCENT = 0x10;
157
158 // Unit bit constants — address 0x1C
159 static constexpr uint8_t UNIT_BIT_RIGHT_WATT_HOUR_SUFFIX = 0x80;
160
161 // Unit bit constants — address 0x1E
162 static constexpr uint8_t UNIT_BIT_RIGHT_MEGA_PREFIX = 0x20;
163
164 // Label bit constants — address 0x00
165 static constexpr uint8_t LABEL_BIT_AC = 0x80;
166 static constexpr uint8_t LABEL_BIT_PV1 = 0x20;
167 static constexpr uint8_t LABEL_BIT_PV2 = 0x40;
168 static constexpr uint8_t LABEL_BIT_INPUT = 0x08;
169 static constexpr uint8_t LABEL_BIT_LEFT_BATT = 0x04;
170
171 // Label bit constants — address 0x0E
172 static constexpr uint8_t LABEL_BIT_OUTPUT = 0x08;
173 static constexpr uint8_t LABEL_BIT_RIGHT_BATT = 0x04;
174 static constexpr uint8_t LABEL_BIT_LOAD = 0x02;
175 static constexpr uint8_t LABEL_BIT_ERROR = 0x40;
176
177 // Label bit constants — address 0x16
178 static constexpr uint8_t LABEL_BIT_OVERLOAD = 0x08;
179
180 // Label bit constants — address 0x1A
181 static constexpr uint8_t LABEL_BIT_BATT_AGM = 0x20;
182 static constexpr uint8_t LABEL_BIT_BATT_FLD = 0x40;
183 static constexpr uint8_t LABEL_BIT_BATT_USER = 0x80;
184
185 // Symbol bit constants
186 static constexpr uint8_t SYMBOL_BIT_LEFT_ARROWS = 0x10;
187 static constexpr uint8_t SYMBOL_BIT_CENTER_FRAME = 0x01;
188 static constexpr uint8_t SYMBOL_BIT_CLOCK = 0x10;
189 static constexpr uint8_t SYMBOL_BIT_MAINTENANCE = 0x20;
190 static constexpr uint8_t SYMBOL_BIT_WARNING_TRIANGLE = 0x80;
191 static constexpr uint8_t SYMBOL_BIT_RIGHT_ARROWS = 0x02;
192 static constexpr uint8_t SYMBOL_BIT_UNDERLINES = 0x01;
193 static constexpr uint8_t SYMBOL_BIT_MUTE = 0x04;
194 static constexpr uint8_t SYMBOL_BIT_BULB = 0x40;
195 static constexpr uint8_t SYMBOL_BIT_JUNCTION = 0x20;
196 static constexpr uint8_t SYMBOL_BIT_LINE_JUNCTION_TO_LOAD = 0x10;
197 static constexpr uint8_t SYMBOL_BIT_ARROW_JUNCTION_TO_ACDC = 0x01;
198 static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_JUNCTION = 0x02;
199 static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_BATT = 0x04;
200 static constexpr uint8_t SYMBOL_BIT_ARROW_BATT_TO_ACDC = 0x08;
201 static constexpr uint8_t SYMBOL_BIT_AC_DC_CONVERT = 0x10;
202 static constexpr uint8_t SYMBOL_BIT_DC_DC_CONVERT = 0x10;
203 static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_ACDC = 0x20;
204 static constexpr uint8_t SYMBOL_BIT_AC_LINE = 0x01;
205 static constexpr uint8_t SYMBOL_BIT_AC_SYMBOL = 0x02;
206 static constexpr uint8_t SYMBOL_BIT_PV2_SYMBOL = 0x04;
207 static constexpr uint8_t SYMBOL_BIT_PV1_SYMBOL = 0x08;
208 static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_BATT = 0x10;
209 static constexpr uint8_t SYMBOL_BIT_LINE_PV2_TO_DCDC = 0x40;
210 static constexpr uint8_t SYMBOL_BIT_LINE_PV1_TO_DCDC = 0x80;
211
212 static constexpr uint8_t RAM_SIZE = 16;
213 static constexpr uint8_t DIGITS = 8;
214
215 static constexpr uint8_t DECIMAL_DIGITS[4] = {0, 1, 5, 6};
216 static constexpr uint8_t DECIMAL_POINT_BIT = 0x01;
217 static constexpr int8_t DECIMAL_COL_OFFSET = -1; // -1: dot belongs to previous position
218
219 // Battery level constants
220 static constexpr uint8_t MAX_BATTERY_LEVEL = 5;
221 static constexpr uint8_t BATTERY_MASK = 0x4F;
222 static constexpr uint8_t BATTERY_LEVEL_ADR = 0x1C;
223
224 // Load level constants
225 static constexpr uint8_t MAX_LOAD_LEVEL = 5;
226 static constexpr uint8_t LOAD_MASK = 0x8F;
227 static constexpr uint8_t LOAD_LEVEL_ADR = 0x18;
228
229 // Label/Symbol mapping structures
230 struct FlagBit {
231 uint32_t flag;
232 uint8_t bit;
233 };
234
236 uint8_t address;
237 FlagBit bits[8]; // terminated by {0, 0}
238 };
239
240 static const AddressMapping* _getUnitMap(size_t &count) {
241 static constexpr AddressMapping map[] = {
242 {0x00, {
245 }
246 },
247 {0x06, {
249 }
250 },
251 {0x08, {
259 }
260 },
261 {0x0E, {
263 }
264 },
265 {0x14, {
267 }
268 },
269 {0x16, {
274 }
275 },
276 {0x1C, {
278 }
279 },
280 {0x1E, {
282 }
283 },
284 };
285 count = sizeof(map) / sizeof(map[0]);
286 return map;
287 }
288
289 static const AddressMapping* _getLabelMap(size_t &count) {
290 static constexpr AddressMapping map[] = {
291 {0x00, {
297 }
298 },
299 {0x0E, {
304 }
305 },
306 {0x16, {
308 }
309 },
310 {0x1A, {
314 }
315 },
316 };
317 count = sizeof(map) / sizeof(map[0]);
318 return map;
319 }
320
321 static const AddressMapping* _getSymbolMap(size_t &count) {
322 static constexpr AddressMapping map[] = {
331 };
332 count = sizeof(map) / sizeof(map[0]);
333 return map;
334 }
335
336 void _setDecimal(uint8_t row, uint8_t col, bool state) override;
337
338 void _updateUnits(uint32_t units, bool set);
339 void _updateLabels(uint32_t labels, bool set);
340 void _updateSymbols(uint32_t symbols, bool set);
341
342 uint8_t _mapSegments(uint8_t val);
343};
344#endif
345
346#endif
HT1621 LCD segment display driver.
Definition SegDriver_HT1621.h:12
virtual size_t write(uint8_t)
Definition SegLCDLib.h:113
LCM0844 LCD (HT1621).
Definition SegLCD_HT1621_LCM0844.h:18
static const AddressMapping * _getSymbolMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:321
void init() override
Initialize GPIO pins for communication.
Definition SegLCD_HT1621_LCM0844.cpp:10
static constexpr uint8_t UNIT_BIT_LEFT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:132
static constexpr uint8_t UNIT_BIT_RIGHT_WATT
Definition SegLCD_HT1621_LCM0844.h:153
static constexpr int8_t DECIMAL_COL_OFFSET
Definition SegLCD_HT1621_LCM0844.h:217
static constexpr uint8_t LABEL_BIT_PV1
Definition SegLCD_HT1621_LCM0844.h:166
static constexpr uint8_t UNIT_BIT_LEFT_WATT
Definition SegLCD_HT1621_LCM0844.h:138
static constexpr uint8_t SYMBOL_BIT_ARROW_JUNCTION_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:197
void clearSymbols(uint32_t symbols)
Definition SegLCD_HT1621_LCM0844.cpp:125
static constexpr uint8_t LABEL_BIT_PV2
Definition SegLCD_HT1621_LCM0844.h:167
void setMuteSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:144
size_t write(uint8_t ch) override
Definition SegLCD_HT1621_LCM0844.cpp:177
static constexpr uint8_t LABEL_BIT_OVERLOAD
Definition SegLCD_HT1621_LCM0844.h:178
static constexpr uint8_t UNIT_BIT_LEFT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:142
static constexpr uint8_t LABEL_BIT_ERROR
Definition SegLCD_HT1621_LCM0844.h:175
static constexpr uint8_t SYMBOL_BIT_LEFT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:186
SymbolFlags
Definition SegLCD_HT1621_LCM0844.h:77
@ SYMBOL_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:90
@ SYMBOL_LINE_DCDC_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:100
@ SYMBOL_WARNING_TRIANGLE
Definition SegLCD_HT1621_LCM0844.h:80
@ SYMBOL_ARROW_JUNCTION_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:93
@ SYMBOL_LINE_JUNCTION_TO_LOAD
Definition SegLCD_HT1621_LCM0844.h:91
@ SYMBOL_ARROW_ACDC_TO_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:94
@ SYMBOL_RIGHT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:83
@ SYMBOL_LINE_PV2_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:107
@ SYMBOL_DC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:99
@ SYMBOL_UNDERLINES
Definition SegLCD_HT1621_LCM0844.h:84
@ SYMBOL_BULB
Definition SegLCD_HT1621_LCM0844.h:89
@ SYMBOL_PV1_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:105
@ SYMBOL_ARROW_ACDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:95
@ SYMBOL_AC_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:103
@ SYMBOL_LEFT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:82
@ SYMBOL_CENTER_FRAME
Definition SegLCD_HT1621_LCM0844.h:87
@ SYMBOL_AC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:97
@ SYMBOL_PV2_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:104
@ SYMBOL_AC_LINE
Definition SegLCD_HT1621_LCM0844.h:102
@ SYMBOL_MAINTENANCE
Definition SegLCD_HT1621_LCM0844.h:79
@ SYMBOL_ARROW_BATT_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:96
@ SYMBOL_LINE_DCDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:106
@ SYMBOL_MUTE
Definition SegLCD_HT1621_LCM0844.h:85
@ SYMBOL_LINE_PV1_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:108
@ SYMBOL_CLOCK
Definition SegLCD_HT1621_LCM0844.h:78
static constexpr uint8_t LOAD_MASK
Definition SegLCD_HT1621_LCM0844.h:226
void setLabels(uint32_t labels)
Definition SegLCD_HT1621_LCM0844.cpp:113
static constexpr uint8_t LABEL_BIT_BATT_FLD
Definition SegLCD_HT1621_LCM0844.h:182
static constexpr uint8_t LABEL_BIT_LEFT_BATT
Definition SegLCD_HT1621_LCM0844.h:169
static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:208
static constexpr uint8_t UNIT_BIT_LEFT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:131
UnitFlags
Definition SegLCD_HT1621_LCM0844.h:20
@ UNIT_LEFT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:23
@ UNIT_RIGHT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:47
@ UNIT_LEFT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:30
@ UNIT_RIGHT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:53
@ UNIT_CENTER_MINUTE
Definition SegLCD_HT1621_LCM0844.h:35
@ UNIT_RIGHT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:50
@ UNIT_RIGHT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:45
@ UNIT_LEFT_HZ
Definition SegLCD_HT1621_LCM0844.h:26
@ UNIT_LEFT_VOLT
Definition SegLCD_HT1621_LCM0844.h:31
@ UNIT_RIGHT_WATT
Definition SegLCD_HT1621_LCM0844.h:44
@ UNIT_LEFT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:32
@ UNIT_CENTER_HOUR
Definition SegLCD_HT1621_LCM0844.h:34
@ UNIT_LEFT_WATT
Definition SegLCD_HT1621_LCM0844.h:29
@ UNIT_RIGHT_HZ
Definition SegLCD_HT1621_LCM0844.h:41
@ UNIT_RIGHT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:38
@ UNIT_RIGHT_VOLT
Definition SegLCD_HT1621_LCM0844.h:46
@ UNIT_LEFT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:22
@ UNIT_LEFT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:33
static constexpr uint8_t SYMBOL_BIT_AC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:201
static constexpr uint8_t DECIMAL_DIGITS[4]
Definition SegLCD_HT1621_LCM0844.h:215
static constexpr uint8_t SYMBOL_BIT_CENTER_FRAME
Definition SegLCD_HT1621_LCM0844.h:187
static constexpr uint8_t UNIT_BIT_RIGHT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:154
static constexpr uint8_t LABEL_BIT_BATT_USER
Definition SegLCD_HT1621_LCM0844.h:183
static constexpr uint8_t UNIT_BIT_RIGHT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:156
static constexpr uint8_t UNIT_BIT_LEFT_HZ
Definition SegLCD_HT1621_LCM0844.h:135
void clearLabels(uint32_t labels)
Definition SegLCD_HT1621_LCM0844.cpp:117
static constexpr uint8_t DECIMAL_POINT_BIT
Definition SegLCD_HT1621_LCM0844.h:216
void setBatteryLevel(uint8_t level)
Definition SegLCD_HT1621_LCM0844.cpp:20
static constexpr uint8_t SYMBOL_BIT_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:195
static constexpr uint8_t LOAD_LEVEL_ADR
Definition SegLCD_HT1621_LCM0844.h:227
static constexpr uint8_t MAX_LOAD_LEVEL
Definition SegLCD_HT1621_LCM0844.h:225
static constexpr uint8_t SYMBOL_BIT_PV1_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:207
static constexpr uint8_t SYMBOL_BIT_LINE_PV2_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:209
static constexpr uint8_t BATTERY_LEVEL_ADR
Definition SegLCD_HT1621_LCM0844.h:222
static constexpr uint8_t SYMBOL_BIT_MUTE
Definition SegLCD_HT1621_LCM0844.h:193
static constexpr uint8_t SYMBOL_BIT_MAINTENANCE
Definition SegLCD_HT1621_LCM0844.h:189
static constexpr uint8_t LABEL_BIT_BATT_AGM
Definition SegLCD_HT1621_LCM0844.h:181
static constexpr uint8_t SYMBOL_BIT_DC_DC_CONVERT
Definition SegLCD_HT1621_LCM0844.h:202
LabelFlags
Definition SegLCD_HT1621_LCM0844.h:56
@ LABEL_INPUT
Definition SegLCD_HT1621_LCM0844.h:61
@ LABEL_ERROR
Definition SegLCD_HT1621_LCM0844.h:68
@ LABEL_LOAD
Definition SegLCD_HT1621_LCM0844.h:67
@ LABEL_BATT_FLD
Definition SegLCD_HT1621_LCM0844.h:73
@ LABEL_PV1
Definition SegLCD_HT1621_LCM0844.h:59
@ LABEL_AC
Definition SegLCD_HT1621_LCM0844.h:58
@ LABEL_OVERLOAD
Definition SegLCD_HT1621_LCM0844.h:69
@ LABEL_BATT_USER
Definition SegLCD_HT1621_LCM0844.h:74
@ LABEL_RIGHT_BATT
Definition SegLCD_HT1621_LCM0844.h:66
@ LABEL_LEFT_BATT
Definition SegLCD_HT1621_LCM0844.h:62
@ LABEL_BATT_AGM
Definition SegLCD_HT1621_LCM0844.h:72
@ LABEL_OUTPUT
Definition SegLCD_HT1621_LCM0844.h:65
@ LABEL_PV2
Definition SegLCD_HT1621_LCM0844.h:60
static const AddressMapping * _getUnitMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:240
static constexpr uint8_t RAM_SIZE
Definition SegLCD_HT1621_LCM0844.h:212
static constexpr uint8_t DIGITS
Definition SegLCD_HT1621_LCM0844.h:213
static constexpr uint8_t SYMBOL_BIT_LINE_PV1_TO_DCDC
Definition SegLCD_HT1621_LCM0844.h:210
void _setDecimal(uint8_t row, uint8_t col, bool state) override
Virtual method for setting decimal point.
Definition SegLCD_HT1621_LCM0844.cpp:149
static constexpr uint8_t SYMBOL_BIT_LINE_JUNCTION_TO_LOAD
Definition SegLCD_HT1621_LCM0844.h:196
static constexpr uint8_t UNIT_BIT_RIGHT_KILO_PREFIX
Definition SegLCD_HT1621_LCM0844.h:147
static const AddressMapping * _getLabelMap(size_t &count)
Definition SegLCD_HT1621_LCM0844.h:289
static constexpr uint8_t UNIT_BIT_RIGHT_MEGA_PREFIX
Definition SegLCD_HT1621_LCM0844.h:162
static constexpr uint8_t UNIT_BIT_LEFT_AMPERE
Definition SegLCD_HT1621_LCM0844.h:139
void setLoadLevel(uint8_t level)
Definition SegLCD_HT1621_LCM0844.cpp:37
static constexpr uint8_t SYMBOL_BIT_WARNING_TRIANGLE
Definition SegLCD_HT1621_LCM0844.h:190
static constexpr uint8_t UNIT_BIT_CENTER_HOUR
Definition SegLCD_HT1621_LCM0844.h:143
void setSymbols(uint32_t symbols)
Definition SegLCD_HT1621_LCM0844.cpp:121
void _updateUnits(uint32_t units, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:54
static constexpr uint8_t SYMBOL_BIT_RIGHT_ARROWS
Definition SegLCD_HT1621_LCM0844.h:191
static constexpr uint8_t LABEL_BIT_AC
Definition SegLCD_HT1621_LCM0844.h:165
void setMaintenanceSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:134
static constexpr uint8_t MAX_BATTERY_LEVEL
Definition SegLCD_HT1621_LCM0844.h:220
uint8_t _mapSegments(uint8_t val)
Definition SegLCD_HT1621_LCM0844.cpp:207
static constexpr uint8_t SYMBOL_BIT_LINE_DCDC_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:203
static constexpr uint8_t SYMBOL_BIT_BULB
Definition SegLCD_HT1621_LCM0844.h:194
static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_JUNCTION
Definition SegLCD_HT1621_LCM0844.h:198
void setWarningSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:139
static constexpr uint8_t UNIT_BIT_LEFT_PERCENT
Definition SegLCD_HT1621_LCM0844.h:141
static constexpr uint8_t LABEL_BIT_OUTPUT
Definition SegLCD_HT1621_LCM0844.h:172
static constexpr uint8_t SYMBOL_BIT_CLOCK
Definition SegLCD_HT1621_LCM0844.h:188
static constexpr uint8_t UNIT_BIT_LEFT_VOLT
Definition SegLCD_HT1621_LCM0844.h:140
static constexpr uint8_t UNIT_BIT_RIGHT_VOLT
Definition SegLCD_HT1621_LCM0844.h:155
static constexpr uint8_t SYMBOL_BIT_AC_LINE
Definition SegLCD_HT1621_LCM0844.h:204
static constexpr uint8_t UNIT_BIT_CENTER_MINUTE
Definition SegLCD_HT1621_LCM0844.h:144
void setClockSymbol(bool state, uint8_t index=0)
Definition SegLCD_HT1621_LCM0844.cpp:129
static constexpr uint8_t UNIT_BIT_RIGHT_HZ
Definition SegLCD_HT1621_LCM0844.h:150
void _updateLabels(uint32_t labels, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:71
static constexpr uint8_t LABEL_BIT_RIGHT_BATT
Definition SegLCD_HT1621_LCM0844.h:173
static constexpr uint8_t LABEL_BIT_INPUT
Definition SegLCD_HT1621_LCM0844.h:168
static constexpr uint8_t SYMBOL_BIT_AC_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:205
static constexpr uint8_t BATTERY_MASK
Definition SegLCD_HT1621_LCM0844.h:221
static constexpr uint8_t SYMBOL_BIT_PV2_SYMBOL
Definition SegLCD_HT1621_LCM0844.h:206
static constexpr uint8_t UNIT_BIT_RIGHT_WATT_HOUR_SUFFIX
Definition SegLCD_HT1621_LCM0844.h:159
void _updateSymbols(uint32_t symbols, bool set)
Definition SegLCD_HT1621_LCM0844.cpp:88
void setUnits(uint32_t units)
Definition SegLCD_HT1621_LCM0844.cpp:105
static constexpr uint8_t LABEL_BIT_LOAD
Definition SegLCD_HT1621_LCM0844.h:174
void clearUnits(uint32_t units)
Definition SegLCD_HT1621_LCM0844.cpp:109
static constexpr uint8_t SYMBOL_BIT_ARROW_ACDC_TO_BATT
Definition SegLCD_HT1621_LCM0844.h:199
static constexpr uint8_t SYMBOL_BIT_ARROW_BATT_TO_ACDC
Definition SegLCD_HT1621_LCM0844.h:200
static constexpr uint8_t SYMBOL_BIT_UNDERLINES
Definition SegLCD_HT1621_LCM0844.h:192
Abstract 3-wire serial transport.
Definition SegTransport.h:23
Definition SegLCD_HT1621_LCM0844.h:235
uint8_t address
Definition SegLCD_HT1621_LCM0844.h:236
FlagBit bits[8]
Definition SegLCD_HT1621_LCM0844.h:237
Definition SegLCD_HT1621_LCM0844.h:230
uint8_t bit
Definition SegLCD_HT1621_LCM0844.h:232
uint32_t flag
Definition SegLCD_HT1621_LCM0844.h:231