1
+ // SPDX-License-Identifier: GPL-2.0-or-later
2
+ /*
3
+ * Copyright (C) 2023 Thomas Basler and others
4
+ */
5
+ #include " HMS_1CHv2.h"
6
+
7
+ static const byteAssign_t byteAssignment[] = {
8
+ { TYPE_DC, CH0, FLD_UDC, UNIT_V, 2 , 2 , 10 , false , 1 },
9
+ { TYPE_DC, CH0, FLD_IDC, UNIT_A, 6 , 2 , 100 , false , 2 },
10
+ { TYPE_DC, CH0, FLD_PDC, UNIT_W, 10 , 2 , 10 , false , 1 },
11
+ { TYPE_DC, CH0, FLD_YD, UNIT_WH, 22 , 2 , 1 , false , 0 },
12
+ { TYPE_DC, CH0, FLD_YT, UNIT_KWH, 14 , 4 , 1000 , false , 3 },
13
+ { TYPE_DC, CH0, FLD_IRR, UNIT_PCT, CALC_IRR_CH, CH0, CMD_CALC, false , 3 },
14
+
15
+ { TYPE_AC, CH0, FLD_UAC, UNIT_V, 26 , 2 , 10 , false , 1 },
16
+ { TYPE_AC, CH0, FLD_IAC, UNIT_A, 34 , 2 , 100 , false , 2 },
17
+ { TYPE_AC, CH0, FLD_PAC, UNIT_W, 30 , 2 , 10 , false , 1 },
18
+ { TYPE_AC, CH0, FLD_Q, UNIT_VAR, 20 , 2 , 10 , false , 1 },
19
+ { TYPE_AC, CH0, FLD_F, UNIT_HZ, 28 , 2 , 100 , false , 2 },
20
+ { TYPE_AC, CH0, FLD_PF, UNIT_NONE, 36 , 2 , 1000 , false , 3 },
21
+
22
+ { TYPE_INV, CH0, FLD_T, UNIT_C, 38 , 2 , 10 , true , 1 },
23
+ { TYPE_INV, CH0, FLD_EVT_LOG, UNIT_NONE, 18 , 2 , 1 , false , 0 },
24
+
25
+ { TYPE_AC, CH0, FLD_YD, UNIT_WH, CALC_YD_CH0, 0 , CMD_CALC, false , 0 },
26
+ { TYPE_AC, CH0, FLD_YT, UNIT_KWH, CALC_YT_CH0, 0 , CMD_CALC, false , 3 },
27
+ { TYPE_AC, CH0, FLD_PDC, UNIT_W, CALC_PDC_CH0, 0 , CMD_CALC, false , 1 },
28
+ { TYPE_AC, CH0, FLD_EFF, UNIT_PCT, CALC_EFF_CH0, 0 , CMD_CALC, false , 3 }
29
+ };
30
+
31
+ HMS_1CHv2::HMS_1CHv2 (HoymilesRadio* radio, uint64_t serial)
32
+ : HMS_Abstract(radio, serial) {};
33
+
34
+ bool HMS_1CHv2::isValidSerial (uint64_t serial)
35
+ {
36
+ // serial >= 0x112500000000 && serial <= 0x112599999999
37
+ uint16_t preSerial = (serial >> 32 ) & 0xffff ;
38
+ return preSerial == 0x1125 ;
39
+ }
40
+
41
+ String HMS_1CHv2::typeName ()
42
+ {
43
+ return " HMS-500 v2" ;
44
+ }
45
+
46
+ const byteAssign_t* HMS_1CHv2::getByteAssignment ()
47
+ {
48
+ return byteAssignment;
49
+ }
50
+
51
+ uint8_t HMS_1CHv2::getByteAssignmentSize ()
52
+ {
53
+ return sizeof (byteAssignment) / sizeof (byteAssignment[0 ]);
54
+ }
0 commit comments