forked from networkupstools/nut
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbcmxcp.h
625 lines (591 loc) · 38.9 KB
/
bcmxcp.h
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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
/*
* bcmxcp.h -- header for BCM/XCP module
*/
#ifndef _POWERWARE_H
#define _POWERWARE_H
#include "timehead.h"
/* Have to wait at least 0,25 sec max 16 sec */
/* 1 second is too short for PW9120 (leads to communication errors). So we set it to 2 seconds */
#define PW_SLEEP 2
#define PW_MAX_TRY 3 /* How many times we try to send data. */
#define PW_COMMAND_START_BYTE (unsigned char)0xAB
#define PW_LAST_SEQ (unsigned char)0x80 /* bit flag to indicate final sequence */
#define PW_SEQ_MASK (unsigned char)0x7F /* bit mask to extract just the sequence # */
#define PW_HEADER_LENGTH 4 /* Size of response header */
#define PW_ANSWER_MAX_SIZE 256
/* No Autorisation required */
#define PW_ID_BLOCK_REQ (unsigned char)0x31 /* Model name, ... length 1 */
#define PW_EVENT_HISTORY_LOG_REQ (unsigned char)0x32 /* List alarms that have occured. length 1 */
#define PW_STATUS_REQ (unsigned char)0x33 /* On Line, On Bypass, ... length 1-2 */
#define PW_METER_BLOCK_REQ (unsigned char)0x34 /* Current UPS status (Load, utility,...) length 1 */
#define PW_CUR_ALARM_REQ (unsigned char)0x35 /* Current alarm and event request. length 1 */
#define PW_CONFIG_BLOCK_REQ (unsigned char)0x36 /* Model serial#, ... length 1 */
#define PW_UTILITY_STATISTICS_BLOCK_REQ (unsigned char)0x38 /* List utility power quality. length 1 */
#define PW_WAVEFORM_BLOCK_REQ (unsigned char)0x3A /* Sampled waveform data. length 7 */
#define PW_BATTERY_REQ (unsigned char)0x3B /* Charging, floating, ... length 1 */
#define PW_LIMIT_BLOCK_REQ (unsigned char)0x3C /* Configuration (Bypass thresholds,...). length 1 */
#define PW_TEST_RESULT_REQ (unsigned char)0x3F /* Get the results for a system test. length 1 */
#define PW_COMMAND_LIST_REQ (unsigned char)0x40 /* Available commands. length 1 */
#define PW_OUT_MON_BLOCK_REQ (unsigned char)0x41 /* Outlet monitor request length 1 */
#define PW_COM_CAP_REQ (unsigned char)0x42 /* Request communication capabilities. length 2 */
#define PW_UPS_TOP_DATA_REQ (unsigned char)0x43 /* Request ups topology data requset. length 1 */
#define PW_COM_PORT_LIST_BLOCK_REQ (unsigned char)0x44 /* Request communication port list. length 1 */
#define PW_REQUEST_SCRATCHPAD_DATA_REQ (unsigned char)0x45 /* Request data from scratchpad. length 2*/
/* Need autorisation before these commands */
#define PW_GO_TO_BYPASS (unsigned char)0x88 /* Transfer load from inverter to bypass. length 1 or 3 */
#define PW_UPS_ON (unsigned char)0x89 /* UPS on command. length 1-2 */
#define PW_LOAD_OFF_RESTART (unsigned char)0x8A /* Delayed LoadPowerOff & Restart command. length 2-4 */
#define PW_UPS_OFF (unsigned char)0x8B /* UPS off command. length 1-2 */
#define PW_DECREMENT_OUTPUT_VOLTAGE (unsigned char)0x8C /* Decrease output voltage. length 1 */
#define PW_INCREMENT_OUTPUT_VOLTAGE (unsigned char)0x8D /* Increase output voltage. length 1 */
#define PW_SET_TIME_AND_DATE (unsigned char)0x90 /* Set the real-time clock inside UPS. length 8 */
#define PW_UPS_ON_TIME (unsigned char)0x91 /* Scheduled UPS on in n minutes. length 3-4 */
#define PW_UPS_ON_AT_TIME (unsigned char)0x92 /* Schedule UPS on at specified date and time. length 7-8 */
#define PW_UPS_OFF_TIME (unsigned char)0x93 /* Scheduled UPS off in n minutes. length 3-4 */
#define PW_UPS_OFF_AT_TIME (unsigned char)0x94 /* Schedule UPS off at specified date and time. length 7-8 */
#define PW_SET_CONF_COMMAND (unsigned char)0x95 /* Set configuration command. length 4 */
#define PW_SET_OUTLET_COMMAND (unsigned char)0x97 /* Set outlet parameter command length 5. not in 5115 */
#define PW_SET_COM_COMMAND (unsigned char)0x98 /* Set communication parameter command. length 5 */
#define PW_SET_SCRATHPAD_SECTOR (unsigned char)0x99 /* Write data to scratchpad. length 3 or 18 */
#define PW_SET_POWER_STRATEGY (unsigned char)0x9A /* Set the power strategy. length 2 */
#define PW_SET_REQ_ONLY_MODE (unsigned char)0xA0 /* Set request only mode command. length 1 */
#define PW_SET_UNREQUESTED_MODE (unsigned char)0xA1 /* Set unrequested mode command. length 1 */
#define PW_INIT_BAT_TEST (unsigned char)0xB1 /* Initiate battery test command. length 3 */
#define PW_INIT_SYS_TEST (unsigned char)0xB2 /* Initiate general system test command. length 2 */
#define PW_SELECT_SUBMODULE (unsigned char)0xCE /* Select a sub module. length 2-7 */
#define PW_AUTHORIZATION_CODE (unsigned char)0xCF /* Authorization code. length 4 or 7 */
/* Define the XCP system test */
#define PW_SYS_TEST_GENERAL (unsigned char)0x01 /* Initiate General system Test */
#define PW_SYS_TEST_SCHEDULE_BATTERY_COMMISSION (unsigned char)0x02 /* Schedule Battery Commissioning Test */
#define PW_SYS_TEST_ALTERNATE_AC_INPUT (unsigned char)0x03 /* Test Alternate AC Input */
#define PW_SYS_TEST_FLASH_LIGHTS (unsigned char)0x04 /* Flash the Lights Test */
#define PW_SYS_TEST_REPORT_CAPABILITIES (unsigned char)0xFF /* Report Systems Test Capabilities */
/* Outlet operations */
#define PW_ALL_OUTLETS 0
#define PW_AUTO_OFF_DELAY 1
#define PW_AUTO_ON_DELAY 2
/* 0 means Abort countdown */
#define PW_TURN_OFF_DELAY 3
#define PW_TURN_ON_DELAY 4
/* Config vars*/
#define PW_CONF_BYPASS_FREQ_DEV_LIMIT 0x01
#define PW_CONF_LOW_DEV_LIMIT 0x02
#define PW_CONF_HIGH_DEV_LIMIT 0x03
#define PW_CONF_PHASE_DEV_LIMIT 0x04
#define PW_CONF_LOW_BATT 0x05
#define PW_CONF_BEEPER 0x06
#define PW_CONF_RETURN_DELAY 0x07
#define PW_CONF_RETURN_CAP 0x08
#define PW_CONF_MAX_TEMP 0x0a
#define PW_CONF_NOMINAL_OUT_VOLTAGE 0x0b
#define PW_CONF_SLEEP_TH_LOAD 0x0d
#define PW_CONF_SLEEP_DELAY 0x0e
#define PW_CONF_BATT_STRINGS 0x0f
#define PW_CONF_REQ 0xff
/* Config block offsets */
#define BCMXCP_CONFIG_BLOCK_MACHINE_TYPE_CODE 0
#define BCMXCP_CONFIG_BLOCK_MODEL_NUMBER 2
#define BCMXCP_CONFIG_BLOCK_MODEL_CONF_WORD 4
#define BCMXCP_CONFIG_BLOCK_INPUT_FREQ_DEV_LIMIT 6
#define BCMXCP_CONFIG_BLOCK_NOMINAL_OUTPUT_VOLTAGE 8
#define BCMXCP_CONFIG_BLOCK_NOMINAL_OUTPUT_FREQ 10
#define BCMXCP_CONFIG_BLOCK_OUTPUT_PHASE_ANGLE 12
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_WORD1 14
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_BYTE3 16 /* KEEP THIS UNTILL PARSING OK. USE THIS BYTE. */
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_WORD2 16
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_WORD3 18
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_WORD4 20
#define BCMXCP_CONFIG_BLOCK_BATTERY_DATA_WORD1 22 /* Undefined at this time.*/
#define BCMXCP_CONFIG_BLOCK_BATTERY_DATA_WORD2 24 /* Per cell inverter shutdown voltage at full rated load. (volt/cell)* 100 */
#define BCMXCP_CONFIG_BLOCK_BATTERY_DATA_WORD3 26 /* LOW BYTE Number of battery strings. HIGH BYTE undefined at this time.*/
#define BCMXCP_CONFIG_BLOCK_EXTENDED_BLOCK_LENGTH 47
#define BCMXCP_CONFIG_BLOCK_PART_NUMBER 48
#define BCMXCP_CONFIG_BLOCK_SERIAL_NUMBER 64
/*Battery block offsets*/
#define BCMXCP_BATTDATA_BLOCK_BATT_TEST_STATUS 0
#define BCMXCP_BATTDATA_BLOCK_BATT_VOLTS_T1 1
#define BCMXCP_BATTDATA_BLOCK_BATT_VOLTS_T2 5
#define BCMXCP_BATTDATA_BLOCK_TEST_DURATION 9
#define BCMXCP_BATTDATA_BLOCK_UTIL_VOLT 10
#define BCMXCP_BATTDATA_BLOCK_INPUT_CURRENT 14
#define BCMXCP_BATTDATA_BLOCK_NUMBER_OF_STRINGS 18
/*BATT_TEST_STATUS for external strings (1 byte each) if BCMXCP_BATTDATA_BLOCK_NUMBER_OF_STRINGS == 0 no external test statuses at all*/
/*next - number of ABM Statuses - at least 1 for internal batteries*/
/* Index for Extende Limits block offsets */
#define BCMXCP_EXT_LIMITS_BLOCK_NOMINAL_INPUT_VOLTAGE 0
#define BCMXCP_EXT_LIMITS_BLOCK_NOMINAL_INPUT_FREQ 2
#define BCMXCP_EXT_LIMITS_BLOCK_NOMINAL_TRUE_POWER 4
#define BCMXCP_EXT_LIMITS_BLOCK_COMM_SPEC_VERSION 6
#define BCMXCP_EXT_LIMITS_BLOCK_FREQ_DEV_LIMIT 8
#define BCMXCP_EXT_LIMITS_BLOCK_VOLTAGE_LOW_DEV_LIMIT 10
#define BCMXCP_EXT_LIMITS_BLOCK_VOLTAGE_HIGE_DEV_LIMIT 12
#define BCMXCP_EXT_LIMITS_BLOCK_PHASE_DEV_LIMIT 14
#define BCMXCP_EXT_LIMITS_BLOCK_LOW_BATT_WARNING 16
#define BCMXCP_EXT_LIMITS_BLOCK_HORN_STATUS 17
#define BCMXCP_EXT_LIMITS_BLOCK_MIN_INPUT_VOLTAGE 18
#define BCMXCP_EXT_LIMITS_BLOCK_MAX_INPUT_VOLTAGE 20
#define BCMXCP_EXT_LIMITS_BLOCK_RETURN_STAB_DELAY 22
#define BCMXCP_EXT_LIMITS_BLOCK_BATT_CAPACITY_RETURN 24
#define BCMXCP_EXT_LIMITS_BLOCK_AMBIENT_TEMP_LOW 25
#define BCMXCP_EXT_LIMITS_BLOCK_AMBIENT_TEMP_HIGE 26
#define BCMXCP_EXT_LIMITS_BLOCK_SLEEP_TH_LOAD 29
#define BCMXCP_EXT_LIMITS_BLOCK_SLEEP_DELAY 30
/* Indexes for meter map */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_AB 0 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_BC 1 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_CA 2 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_AB 3 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_BC 4 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_CA 5 /* mapped */
#define BCMXCP_METER_MAP_INVERTER_VOLTS_AB 6
#define BCMXCP_METER_MAP_INVERTER_VOLTS_BC 7
#define BCMXCP_METER_MAP_INVERTER_VOLTS_CA 8
#define BCMXCP_METER_MAP_BYPASS_VOLTS_AB 9
#define BCMXCP_METER_MAP_BYPASS_VOLTS_BC 10
#define BCMXCP_METER_MAP_BYPASS_VOLTS_CA 11
#define BCMXCP_METER_MAP_MAIN_LOGIC_POWER 12
#define BCMXCP_METER_MAP_SECONDARY_V_PLUS_POWER 13
#define BCMXCP_METER_MAP_SECONDARY_V_MINUS_POWER 14
#define BCMXCP_METER_MAP_INVERTER_AVG_CURRENT_PHASE_A 15
#define BCMXCP_METER_MAP_INVERTER_AVG_CURRENT_PHASE_B 16
#define BCMXCP_METER_MAP_INVERTER_AVG_CURRENT_PHASE_C 17
#define BCMXCP_METER_MAP_INPUT_CURRENT_PHASE_A 18 /* mapped */
#define BCMXCP_METER_MAP_INPUT_CURRENT_PHASE_B 19 /* mapped */
#define BCMXCP_METER_MAP_INPUT_CURRENT_PHASE_C 20 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_WATTS 21
#define BCMXCP_METER_MAP_INPUT_WATTS 22 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VA 23 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VA 24 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_POWER_FACTOR 25 /* mapped */
#define BCMXCP_METER_MAP_INPUT_POWER_FACTOR 26 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_FREQUENCY 27 /* mapped */
#define BCMXCP_METER_MAP_INPUT_FREQUENCY 28 /* mapped */
#define BCMXCP_METER_MAP_INVERTER_FREQUENCY 29
#define BCMXCP_METER_MAP_BYPASS_FREQUENCY 30 /* mapped */
#define BCMXCP_METER_MAP_DC_LINK_VOLTS_DC 31
#define BCMXCP_METER_MAP_BATTERY_CURRENT 32 /* mapped */
#define BCMXCP_METER_MAP_BATTERY_VOLTAGE 33 /* mapped */
#define BCMXCP_METER_MAP_PERCENT_BATTERY_LEFT 34 /* mapped */
#define BCMXCP_METER_MAP_BATTERY_TIME_REMAINING 35 /* mapped */
#define BCMXCP_METER_MAP_BATTERY_CHARGE_TIME 36
#define BCMXCP_METER_MAP_PEAK_INVERTER_CURRENT_PHASE_A 37
#define BCMXCP_METER_MAP_PEAK_INVERTER_CURRENT_PHASE_B 38
#define BCMXCP_METER_MAP_PEAK_INVERTER_CURRENT_PHASE_C 39
#define BCMXCP_METER_MAP_AVG_INPUT_CURRENT_3_PHASE_SUM 40
#define BCMXCP_METER_MAP_BATTERY_DCUV_BAR_CHART 41 /* mapped */
#define BCMXCP_METER_MAP_INPUT_CURRENT_BAR_CHART 42
#define BCMXCP_METER_MAP_LOW_BATTERY_WARNING_V_BAR_CHART 43 /* mapped */
#define BCMXCP_METER_MAP_DC_VOLTS_BAR_CHART 44
#define BCMXCP_METER_MAP_BATTERY_CHARGING_CURRENT_BAR_CHART 45
#define BCMXCP_METER_MAP_BATTERY_DISCHARGING_CURRENT_BAR_CHART 46 /* mapped */
#define BCMXCP_METER_MAP_PERCENT_LOAD_PHASE_A 47 /* mapped */
#define BCMXCP_METER_MAP_PERCENT_LOAD_PHASE_B 48 /* mapped */
#define BCMXCP_METER_MAP_PERCENT_LOAD_PHASE_C 49 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VA_PHASE_A 50 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VA_PHASE_B 51 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VA_PHASE_C 52 /* mapped */
#define BCMXCP_METER_MAP_BYPASS_VOLTS_PHASE_A 53 /* mapped */
#define BCMXCP_METER_MAP_BYPASS_VOLTS_PHASE_B 54 /* mapped */
#define BCMXCP_METER_MAP_BYPASS_VOLTS_PHASE_C 55 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_PHASE_A 56 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_PHASE_B 57 /* mapped */
#define BCMXCP_METER_MAP_INPUT_VOLTS_PHASE_C 58 /* mapped */
#define BCMXCP_METER_MAP_INVERTER_VOLTS_PHASE_A 59
#define BCMXCP_METER_MAP_INVERTER_VOLTS_PHASE_B 60
#define BCMXCP_METER_MAP_INVERTER_VOLTS_PHASE_C 61
#define BCMXCP_METER_MAP_AMBIENT_TEMPERATURE 62 /* mapped */
#define BCMXCP_METER_MAP_HEATSINK_TEMPERATURE 63 /* mapped */
#define BCMXCP_METER_MAP_POWER_SUPPLY_TEMPERATURE 64 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_A 65 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_B 66 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_C 67 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_A_BAR_CHART 68 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_B_BAR_CHART 69 /* mapped */
#define BCMXCP_METER_MAP_LOAD_CURRENT_PHASE_C_BAR_CHART 70 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VA_BAR_CHART 71 /* mapped */
#define BCMXCP_METER_MAP_DATE 72 /* mapped */
#define BCMXCP_METER_MAP_TIME 73 /* mapped */
#define BCMXCP_METER_MAP_POSITIVE_DC_LINK_RAIL_VOLTAGE 74
#define BCMXCP_METER_MAP_NEGATIVE_DC_LINK_RAIL_VOLTAGE 75
#define BCMXCP_METER_MAP_AUTO_BALANCE_VOLTAGE_DC 76
#define BCMXCP_METER_MAP_BATTERY_TEMPERATURE 77 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_A 78 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_B 79 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_VOLTS_C 80 /* mapped */
#define BCMXCP_METER_MAP_NEUTRAL_CURRENT 81
#define BCMXCP_METER_MAP_OUTPUT_WATTS_PHASE_A 82 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_WATTS_PHASE_B 83 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_WATTS_PHASE_C 84 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_WATTS_PHASE_A_B_C_BAR_CHART 85 /* mapped */
#define BCMXCP_METER_MAP_RECTIFIER_DC_CURRENT 86
#define BCMXCP_METER_MAP_POSITIVE_BATTERY_VOLTAGE 87
#define BCMXCP_METER_MAP_NEGATIVE_BATTERY_VOLTAGE 88
#define BCMXCP_METER_MAP_POSITIVE_BATTERY_CURRENT 89
#define BCMXCP_METER_MAP_NEGATIVE_BATTERY_CURRENT 90
#define BCMXCP_METER_MAP_LINE_EVENT_COUNTER 91 /* mapped */
#define BCMXCP_METER_MAP_OUTPUT_V1_PERCENT 92
#define BCMXCP_METER_MAP_OUTPUT_V2_PERCENT 93
#define BCMXCP_METER_MAP_OUTPUT_V3_PERCENT 94
#define BCMXCP_METER_MAP_OUTPUT_I1_PERCENT 95
#define BCMXCP_METER_MAP_OUTPUT_I2_PERCENT 96
#define BCMXCP_METER_MAP_OUTPUT_I3_PERCENT 97
#define BCMXCP_METER_MAP_INPUT_V1_PERCENT 98
#define BCMXCP_METER_MAP_INPUT_V2_PERCENT 99
#define BCMXCP_METER_MAP_INPUT_V3_PERCENT 100
#define BCMXCP_METER_MAP_INPUT_I1_PERCENT 101
#define BCMXCP_METER_MAP_INPUT_I2_PERCENT 102
#define BCMXCP_METER_MAP_INPUT_I3_PERCENT 103
#define BCMXCP_METER_MAP_GROUND_CURRENT 104
#define BCMXCP_METER_MAP_OUTPUT_CREST_FACTOR_L1 105
#define BCMXCP_METER_MAP_OUTPUT_CREST_FACTOR_L2 106
#define BCMXCP_METER_MAP_OUTPUT_CREST_FACTOR_L3 107
#define BCMXCP_METER_MAP_OUTPUT_KW_HOUR 108
#define BCMXCP_METER_MAP_INPUT_VOLTAGE_THD_LINE1 109
#define BCMXCP_METER_MAP_INPUT_VOLTAGE_THD_LINE2 110
#define BCMXCP_METER_MAP_INPUT_VOLTAGE_THD_LINE3 111
#define BCMXCP_METER_MAP_INPUT_CURRENT_THD_LINE1 112
#define BCMXCP_METER_MAP_INPUT_CURRENT_THD_LINE2 113
#define BCMXCP_METER_MAP_INPUT_CURRENT_THD_LINE3 114
#define BCMXCP_METER_MAP_OUTPUT_VOLTAGE_THD_LINE1 115
#define BCMXCP_METER_MAP_OUTPUT_VOLTAGE_THD_LINE2 116
#define BCMXCP_METER_MAP_OUTPUT_VOLTAGE_THD_LINE3 117
#define BCMXCP_METER_MAP_OUTPUT_CURRENT_THD_LINE1 118
#define BCMXCP_METER_MAP_OUTPUT_CURRENT_THD_LINE2 119
#define BCMXCP_METER_MAP_OUTPUT_CURRENT_THD_LINE3 120
#define BCMXCP_METER_MAP_INPUT_CREST_FACTOR_L1 121
#define BCMXCP_METER_MAP_INPUT_CREST_FACTOR_L2 122
#define BCMXCP_METER_MAP_INPUT_CREST_FACTOR_L3 123
#define BCMXCP_METER_MAP_INPUT_KW_HOUR 124
#define BCMXCP_METER_MAP_BATTERY_LIFE_REMAINING 125
#define BCMXCP_METER_MAP_SECONDARY_NEUTRAL_CURRENT 126
#define BCMXCP_METER_MAP_SECONDARY_GROUND_CURRENT 127
#define BCMXCP_METER_MAP_HOURS_OF_OPERATION 128
/* Indexes for alarm map */
#define BCMXCP_ALARM_INVERTER_AC_OVER_VOLTAGE 0
#define BCMXCP_ALARM_INVERTER_AC_UNDER_VOLTAGE 1
#define BCMXCP_ALARM_INVERTER_OVER_OR_UNDER_FREQ 2
#define BCMXCP_ALARM_BYPASS_AC_OVER_VOLTAGE 3
#define BCMXCP_ALARM_BYPASS_AC_UNDER_VOLTAGE 4
#define BCMXCP_ALARM_BYPASS_OVER_OR_UNDER_FREQ 5
#define BCMXCP_ALARM_INPUT_AC_OVER_VOLTAGE 6
#define BCMXCP_ALARM_INPUT_AC_UNDER_VOLTAGE 7
#define BCMXCP_ALARM_INPUT_UNDER_OR_OVER_FREQ 8
#define BCMXCP_ALARM_OUTPUT_OVER_VOLTAGE 9
#define BCMXCP_ALARM_OUTPUT_UNDER_VOLTAGE 10
#define BCMXCP_ALARM_OUTPUT_UNDER_OR_OVER_FREQ 11
#define BCMXCP_ALARM_REMOTE_EMERGENCY_PWR_OFF 12
#define BCMXCP_ALARM_REMOTE_GO_TO_BYPASS 13
#define BCMXCP_ALARM_BUILDING_ALARM_6 14
#define BCMXCP_ALARM_BUILDING_ALARM_5 15
#define BCMXCP_ALARM_BUILDING_ALARM_4 16
#define BCMXCP_ALARM_BUILDING_ALARM_3 17
#define BCMXCP_ALARM_BUILDING_ALARM_2 18
#define BCMXCP_ALARM_BUILDING_ALARM_1 19
#define BCMXCP_ALARM_STATIC_SWITCH_OVER_TEMP 20
#define BCMXCP_ALARM_CHARGER_OVER_TEMP 21
#define BCMXCP_ALARM_CHARGER_LOGIC_PWR_FAIL 22
#define BCMXCP_ALARM_CHARGER_OVER_VOLTAGE_OR_CURRENT 23
#define BCMXCP_ALARM_INVERTER_OVER_TEMP 24
#define BCMXCP_ALARM_OUTPUT_OVERLOAD 25
#define BCMXCP_ALARM_RECTIFIER_INPUT_OVER_CURRENT 26
#define BCMXCP_ALARM_INVERTER_OUTPUT_OVER_CURRENT 27
#define BCMXCP_ALARM_DC_LINK_OVER_VOLTAGE 28
#define BCMXCP_ALARM_DC_LINK_UNDER_VOLTAGE 29
#define BCMXCP_ALARM_RECTIFIER_FAILED 30
#define BCMXCP_ALARM_INVERTER_FAULT 31
#define BCMXCP_ALARM_BATTERY_CONNECTOR_FAIL 32
#define BCMXCP_ALARM_BYPASS_BREAKER_FAIL 33
#define BCMXCP_ALARM_CHARGER_FAIL 34
#define BCMXCP_ALARM_RAMP_UP_FAILED 35
#define BCMXCP_ALARM_STATIC_SWITCH_FAILED 36
#define BCMXCP_ALARM_ANALOG_AD_REF_FAIL 37
#define BCMXCP_ALARM_BYPASS_UNCALIBRATED 38
#define BCMXCP_ALARM_RECTIFIER_UNCALIBRATED 39
#define BCMXCP_ALARM_OUTPUT_UNCALIBRATED 40
#define BCMXCP_ALARM_INVERTER_UNCALIBRATED 41
#define BCMXCP_ALARM_DC_VOLT_UNCALIBRATED 42
#define BCMXCP_ALARM_OUTPUT_CURRENT_UNCALIBRATED 43
#define BCMXCP_ALARM_RECTIFIER_CURRENT_UNCALIBRATED 44
#define BCMXCP_ALARM_BATTERY_CURRENT_UNCALIBRATED 45
#define BCMXCP_ALARM_INVERTER_ON_OFF_STAT_FAIL 46
#define BCMXCP_ALARM_BATTERY_CURRENT_LIMIT 47
#define BCMXCP_ALARM_INVERTER_STARTUP_FAIL 48
#define BCMXCP_ALARM_ANALOG_BOARD_AD_STAT_FAIL 49
#define BCMXCP_ALARM_OUTPUT_CURRENT_OVER_100 50
#define BCMXCP_ALARM_BATTERY_GROUND_FAULT 51
#define BCMXCP_ALARM_WAITING_FOR_CHARGER_SYNC 52
#define BCMXCP_ALARM_NV_RAM_FAIL 53
#define BCMXCP_ALARM_ANALOG_BOARD_AD_TIMEOUT 54
#define BCMXCP_ALARM_SHUTDOWN_IMMINENT 55
#define BCMXCP_ALARM_BATTERY_LOW 56
#define BCMXCP_ALARM_UTILITY_FAIL 57
#define BCMXCP_ALARM_OUTPUT_SHORT_CIRCUIT 58
#define BCMXCP_ALARM_UTILITY_NOT_PRESENT 59
#define BCMXCP_ALARM_FULL_TIME_CHARGING 60
#define BCMXCP_ALARM_FAST_BYPASS_COMMAND 61
#define BCMXCP_ALARM_AD_ERROR 62
#define BCMXCP_ALARM_INTERNAL_COM_FAIL 63
#define BCMXCP_ALARM_RECTIFIER_SELFTEST_FAIL 64
#define BCMXCP_ALARM_RECTIFIER_EEPROM_FAIL 65
#define BCMXCP_ALARM_RECTIFIER_EPROM_FAIL 66
#define BCMXCP_ALARM_INPUT_LINE_VOLTAGE_LOSS 67
#define BCMXCP_ALARM_BATTERY_DC_OVER_VOLTAGE 68
#define BCMXCP_ALARM_POWER_SUPPLY_OVER_TEMP 69
#define BCMXCP_ALARM_POWER_SUPPLY_FAIL 70
#define BCMXCP_ALARM_POWER_SUPPLY_5V_FAIL 71
#define BCMXCP_ALARM_POWER_SUPPLY_12V_FAIL 72
#define BCMXCP_ALARM_HEATSINK_OVER_TEMP 73
#define BCMXCP_ALARM_HEATSINK_TEMP_SENSOR_FAIL 74
#define BCMXCP_ALARM_RECTIFIER_CURRENT_OVER_125 75
#define BCMXCP_ALARM_RECTIFIER_FAULT_INTERRUPT_FAIL 76
#define BCMXCP_ALARM_RECTIFIER_POWER_CAPASITOR_FAIL 77
#define BCMXCP_ALARM_INVERTER_PROGRAM_STACK_ERROR 78
#define BCMXCP_ALARM_INVERTER_BOARD_SELFTEST_FAIL 79
#define BCMXCP_ALARM_INVERTER_AD_SELFTEST_FAIL 80
#define BCMXCP_ALARM_INVERTER_RAM_SELFTEST_FAIL 81
#define BCMXCP_ALARM_NV_MEMORY_CHECKSUM_FAIL 82
#define BCMXCP_ALARM_PROGRAM_CHECKSUM_FAIL 83
#define BCMXCP_ALARM_INVERTER_CPU_SELFTEST_FAIL 84
#define BCMXCP_ALARM_NETWORK_NOT_RESPONDING 85
#define BCMXCP_ALARM_FRONT_PANEL_SELFTEST_FAIL 86
#define BCMXCP_ALARM_NODE_EEPROM_VERIFICATION_ERROR 87
#define BCMXCP_ALARM_OUTPUT_AC_OVER_VOLT_TEST_FAIL 88
#define BCMXCP_ALARM_OUTPUT_DC_OVER_VOLTAGE 89
#define BCMXCP_ALARM_INPUT_PHASE_ROTATION_ERROR 90
#define BCMXCP_ALARM_INVERTER_RAMP_UP_TEST_FAILED 91
#define BCMXCP_ALARM_INVERTER_OFF_COMMAND 92
#define BCMXCP_ALARM_INVERTER_ON_COMMAND 93
#define BCMXCP_ALARM_TO_BYPASS_COMMAND 94
#define BCMXCP_ALARM_FROM_BYPASS_COMMAND 95
#define BCMXCP_ALARM_AUTO_MODE_COMMAND 96
#define BCMXCP_ALARM_EMERGENCY_SHUTDOWN_COMMAND 97
#define BCMXCP_ALARM_SETUP_SWITCH_OPEN 98
#define BCMXCP_ALARM_INVERTER_OVER_VOLT_INT 99
#define BCMXCP_ALARM_INVERTER_UNDER_VOLT_INT 100
#define BCMXCP_ALARM_ABSOLUTE_DCOV_ACOV 101
#define BCMXCP_ALARM_PHASE_A_CURRENT_LIMIT 102
#define BCMXCP_ALARM_PHASE_B_CURRENT_LIMIT 103
#define BCMXCP_ALARM_PHASE_C_CURRENT_LIMIT 104
#define BCMXCP_ALARM_BYPASS_NOT_AVAILABLE 105
#define BCMXCP_ALARM_RECTIFIER_BREAKER_OPEN 106
#define BCMXCP_ALARM_BATTERY_CONTACTOR_OPEN 107
#define BCMXCP_ALARM_INVERTER_CONTACTOR_OPEN 108
#define BCMXCP_ALARM_BYPASS_BREAKER_OPEN 109
#define BCMXCP_ALARM_INV_BOARD_ACOV_INT_TEST_FAIL 110
#define BCMXCP_ALARM_INVERTER_OVER_TEMP_TRIP 111
#define BCMXCP_ALARM_INV_BOARD_ACUV_INT_TEST_FAIL 112
#define BCMXCP_ALARM_INVERTER_VOLTAGE_FEEDBACK_ERROR 113
#define BCMXCP_ALARM_DC_UNDER_VOLTAGE_TIMEOUT 114
#define BCMXCP_ALARM_AC_UNDER_VOLTAGE_TIMEOUT 115
#define BCMXCP_ALARM_DC_UNDER_VOLTAGE_WHILE_CHARGE 116
#define BCMXCP_ALARM_INVERTER_VOLTAGE_BIAS_ERROR 117
#define BCMXCP_ALARM_RECTIFIER_PHASE_ROTATION 118
#define BCMXCP_ALARM_BYPASS_PHASER_ROTATION 119
#define BCMXCP_ALARM_SYSTEM_INTERFACE_BOARD_FAIL 120
#define BCMXCP_ALARM_PARALLEL_BOARD_FAIL 121
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_A 122
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_B 123
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_C 124
#define BCMXCP_ALARM_DC_OVER_VOLTAGE_TIMEOUT 125
#define BCMXCP_ALARM_BATTERY_TOTALLY_DISCHARGED 126
#define BCMXCP_ALARM_INVERTER_PHASE_BIAS_ERROR 127
#define BCMXCP_ALARM_INVERTER_VOLTAGE_BIAS_ERROR_2 128
#define BCMXCP_ALARM_DC_LINK_BLEED_COMPLETE 129
#define BCMXCP_ALARM_LARGE_CHARGER_INPUT_CURRENT 130
#define BCMXCP_ALARM_INV_VOLT_TOO_LOW_FOR_RAMP_LEVEL 131
#define BCMXCP_ALARM_LOSS_OF_REDUNDANCY 132
#define BCMXCP_ALARM_LOSS_OF_SYNC_BUS 133
#define BCMXCP_ALARM_RECTIFIER_BREAKER_SHUNT_TRIP 134
#define BCMXCP_ALARM_LOSS_OF_CHARGER_SYNC 135
#define BCMXCP_ALARM_INVERTER_LOW_LEVEL_TEST_TIMEOUT 136
#define BCMXCP_ALARM_OUTPUT_BREAKER_OPEN 137
#define BCMXCP_ALARM_CONTROL_POWER_ON 138
#define BCMXCP_ALARM_INVERTER_ON 139
#define BCMXCP_ALARM_CHARGER_ON 140
#define BCMXCP_ALARM_BYPASS_ON 141
#define BCMXCP_ALARM_BYPASS_POWER_LOSS 142
#define BCMXCP_ALARM_ON_MANUAL_BYPASS 143
#define BCMXCP_ALARM_BYPASS_MANUAL_TURN_OFF 144
#define BCMXCP_ALARM_INVERTER_BLEEDING_DC_LINK_VOLT 145
#define BCMXCP_ALARM_CPU_ISR_ERROR 146
#define BCMXCP_ALARM_SYSTEM_ISR_RESTART 147
#define BCMXCP_ALARM_PARALLEL_DC 148
#define BCMXCP_ALARM_BATTERY_NEEDS_SERVICE 149
#define BCMXCP_ALARM_BATTERY_CHARGING 150
#define BCMXCP_ALARM_BATTERY_NOT_CHARGED 151
#define BCMXCP_ALARM_DISABLED_BATTERY_TIME 152
#define BCMXCP_ALARM_SERIES_7000_ENABLE 153
#define BCMXCP_ALARM_OTHER_UPS_ON 154
#define BCMXCP_ALARM_PARALLEL_INVERTER 155
#define BCMXCP_ALARM_UPS_IN_PARALLEL 156
#define BCMXCP_ALARM_OUTPUT_BREAKER_REALY_FAIL 157
#define BCMXCP_ALARM_CONTROL_POWER_OFF 158
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_A 159
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_B 160
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_C 161
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_A 162
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_B 163
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_C 164
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_A 165
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_B 166
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_C 167
#define BCMXCP_ALARM_UPS_ON_BATTERY 168
#define BCMXCP_ALARM_UPS_ON_BYPASS 169
#define BCMXCP_ALARM_LOAD_DUMPED 170
#define BCMXCP_ALARM_LOAD_ON_INVERTER 171
#define BCMXCP_ALARM_UPS_ON_COMMAND 172
#define BCMXCP_ALARM_UPS_OFF_COMMAND 173
#define BCMXCP_ALARM_LOW_BATTERY_SHUTDOWN 174
#define BCMXCP_ALARM_AUTO_ON_ENABLED 175
#define BCMXCP_ALARM_SOFTWARE_INCOMPABILITY_DETECTED 176
#define BCMXCP_ALARM_INVERTER_TEMP_SENSOR_FAILED 177
#define BCMXCP_ALARM_DC_START_OCCURED 178
#define BCMXCP_ALARM_IN_PARALLEL_OPERATION 179
#define BCMXCP_ALARM_SYNCING_TO_BYPASS 180
#define BCMXCP_ALARM_RAMPING_UPS_UP 181
#define BCMXCP_ALARM_INVERTER_ON_DELAY 182
#define BCMXCP_ALARM_CHARGER_ON_DELAY 183
#define BCMXCP_ALARM_WAITING_FOR_UTIL_INPUT 184
#define BCMXCP_ALARM_CLOSE_BYPASS_BREAKER 185
#define BCMXCP_ALARM_TEMPORARY_BYPASS_OPERATION 186
#define BCMXCP_ALARM_SYNCING_TO_OUTPUT 187
#define BCMXCP_ALARM_BYPASS_FAILURE 188
#define BCMXCP_ALARM_AUTO_OFF_COMMAND_EXECUTED 189
#define BCMXCP_ALARM_AUTO_ON_COMMAND_EXECUTED 190
#define BCMXCP_ALARM_BATTERY_TEST_FAILED 191
#define BCMXCP_ALARM_FUSE_FAIL 192
#define BCMXCP_ALARM_FAN_FAIL 193
#define BCMXCP_ALARM_SITE_WIRING_FAULT 194
#define BCMXCP_ALARM_BACKFEED_CONTACTOR_FAIL 195
#define BCMXCP_ALARM_ON_BUCK 196
#define BCMXCP_ALARM_ON_BOOST 197
#define BCMXCP_ALARM_ON_DOUBLE_BOOST 198
#define BCMXCP_ALARM_BATTERIES_DISCONNECTED 199
#define BCMXCP_ALARM_UPS_CABINET_OVER_TEMP 200
#define BCMXCP_ALARM_TRANSFORMER_OVER_TEMP 201
#define BCMXCP_ALARM_AMBIENT_UNDER_TEMP 202
#define BCMXCP_ALARM_AMBIENT_OVER_TEMP 203
#define BCMXCP_ALARM_CABINET_DOOR_OPEN 204
#define BCMXCP_ALARM_CABINET_DOOR_OPEN_VOLT_PRESENT 205
#define BCMXCP_ALARM_AUTO_SHUTDOWN_PENDING 206
#define BCMXCP_ALARM_TAP_SWITCHING_REALY_PENDING 207
#define BCMXCP_ALARM_UNABLE_TO_CHARGE_BATTERIES 208
#define BCMXCP_ALARM_STARTUP_FAILURE_CHECK_EPO 209
#define BCMXCP_ALARM_AUTOMATIC_STARTUP_PENDING 210
#define BCMXCP_ALARM_MODEM_FAILED 211
#define BCMXCP_ALARM_INCOMING_MODEM_CALL_STARTED 212
#define BCMXCP_ALARM_OUTGOING_MODEM_CALL_STARTED 213
#define BCMXCP_ALARM_MODEM_CONNECTION_ESTABLISHED 214
#define BCMXCP_ALARM_MODEM_CALL_COMPLETED_SUCCESS 215
#define BCMXCP_ALARM_MODEM_CALL_COMPLETED_FAIL 216
#define BCMXCP_ALARM_INPUT_BREAKER_FAIL 217
#define BCMXCP_ALARM_SYSINIT_IN_PROGRESS 218
#define BCMXCP_ALARM_AUTOCALIBRATION_FAIL 219
#define BCMXCP_ALARM_SELECTIVE_TRIP_OF_MODULE 220
#define BCMXCP_ALARM_INVERTER_OUTPUT_FAILURE 221
#define BCMXCP_ALARM_ABNORMAL_OUTPUT_VOLT_AT_STARTUP 222
#define BCMXCP_ALARM_RECTIFIER_OVER_TEMP 223
#define BCMXCP_ALARM_CONFIG_ERROR 224
#define BCMXCP_ALARM_REDUNDANCY_LOSS_DUE_TO_OVERLOAD 225
#define BCMXCP_ALARM_ON_ALTERNATE_AC_SOURCE 226
#define BCMXCP_ALARM_IN_HIGH_EFFICIENCY_MODE 227
#define BCMXCP_ALARM_SYSTEM_NOTICE_ACTIVE 228
#define BCMXCP_ALARM_SYSTEM_ALARM_ACTIVE 229
#define BCMXCP_ALARM_ALTERNATE_POWER_SOURCE_NOT_AVAILABLE 230
#define BCMXCP_ALARM_CURRENT_BALANCE_FAILURE 231
#define BCMXCP_ALARM_CHECK_AIR_FILTER 232
#define BCMXCP_ALARM_SUBSYSTEM_NOTICE_ACTIVE 233
#define BCMXCP_ALARM_SUBSYSTEM_ALARM_ACTIVE 234
#define BCMXCP_ALARM_CHARGER_ON_COMMAND 235
#define BCMXCP_ALARM_CHARGER_OFF_COMMAND 236
#define BCMXCP_ALARM_UPS_NORMAL 237
#define BCMXCP_ALARM_INVERTER_PHASE_ROTATION 238
#define BCMXCP_ALARM_UPS_OFF 239
#define BCMXCP_ALARM_EXTERNAL_COMMUNICATION_FAILURE 240
#define BCMXCP_ALARM_BATTERY_TEST_INPROGRESS 256
#define BCMXCP_ALARM_SYSTEM_TEST_INPROGRESS 257
#define BCMXCP_ALARM_BATTERY_TEST_ABORTED 258
#define BCMXCP_COMMAND_MAP_MAX 208 /* Max no of entries in BCM/XCP meter map (adjusted upwards to nearest multi of 8) */
#define BCMXCP_METER_MAP_MAX 136 /* Max no of entries in BCM/XCP meter map (adjusted upwards to nearest multi of 8) */
#define BCMXCP_ALARM_MAP_MAX 264 /* Max no of entries in BCM/XCP alarm map (adjusted upwards to nearest multi of 8) */
/* Return codes for XCP ACK block responses */
#define BCMXCP_RETURN_ACCEPTED 0x31 /* Accepted and executed (or execution in progress) */
#define BCMXCP_RETURN_NOT_IMPLEMENTED 0x32 /* Recognized but not implemented */
#define BCMXCP_RETURN_BUSY 0x33 /* Recognized but not currently able to execute (busy) */
#define BCMXCP_RETURN_UNRECOGNISED 0x34 /* Unrecognized -- e.g., command byte not in valid range, or command has been corrupted (bad checksum) */
#define BCMXCP_RETURN_PARAMETER_OUT_OF_RANGE 0x35 /* Command recognized, but its Parameter value is out of range */
#define BCMXCP_RETURN_INVALID_PARAMETER 0x36 /* Command recognized, but its Parameter is invalid (e.g., no such parameter, bad Outlet number) */
#define BCMXCP_RETURN_ACCEPTED_PARAMETER_ADJUST 0x37 /* Accepted, with parameter adjusted to nearest good value */
/*#define BCMXCP_RETURN_READONLY 0x38 */ /* Parameter is Read-only - cannot be written (at this privilege level) (this is not listed in spec document */
/* UPS status */
#define BCMXCP_STATUS_ONLINE 0x50
#define BCMXCP_STATUS_ONBATTERY 0xf0
#define BCMXCP_STATUS_OVERLOAD 0xe0
#define BCMXCP_STATUS_TRIM 0x63
#define BCMXCP_STATUS_BOOST1 0x61
#define BCMXCP_STATUS_BOOST2 0x62
#define BCMXCP_STATUS_BYPASS 0x60
#define BCMXCP_STATUS_OFF 0x10
/* UPS topology block info */
#define BCMXCP_TOPOLOGY_NONE 0x0000 /* None; use the Table of Elements */
#define BCMXCP_TOPOLOGY_OFFLINE_SWITCHER_1P 0x0010 /* Off-line switcher, Single Phase */
#define BCMXCP_TOPOLOGY_LINEINT_UPS_1P 0x0020 /* Line-Interactive UPS, Single Phase */
#define BCMXCP_TOPOLOGY_LINEINT_UPS_2P 0x0021 /* Line-Interactive UPS, Two Phase */
#define BCMXCP_TOPOLOGY_LINEINT_UPS_3P 0x0022 /* Line-Interactive UPS, Three Phase */
#define BCMXCP_TOPOLOGY_DUAL_AC_ONLINE_UPS_1P 0x0030 /* Dual AC Input, On-Line UPS, Single Phase */
#define BCMXCP_TOPOLOGY_DUAL_AC_ONLINE_UPS_2P 0x0031 /* Dual AC Input, On-Line UPS, Two Phase */
#define BCMXCP_TOPOLOGY_DUAL_AC_ONLINE_UPS_3P 0x0032 /* Dual AC Input, On-Line UPS, Three Phase */
#define BCMXCP_TOPOLOGY_ONLINE_UPS_1P 0x0040 /* On-Line UPS, Single Phase */
#define BCMXCP_TOPOLOGY_ONLINE_UPS_2P 0x0041 /* On-Line UPS, Two Phase */
#define BCMXCP_TOPOLOGY_ONLINE_UPS_3P 0x0042 /* On-Line UPS, Three Phase */
#define BCMXCP_TOPOLOGY_PARA_REDUND_ONLINE_UPS_1P 0x0050 /* Parallel Redundant On-Line UPS, Single Phase */
#define BCMXCP_TOPOLOGY_PARA_REDUND_ONLINE_UPS_2P 0x0051 /* Parallel Redundant On-Line UPS, Two Phase */
#define BCMXCP_TOPOLOGY_PARA_REDUND_ONLINE_UPS_3P 0x0052 /* Parallel Redundant On-Line UPS, Three Phase */
#define BCMXCP_TOPOLOGY_PARA_CAPACITY_ONLINE_UPS_1P 0x0060 /* Parallel for Capacity On-Line UPS, Single Phase */
#define BCMXCP_TOPOLOGY_PARA_CAPACITY_ONLINE_UPS_2P 0x0061 /* Parallel for Capacity On-Line UPS, Two Phase */
#define BCMXCP_TOPOLOGY_PARA_CAPACITY_ONLINE_UPS_3P 0x0062 /* Parallel for Capacity On-Line UPS, Three Phase */
#define BCMXCP_TOPOLOGY_SYSTEM_BYPASS_MODULE_3P 0x0102 /* System Bypass Module, Three Phase */
#define BCMXCP_TOPOLOGY_HOT_TIE_CABINET_3P 0x0122 /* Hot-Tie Cabinet, Three Phase */
#define BCMXCP_TOPOLOGY_OUTLET_CONTROLLER_1P 0x0200 /* Outlet Controller, Single Phase */
#define BCMXCP_TOPOLOGY_DUAL_AC_STATIC_SWITCH_3P 0x0222 /* Dual AC Input Static Switch Module, 3 Phase */
typedef struct { /* Entry in BCM/XCP - UPS mapping table */
const char *command_desc; /* Description of this command */
unsigned char command_byte; /* The command byte for this command, 0 = not supported */
} BCMXCP_COMMAND_MAP_ENTRY_t;
extern BCMXCP_COMMAND_MAP_ENTRY_t bcmxcp_command_map[BCMXCP_COMMAND_MAP_MAX];
typedef struct { /* Entry in BCM/XCP - UPS - NUT mapping table */
const char *nut_entity; /* The NUT variable name */
unsigned char format; /* The format of the data - float, long etc */
unsigned int meter_block_index; /* The position of this meter in the UPS meter block */
} BCMXCP_METER_MAP_ENTRY_t;
extern BCMXCP_METER_MAP_ENTRY_t bcmxcp_meter_map[BCMXCP_METER_MAP_MAX];
typedef struct { /* Entry in BCM/XCP - UPS mapping table */
int alarm_block_index; /* Index of this alarm in alarm block. -1 = not existing */
const char *alarm_desc; /* Description of this alarm */
} BCMXCP_ALARM_MAP_ENTRY_t;
extern BCMXCP_ALARM_MAP_ENTRY_t bcmxcp_alarm_map[BCMXCP_ALARM_MAP_MAX];
typedef struct { /* A place to store status info and other data not for NUT */
unsigned char topology_mask; /* Configuration block byte 16, masks valid status bits */
unsigned int lowbatt; /* Seconds of runtime left left when LB alarm is set */
unsigned int shutdowndelay; /* Shutdown delay in seconds, from ups.conf */
int alarm_on_battery; /* On Battery alarm active? */
int alarm_low_battery; /* Battery Low alarm active? */
int alarm_replace_battery; /* Battery needs replacement! */
} BCMXCP_STATUS_t;
extern BCMXCP_STATUS_t bcmxcp_status;
int checksum_test(const unsigned char*);
unsigned char calc_checksum(const unsigned char *buf);
/* from usbhid-ups.h */
typedef struct {
const long xcp_value; /* XCP value */
const char *nut_value; /* NUT value */
const char *(*fun)(double xcp_value); /* optional XCP to NUT mapping */
double (*nuf)(const char *nut_value); /* optional NUT to HID mapping */
} info_lkp_t;
/* use explicit booleans */
#ifndef FALSE
typedef enum ebool { FALSE, TRUE } bool_t;
#else
typedef int bool_t;
#endif
#endif /*_POWERWARE_H */