Repository navigation
Expand file tree
/
Copy pathfields.c
More file actions
250 lines (241 loc) · 8.92 KB
/
Copy pathfields.c
File metadata and controls
250 lines (241 loc) · 8.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#include "fields.h"
#include <stddef.h>
const char *map_find(uint32_t code, const MapInt *map)
{
return map_value(map_idx(code, map), map);
}
int map_idx(uint32_t code, const MapInt *map)
{
for(int i = 0; map[i].name; ++i)
{
if(code == map[i].code)
{
return i;
}
}
return -1;
}
const char *map_value(int idx, const MapInt *map)
{
return idx < 0 ? "Unknown" : map[idx].name;
}
const MapInt map_devices[] =
{
{ 0x203, "BMV-700" },
{ 0x204, "BMV-702" },
{ 0x205, "BMV-700H" },
{ 0x0300, "BlueSolar MPPT 70|15*" },
{ 0xA040, "BlueSolar MPPT 75|50*" },
{ 0xA041, "BlueSolar MPPT 150|35*" },
{ 0xA042, "BlueSolar MPPT 75|15" },
{ 0xA043, "BlueSolar MPPT 100|15" },
{ 0xA044, "BlueSolar MPPT 100|30*" },
{ 0xA045, "BlueSolar MPPT 100|50*" },
{ 0xA046, "BlueSolar MPPT 150|70" },
{ 0xA047, "BlueSolar MPPT 150|100" },
{ 0xA049, "BlueSolar MPPT 100|50 rev2" },
{ 0xA04A, "BlueSolar MPPT 100|30 rev2" },
{ 0xA04B, "BlueSolar MPPT 150|35 rev2" },
{ 0xA04C, "BlueSolar MPPT 75|10" },
{ 0xA04D, "BlueSolar MPPT 150|45" },
{ 0xA04E, "BlueSolar MPPT 150|60" },
{ 0xA04F, "BlueSolar MPPT 150|85" },
{ 0xA050, "SmartSolar MPPT 250|100" },
{ 0xA051, "SmartSolar MPPT 150|100*" },
{ 0xA052, "SmartSolar MPPT 150|85*" },
{ 0xA053, "SmartSolar MPPT 75|15" },
{ 0xA054, "SmartSolar MPPT 75|10" },
{ 0xA055, "SmartSolar MPPT 100|15" },
{ 0xA056, "SmartSolar MPPT 100|30" },
{ 0xA057, "SmartSolar MPPT 100|50" },
{ 0xA058, "SmartSolar MPPT 150|35" },
{ 0xA059, "SmartSolar MPPT 150|100 rev2" },
{ 0xA05A, "SmartSolar MPPT 150|85 rev2" },
{ 0xA05B, "SmartSolar MPPT 250|70" },
{ 0xA05C, "SmartSolar MPPT 250|85" },
{ 0xA05D, "SmartSolar MPPT 250|60" },
{ 0xA05E, "SmartSolar MPPT 250|45" },
{ 0xA05F, "SmartSolar MPPT 100|20" },
{ 0xA060, "SmartSolar MPPT 100|20 48V" },
{ 0xA061, "SmartSolar MPPT 150|45" },
{ 0xA062, "SmartSolar MPPT 150|60" },
{ 0xA063, "SmartSolar MPPT 150|70" },
{ 0xA064, "SmartSolar MPPT 250|85 rev2" },
{ 0xA065, "SmartSolar MPPT 250|100 rev2" },
{ 0xA066, "BlueSolar MPPT 100|20" },
{ 0xA067, "BlueSolar MPPT 100|20 48V" },
{ 0xA068, "SmartSolar MPPT 250|60 rev2" },
{ 0xA069, "SmartSolar MPPT 250|70 rev2" },
{ 0xA06A, "SmartSolar MPPT 150|45 rev2" },
{ 0xA06B, "SmartSolar MPPT 150|60 rev2" },
{ 0xA06C, "SmartSolar MPPT 150|70 rev2" },
{ 0xA06D, "SmartSolar MPPT 150|85 rev3" },
{ 0xA06E, "SmartSolar MPPT 150|100 rev3" },
{ 0xA06F, "BlueSolar MPPT 150|45 rev2" },
{ 0xA070, "BlueSolar MPPT 150|60 rev2" },
{ 0xA071, "BlueSolar MPPT 150|70 rev2" },
{ 0xA072, "BlueSolar MPPT 150/45 rev3" },
{ 0xA073, "SmartSolar MPPT 150/45 rev3" },
{ 0xA074, "SmartSolar MPPT 75/10 rev2" },
{ 0xA075, "SmartSolar MPPT 75/15 rev2" },
{ 0xA076, "BlueSolar MPPT 100/30 rev3" },
{ 0xA077, "BlueSolar MPPT 100/50 rev3" },
{ 0xA078, "BlueSolar MPPT 150/35 rev3" },
{ 0xA079, "BlueSolar MPPT 75/10 rev2" },
{ 0xA07A, "BlueSolar MPPT 75/15 rev2" },
{ 0xA07B, "BlueSolar MPPT 100/15 rev2" },
{ 0xA07C, "BlueSolar MPPT 75/10 rev3" },
{ 0xA07D, "BlueSolar MPPT 75/15 rev3" },
{ 0xA07E, "SmartSolar MPPT 100/30 12V" },
{ 0xA07F, "All-In-1 SmartSolar MPPT 75/15 12V" },
{ 0xA080, "SmartSolar MPPT 250|60 rev3" },
{ 0xA081, "SmartSolar MPPT 250|70 rev3" },
{ 0xA102, "SmartSolar MPPT VE.Can 150/70" },
{ 0xA103, "SmartSolar MPPT VE.Can 150/45" },
{ 0xA104, "SmartSolar MPPT VE.Can 150/60" },
{ 0xA105, "SmartSolar MPPT VE.Can 150/85" },
{ 0xA106, "SmartSolar MPPT VE.Can 150/100" },
{ 0xA107, "SmartSolar MPPT VE.Can 250/45" },
{ 0xA108, "SmartSolar MPPT VE.Can 250/60" },
{ 0xA109, "SmartSolar MPPT VE.Can 250/70" },
{ 0xA10A, "SmartSolar MPPT VE.Can 250/85" },
{ 0xA10B, "SmartSolar MPPT VE.Can 250/100" },
{ 0xA10C, "SmartSolar MPPT VE.Can 150/70 rev2" },
{ 0xA10D, "SmartSolar MPPT VE.Can 150/85 rev2" },
{ 0xA10E, "SmartSolar MPPT VE.Can 150/100 rev2" },
{ 0xA10F, "BlueSolar MPPT VE.Can 150/100" },
{ 0xA112, "BlueSolar MPPT VE.Can 250/70" },
{ 0xA113, "BlueSolar MPPT VE.Can 250/100" },
{ 0xA114, "SmartSolar MPPT VE.Can 250/70 rev2" },
{ 0xA115, "SmartSolar MPPT VE.Can 250/100 rev2" },
{ 0xA116, "SmartSolar MPPT VE.Can 250/85 rev2" },
{ 0xA117, "BlueSolar MPPT VE.Can 150/100 rev2" },
{ 0xA201, "Phoenix Inverter 12V 250VA 230V*" },
{ 0xA202, "Phoenix Inverter 24V 250VA 230V*" },
{ 0xA204, "Phoenix Inverter 48V 250VA 230V*" },
{ 0xA211, "Phoenix Inverter 12V 375VA 230V*" },
{ 0xA212, "Phoenix Inverter 24V 375VA 230V*" },
{ 0xA214, "Phoenix Inverter 48V 375VA 230V*" },
{ 0xA221, "Phoenix Inverter 12V 500VA 230V*" },
{ 0xA222, "Phoenix Inverter 24V 500VA 230V*" },
{ 0xA224, "Phoenix Inverter 48V 500VA 230V*" },
{ 0xA231, "Phoenix Inverter 12V 250VA 230V" },
{ 0xA232, "Phoenix Inverter 24V 250VA 230V" },
{ 0xA234, "Phoenix Inverter 48V 250VA 230V" },
{ 0xA239, "Phoenix Inverter 12V 250VA 120V" },
{ 0xA23A, "Phoenix Inverter 24V 250VA 120V" },
{ 0xA23C, "Phoenix Inverter 48V 250VA 120V" },
{ 0xA241, "Phoenix Inverter 12V 375VA 230V" },
{ 0xA242, "Phoenix Inverter 24V 375VA 230V" },
{ 0xA244, "Phoenix Inverter 48V 375VA 230V" },
{ 0xA249, "Phoenix Inverter 12V 375VA 120V" },
{ 0xA24A, "Phoenix Inverter 24V 375VA 120V" },
{ 0xA24C, "Phoenix Inverter 48V 375VA 120V" },
{ 0xA251, "Phoenix Inverter 12V 500VA 230V" },
{ 0xA252, "Phoenix Inverter 24V 500VA 230V" },
{ 0xA254, "Phoenix Inverter 48V 500VA 230V" },
{ 0xA259, "Phoenix Inverter 12V 500VA 120V" },
{ 0xA25A, "Phoenix Inverter 24V 500VA 120V" },
{ 0xA25C, "Phoenix Inverter 48V 500VA 120V" },
{ 0xA261, "Phoenix Inverter 12V 800VA 230V" },
{ 0xA262, "Phoenix Inverter 24V 800VA 230V" },
{ 0xA264, "Phoenix Inverter 48V 800VA 230V" },
{ 0xA269, "Phoenix Inverter 12V 800VA 120V" },
{ 0xA26A, "Phoenix Inverter 24V 800VA 120V" },
{ 0xA26C, "Phoenix Inverter 48V 800VA 120V" },
{ 0xA271, "Phoenix Inverter 12V 1200VA 230V" },
{ 0xA272, "Phoenix Inverter 24V 1200VA 230V" },
{ 0xA274, "Phoenix Inverter 48V 1200VA 230V" },
{ 0xA279, "Phoenix Inverter 12V 1200VA 120V" },
{ 0xA27A, "Phoenix Inverter 24V 1200VA 120V" },
{ 0xA27C, "Phoenix Inverter 48V 1200VA 120V" },
{ 0xA281, "Phoenix Inverter 12V 1600VA 230V" },
{ 0xA282, "Phoenix Inverter 24V 1600VA 230V" },
{ 0xA284, "Phoenix Inverter 48V 1600VA 230V" },
{ 0xA291, "Phoenix Inverter 12V 2000VA 230V" },
{ 0xA292, "Phoenix Inverter 24V 2000VA 230V" },
{ 0xA294, "Phoenix Inverter 48V 2000VA 230V" },
{ 0xA2A1, "Phoenix Inverter 12V 3000VA 230V" },
{ 0xA2A2, "Phoenix Inverter 24V 3000VA 230V" },
{ 0xA2A4, "Phoenix Inverter 48V 3000VA 230V" },
{ 0xA340, "Phoenix Smart IP43 Charger 12|50 (1+1)" },
{ 0xA341, "Phoenix Smart IP43 Charger 12|50 (3)" },
{ 0xA342, "Phoenix Smart IP43 Charger 24|25 (1+1)" },
{ 0xA343, "Phoenix Smart IP43 Charger 24|25 (3)" },
{ 0xA344, "Phoenix Smart IP43 Charger 12|30 (1+1)" },
{ 0xA345, "Phoenix Smart IP43 Charger 12|30 (3)" },
{ 0xA346, "Phoenix Smart IP43 Charger 24|16 (1+1)" },
{ 0xA347, "Phoenix Smart IP43 Charger 24|16 (3)" },
{ 0xA381, "BMV-712 Smart" },
{ 0xA382, "BMV-710H Smart" },
{ 0xA383, "BMV-712 Smart Rev2" },
{ 0xA389, "SmartShunt 500A/50mV" },
{ 0xA38A, "SmartShunt 1000A/50mV" },
{ 0xA38B, "SmartShunt 2000A/50mV" },
{ 0xA3F0, "Orion XS 12V/12V-50A" },
{ 0xA3F1, "Orion XS 1400" },
{ 0, NULL }
};
const MapInt map_cs[] =
{
{ 0, "Off" },
{ 1, "Low power" },
{ 2, "Fault" },
{ 3, "Bulk" },
{ 4, "Absorption" },
{ 5, "Float" },
{ 6, "Storage" },
{ 7, "Equalize (manual)" },
{ 9, "Inverting" },
{ 11, "Power supply" },
{ 245, "Starting-up" },
{ 246, "Repeated absorption" },
{ 247, "Auto equalize / Recondition" },
{ 248, "BatterySafe" },
{ 252, "External Control" },
{ 0, NULL }
};
const MapInt map_err[] =
{
{ 0, "No error" },
{ 2, "Battery voltage too high" },
{ 17, "Charger temperature too high" },
{ 18, "Charger over current" },
{ 19, "Charger current reversed" },
{ 20, "Bulk time limit exceeded" },
{ 21, "Current sensor issue (sensor bias/sensor broken)" },
{ 26, "Terminals overheated" },
{ 28, "Converter issue (dual converter models only)" },
{ 33, "Input voltage too high (solar panel)" },
{ 34, "Input current too high (solar panel)" },
{ 38, "Input shutdown (due to excessive battery voltage)" },
{ 39, "Input shutdown (due to current flow during off mode)" },
{ 65, "Lost communication with one of devices" },
{ 66, "Synchronised charging device configuration issue" },
{ 67, "BMS connection lost" },
{ 68, "Network misconfigured" },
{ 116, "Factory calibration data lost" },
{ 117, "Invalid/incompatible firmware" },
{ 119, "User settings invalid" },
{ 0, NULL }
};
const MapInt map_mppt[] =
{
{ 0, "Off" },
{ 1, "Voltage or current limited" },
{ 2, "MPP Tracker active" },
{ 0, NULL }
};
const MapInt map_or[] =
{
{ 0x00000001, "No input power" },
{ 0x00000002, "Switched off (power switch)" },
{ 0x00000004, "Switched off (device mode register)" },
{ 0x00000008, "Remote input" },
{ 0x00000010, "Protection active" },
{ 0x00000020, "Paygo" },
{ 0x00000040, "BMS" },
{ 0x00000080, "Engine shutdown detection" },
{ 0x00000100, "Analysing input voltage" },
{ 0, NULL }
};