1
/* bcmxcp.h -- header for (BCM/XCP) protocol module
3
* Copyright (c) 2002, Martin Schroeder
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. Neither the name of Martin Schroeder nor the names of his contributors
17
* may be used to endorse or promote products derived from this software
18
* without specific prior written permission.
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
* POSSIBILITY OF SUCH DAMAGE.
2
* bcmxcp.h -- header for BCM/XCP module
35
5
#ifndef _POWERWARE_H
36
6
#define _POWERWARE_H
41
char *FreqTol[3] = {"+/-2%", "+/-5%", "+/-7"};
42
char *ABMStatus[4] = {"Charging", "Discharging", "Floating", "Resting"};
44
#define PW_MAX_TRY 3 /* How often we try to get valid data from the ups in */
45
/* case of a read error */
61
#define PW_COMMAND_START_BYTE 0xAB
64
#define PW_SYSTEM_INFO1 0x31 /* Model name, ... */
65
#define PW_SYSTEM_MODE 0x33 /* On Line, On Bypass, ... */
66
#define PW_SYSTEM_STATUS 0x34 /* Current UPS status (Load, utility,...) */
67
#define PW_SYSTEM_INFO2 0x36 /* Model serial#, ... */
68
#define PW_ABM_STATUS 0x3B /* Charging, floating, ... */
69
#define PW_SYSTEM_SETTINGS 0x3C /* Configuration (Bypass thresholds,...) */
72
#endif /* _POWERWARE_H */
11
char *FreqTol[3] = {"+/-2%", "+/-5%", "+/-7"};
12
char *ABMStatus[4] = {"Charging", "Discharging", "Floating", "Resting"};
14
#define PW_MAX_TRY 3 /* How many times we try to send data. */
16
#define PW_COMMAND_START_BYTE (unsigned char)0xAB
18
/* No Autorisation required */
19
#define PW_ID_BLOCK_REQ (unsigned char)0x31 /* Model name, ... length 1 */
20
#define PW_STATUS_REQ (unsigned char)0x33 /* On Line, On Bypass, ... length 1-2 */
21
#define PW_METER_BLOCK_REQ (unsigned char)0x34 /* Current UPS status (Load, utility,...) length 1 */
22
#define PW_CUR_ALARM_REQ (unsigned char)0x35 /* Current alarm and event request. length 1 */
23
#define PW_CONFIG_BLOC_REQ (unsigned char)0x36 /* Model serial#, ... length 1 */
24
#define PW_BAT_TEST_REQ (unsigned char)0x3B /* Charging, floating, ... length 1 */
25
#define PW_LIMIT_BLOCK_REQ (unsigned char)0x3C /* Configuration (Bypass thresholds,...). length 1 */
26
#define PW_TEST_RESULT_REQ (unsigned char)0x3F /* ??. length 1 */
27
#define PW_COMMAND_LIST_REQ (unsigned char)0x40 /* ??. length 1 */
28
#define PW_OUT_MON_BLOCK_REQ (unsigned char)0x41 /* Outlet monitor request length 1 */
29
#define PW_COM_CAP_REQ (unsigned char)0x42 /* Request communication capabilities. length 2 */
30
#define PW_UPS_TOP_DATA_REQ (unsigned char)0x43 /* Requsest ups topology data requset. length 1 */
32
unsigned char AUTHOR[4] = {0xCF, 0x69, 0xE8, 0xD5}; /* Autorisation command */
33
/* Need autorisation before this commands */
34
#define PW_UPS_ON (unsigned char)0x89 /* UPS on command. length 1-2 */
35
#define PW_LOAD_OFF_RESTART (unsigned char)0x8A /* Delayed LoadPowerOff & Restart command. length 2-4 */
36
#define PW_UPS_OFF (unsigned char)0x8B /* UPS off command. length 1-2 */
37
#define PW_UPS_ON_TIME (unsigned char)0x91 /* Scheduled UPS on in n minutes. length 3-4 */
38
#define PW_UPS_OFF_TIME (unsigned char)0x93 /* Scheduled UPS off in n minutes. length 3-4 */
39
#define PW_SET_CONF_COMMAND (unsigned char)0x95 /* Set configuration command. length 4 */
40
#define PW_SET_OUTLET_COMMAND (unsigned char)0x97 /* Set outlet parameter command length 5. not in 5115 */
41
#define PW_SET_COM_COMMAND (unsigned char)0x98 /* Set communication parameter command. length 5 */
42
#define PW_SET_REQ_ONLY_MODE (unsigned char)0xA0 /* Set request only mode command. length 1 */
43
#define PW_INIT_BAT_TEST (unsigned char)0xB1 /* Initiate battery test command. length 3 */
44
#define PW_INIT_SYS_TEST (unsigned char)0xB2 /* Initiate general system test command. length 2 */
46
/* Config block offsets */
47
#define BCMXCP_CONFIG_BLOCK_NOMINAL_OUTPUT_VOLTAGE 8
48
#define BCMXCP_CONFIG_BLOCK_HW_MODULES_INSTALLED_BYTE4 16
49
#define BCMXCP_CONFIG_BLOCK_SERIAL_NUMBER 64
51
/* Extended limits block offsets */
52
#define BCMXCP_EXT_LIMITS_BLOCK_LOW_BATT_WARNING 16
54
/* Meter map offsets used */
55
#define BCMXCP_METER_MAP_OUTPUT_VA 23
56
#define BCMXCP_METER_MAP_LOAD_CURR_PHASE_A 65
57
#define BCMXCP_METER_MAP_LOAD_CURR_PHASE_A_BAR_CHART 68
58
#define BCMXCP_METER_MAP_OUTPUT_VA_BAR_CHART 71
60
/* Indexes for alarm map */
61
#define BCMXCP_ALARM_INVERTER_AC_OVER_VOLTAGE 0
62
#define BCMXCP_ALARM_INVERTER_AC_UNDER_VOLTAGE 1
63
#define BCMXCP_ALARM_INVERTER_OVER_OR_UNDER_FREQ 2
64
#define BCMXCP_ALARM_BYPASS_AC_OVER_VOLTAGE 3
65
#define BCMXCP_ALARM_BYPASS_AC_UNDER_VOLTAGE 4
66
#define BCMXCP_ALARM_BYPASS_OVER_OR_UNDER_FREQ 5
67
#define BCMXCP_ALARM_INPUT_AC_OVER_VOLTAGE 6
68
#define BCMXCP_ALARM_INPUT_AC_UNDER_VOLTAGE 7
69
#define BCMXCP_ALARM_INPUT_UNDER_OR_OVER_FREQ 8
70
#define BCMXCP_ALARM_OUTPUT_OVER_VOLTAGE 9
71
#define BCMXCP_ALARM_OUTPUT_UNDER_VOLTAGE 10
72
#define BCMXCP_ALARM_OUTPUT_UNDER_OR_OVER_FREQ 11
73
#define BCMXCP_ALARM_REMOTE_EMERGENCY_PWR_OFF 12
74
#define BCMXCP_ALARM_REMOTE_GO_TO_BYPASS 13
75
#define BCMXCP_ALARM_BUILDING_ALARM_6 14
76
#define BCMXCP_ALARM_BUILDING_ALARM_5 15
77
#define BCMXCP_ALARM_BUILDING_ALARM_4 16
78
#define BCMXCP_ALARM_BUILDING_ALARM_3 17
79
#define BCMXCP_ALARM_BUILDING_ALARM_2 18
80
#define BCMXCP_ALARM_BUILDING_ALARM_1 19
81
#define BCMXCP_ALARM_STATIC_SWITCH_OVER_TEMP 20
82
#define BCMXCP_ALARM_CHARGER_OVER_TEMP 21
83
#define BCMXCP_ALARM_CHARGER_LOGIC_PWR_FAIL 22
84
#define BCMXCP_ALARM_CHARGER_OVER_VOLTAGE_OR_CURRENT 23
85
#define BCMXCP_ALARM_INVERTER_OVER_TEMP 24
86
#define BCMXCP_ALARM_OUTPUT_OVERLOAD 25
87
#define BCMXCP_ALARM_RECTIFIER_INPUT_OVER_CURRENT 26
88
#define BCMXCP_ALARM_INVERTER_OUTPUT_OVER_CURRENT 27
89
#define BCMXCP_ALARM_DC_LINK_OVER_VOLTAGE 28
90
#define BCMXCP_ALARM_DC_LINK_UNDER_VOLTAGE 29
91
#define BCMXCP_ALARM_RECTIFIER_FAILED 30
92
#define BCMXCP_ALARM_INVERTER_FAULT 31
93
#define BCMXCP_ALARM_BATTERY_CONNECTOR_FAIL 32
94
#define BCMXCP_ALARM_BYPASS_BREAKER_FAIL 33
95
#define BCMXCP_ALARM_CHARGER_FAIL 34
96
#define BCMXCP_ALARM_RAMP_UP_FAILED 35
97
#define BCMXCP_ALARM_STATIC_SWITCH_FAILED 36
98
#define BCMXCP_ALARM_ANALOG_AD_REF_FAIL 37
99
#define BCMXCP_ALARM_BYPASS_UNCALIBRATED 38
100
#define BCMXCP_ALARM_RECTIFIER_UNCALIBRATED 39
101
#define BCMXCP_ALARM_OUTPUT_UNCALIBRATED 40
102
#define BCMXCP_ALARM_INVERTER_UNCALIBRATED 41
103
#define BCMXCP_ALARM_DC_VOLT_UNCALIBRATED 42
104
#define BCMXCP_ALARM_OUTPUT_CURRENT_UNCALIBRATED 43
105
#define BCMXCP_ALARM_RECTIFIER_CURRENT_UNCALIBRATED 44
106
#define BCMXCP_ALARM_BATTERY_CURRENT_UNCALIBRATED 45
107
#define BCMXCP_ALARM_INVERTER_ON_OFF_STAT_FAIL 46
108
#define BCMXCP_ALARM_BATTERY_CURRENT_LIMIT 47
109
#define BCMXCP_ALARM_INVERTER_STARTUP_FAIL 48
110
#define BCMXCP_ALARM_ANALOG_BOARD_AD_STAT_FAIL 49
111
#define BCMXCP_ALARM_OUTPUT_CURRENT_OVER_100 50
112
#define BCMXCP_ALARM_BATTERY_GROUND_FAULT 51
113
#define BCMXCP_ALARM_WAITING_FOR_CHARGER_SYNC 52
114
#define BCMXCP_ALARM_NV_RAM_FAIL 53
115
#define BCMXCP_ALARM_ANALOG_BOARD_AD_TIMEOUT 54
116
#define BCMXCP_ALARM_SHUTDOWN_IMMINENT 55
117
#define BCMXCP_ALARM_BATTERY_LOW 56
118
#define BCMXCP_ALARM_UTILITY_FAIL 57
119
#define BCMXCP_ALARM_OUTPUT_SHORT_CIRCUIT 58
120
#define BCMXCP_ALARM_UTILITY_NOT_PRESENT 59
121
#define BCMXCP_ALARM_FULL_TIME_CHARGING 60
122
#define BCMXCP_ALARM_FAST_BYPASS_COMMAND 61
123
#define BCMXCP_ALARM_AD_ERROR 62
124
#define BCMXCP_ALARM_INTERNAL_COM_FAIL 63
125
#define BCMXCP_ALARM_RECTIFIER_SELFTEST_FAIL 64
126
#define BCMXCP_ALARM_RECTIFIER_EEPROM_FAIL 65
127
#define BCMXCP_ALARM_RECTIFIER_EPROM_FAIL 66
128
#define BCMXCP_ALARM_INPUT_LINE_VOLTAGE_LOSS 67
129
#define BCMXCP_ALARM_BATTERY_DC_OVER_VOLTAGE 68
130
#define BCMXCP_ALARM_POWER_SUPPLY_OVER_TEMP 69
131
#define BCMXCP_ALARM_POWER_SUPPLY_FAIL 70
132
#define BCMXCP_ALARM_POWER_SUPPLY_5V_FAIL 71
133
#define BCMXCP_ALARM_POWER_SUPPLY_12V_FAIL 72
134
#define BCMXCP_ALARM_HEATSINK_OVER_TEMP 73
135
#define BCMXCP_ALARM_HEATSINK_TEMP_SENSOR_FAIL 74
136
#define BCMXCP_ALARM_RECTIFIER_CURRENT_OVER_125 75
137
#define BCMXCP_ALARM_RECTIFIER_FAULT_INTERRUPT_FAIL 76
138
#define BCMXCP_ALARM_RECTIFIER_POWER_CAPASITOR_FAIL 77
139
#define BCMXCP_ALARM_INVERTER_PROGRAM_STACK_ERROR 78
140
#define BCMXCP_ALARM_INVERTER_BOARD_SELFTEST_FAIL 79
141
#define BCMXCP_ALARM_INVERTER_AD_SELFTEST_FAIL 80
142
#define BCMXCP_ALARM_INVERTER_RAM_SELFTEST_FAIL 81
143
#define BCMXCP_ALARM_NV_MEMORY_CHECKSUM_FAIL 82
144
#define BCMXCP_ALARM_PROGRAM_CHECKSUM_FAIL 83
145
#define BCMXCP_ALARM_INVERTER_CPU_SELFTEST_FAIL 84
146
#define BCMXCP_ALARM_NETWORK_NOT_RESPONDING 85
147
#define BCMXCP_ALARM_FRONT_PANEL_SELFTEST_FAIL 86
148
#define BCMXCP_ALARM_NODE_EEPROM_VERIFICATION_ERROR 87
149
#define BCMXCP_ALARM_OUTPUT_AC_OVER_VOLT_TEST_FAIL 88
150
#define BCMXCP_ALARM_OUTPUT_DC_OVER_VOLTAGE 89
151
#define BCMXCP_ALARM_INPUT_PHASE_ROTATION_ERROR 90
152
#define BCMXCP_ALARM_INVERTER_RAMP_UP_TEST_FAILED 91
153
#define BCMXCP_ALARM_INVERTER_OFF_COMMAND 92
154
#define BCMXCP_ALARM_INVERTER_ON_COMMAND 93
155
#define BCMXCP_ALARM_TO_BYPASS_COMMAND 94
156
#define BCMXCP_ALARM_FROM_BYPASS_COMMAND 95
157
#define BCMXCP_ALARM_AUTO_MODE_COMMAND 96
158
#define BCMXCP_ALARM_EMERGENCY_SHUTDOWN_COMMAND 97
159
#define BCMXCP_ALARM_SETUP_SWITCH_OPEN 98
160
#define BCMXCP_ALARM_INVERTER_OVER_VOLT_INT 99
161
#define BCMXCP_ALARM_INVERTER_UNDER_VOLT_INT 100
162
#define BCMXCP_ALARM_ABSOLUTE_DCOV_ACOV 101
163
#define BCMXCP_ALARM_PHASE_A_CURRENT_LIMIT 102
164
#define BCMXCP_ALARM_PHASE_B_CURRENT_LIMIT 103
165
#define BCMXCP_ALARM_PHASE_C_CURRENT_LIMIT 104
166
#define BCMXCP_ALARM_BYPASS_NOT_AVAILABLE 105
167
#define BCMXCP_ALARM_RECTIFIER_BREAKER_OPEN 106
168
#define BCMXCP_ALARM_BATTERY_CONTACTOR_OPEN 107
169
#define BCMXCP_ALARM_INVERTER_CONTACTOR_OPEN 108
170
#define BCMXCP_ALARM_BYPASS_BREAKER_OPEN 109
171
#define BCMXCP_ALARM_INV_BOARD_ACOV_INT_TEST_FAIL 110
172
#define BCMXCP_ALARM_INVERTER_OVER_TEMP_TRIP 111
173
#define BCMXCP_ALARM_INV_BOARD_ACUV_INT_TEST_FAIL 112
174
#define BCMXCP_ALARM_INVERTER_VOLTAGE_FEEDBACK_ERROR 113
175
#define BCMXCP_ALARM_DC_UNDER_VOLTAGE_TIMEOUT 114
176
#define BCMXCP_ALARM_AC_UNDER_VOLTAGE_TIMEOUT 115
177
#define BCMXCP_ALARM_DC_UNDER_VOLTAGE_WHILE_CHARGE 116
178
#define BCMXCP_ALARM_INVERTER_VOLTAGE_BIAS_ERROR 117
179
#define BCMXCP_ALARM_RECTIFIER_PHASE_ROTATION 118
180
#define BCMXCP_ALARM_BYPASS_PHASER_ROTATION 119
181
#define BCMXCP_ALARM_SYSTEM_INTERFACE_BOARD_FAIL 120
182
#define BCMXCP_ALARM_PARALLEL_BOARD_FAIL 121
183
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_A 122
184
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_B 123
185
#define BCMXCP_ALARM_LOST_LOAD_SHARING_PHASE_C 124
186
#define BCMXCP_ALARM_DC_OVER_VOLTAGE_TIMEOUT 125
187
#define BCMXCP_ALARM_BATTERY_TOTALLY_DISCHARGED 126
188
#define BCMXCP_ALARM_INVERTER_PHASE_BIAS_ERROR 127
189
#define BCMXCP_ALARM_INVERTER_VOLTAGE_BIAS_ERROR_2 128
190
#define BCMXCP_ALARM_DC_LINK_BLEED_COMPLETE 129
191
#define BCMXCP_ALARM_LARGE_CHARGER_INPUT_CURRENT 130
192
#define BCMXCP_ALARM_INV_VOLT_TOO_LOW_FOR_RAMP_LEVEL 131
193
#define BCMXCP_ALARM_LOSS_OF_REDUNDANCY 132
194
#define BCMXCP_ALARM_LOSS_OF_SYNC_BUS 133
195
#define BCMXCP_ALARM_RECTIFIER_BREAKER_SHUNT_TRIP 134
196
#define BCMXCP_ALARM_LOSS_OF_CHARGER_SYNC 135
197
#define BCMXCP_ALARM_INVERTER_LOW_LEVEL_TEST_TIMEOUT 136
198
#define BCMXCP_ALARM_OUTPUT_BREAKER_OPEN 137
199
#define BCMXCP_ALARM_CONTROL_POWER_ON 138
200
#define BCMXCP_ALARM_INVERTER_ON 139
201
#define BCMXCP_ALARM_CHARGER_ON 140
202
#define BCMXCP_ALARM_BYPASS_ON 141
203
#define BCMXCP_ALARM_BYPASS_POWER_LOSS 142
204
#define BCMXCP_ALARM_ON_MANUAL_BYPASS 143
205
#define BCMXCP_ALARM_BYPASS_MANUAL_TURN_OFF 144
206
#define BCMXCP_ALARM_INVERTER_BLEEDING_DC_LINK_VOLT 145
207
#define BCMXCP_ALARM_CPU_ISR_ERROR 146
208
#define BCMXCP_ALARM_SYSTEM_ISR_RESTART 147
209
#define BCMXCP_ALARM_PARALLEL_DC 148
210
#define BCMXCP_ALARM_BATTERY_NEEDS_SERVICE 149
211
#define BCMXCP_ALARM_BATTERY_CHARGING 150
212
#define BCMXCP_ALARM_BATTERY_NOT_CHARGED 151
213
#define BCMXCP_ALARM_DISABLED_BATTERY_TIME 152
214
#define BCMXCP_ALARM_SERIES_7000_ENABLE 153
215
#define BCMXCP_ALARM_OTHER_UPS_ON 154
216
#define BCMXCP_ALARM_PARALLEL_INVERTER 155
217
#define BCMXCP_ALARM_UPS_IN_PARALLEL 156
218
#define BCMXCP_ALARM_OUTPUT_BREAKER_REALY_FAIL 157
219
#define BCMXCP_ALARM_CONTROL_POWER_OFF 158
220
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_A 159
221
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_B 160
222
#define BCMXCP_ALARM_LEVEL_2_OVERLOAD_PHASE_C 161
223
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_A 162
224
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_B 163
225
#define BCMXCP_ALARM_LEVEL_3_OVERLOAD_PHASE_C 164
226
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_A 165
227
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_B 166
228
#define BCMXCP_ALARM_LEVEL_4_OVERLOAD_PHASE_C 167
229
#define BCMXCP_ALARM_UPS_ON_BATTERY 168
230
#define BCMXCP_ALARM_UPS_ON_BYPASS 169
231
#define BCMXCP_ALARM_LOAD_DUMPED 170
232
#define BCMXCP_ALARM_LOAD_ON_INVERTER 171
233
#define BCMXCP_ALARM_UPS_ON_COMMAND 172
234
#define BCMXCP_ALARM_UPS_OFF_COMMAND 173
235
#define BCMXCP_ALARM_LOW_BATTERY_SHUTDOWN 174
236
#define BCMXCP_ALARM_AUTO_ON_ENABLED 175
237
#define BCMXCP_ALARM_SOFTWARE_INCOMPABILITY_DETECTED 176
238
#define BCMXCP_ALARM_INVERTER_TEMP_SENSOR_FAILED 177
239
#define BCMXCP_ALARM_DC_START_OCCURED 178
240
#define BCMXCP_ALARM_IN_PARALLEL_OPERATION 179
241
#define BCMXCP_ALARM_SYNCING_TO_BYPASS 180
242
#define BCMXCP_ALARM_RAMPING_UPS_UP 181
243
#define BCMXCP_ALARM_INVERTER_ON_DELAY 182
244
#define BCMXCP_ALARM_CHARGER_ON_DELAY 183
245
#define BCMXCP_ALARM_WAITING_FOR_UTIL_INPUT 184
246
#define BCMXCP_ALARM_CLOSE_BYPASS_BREAKER 185
247
#define BCMXCP_ALARM_TEMPORARY_BYPASS_OPERATION 186
248
#define BCMXCP_ALARM_SYNCING_TO_OUTPUT 187
249
#define BCMXCP_ALARM_BYPASS_FAILURE 188
250
#define BCMXCP_ALARM_AUTO_OFF_COMMAND_EXECUTED 189
251
#define BCMXCP_ALARM_AUTO_ON_COMMAND_EXECUTED 190
252
#define BCMXCP_ALARM_BATTERY_TEST_FAILED 191
253
#define BCMXCP_ALARM_FUSE_FAIL 192
254
#define BCMXCP_ALARM_FAN_FAIL 193
255
#define BCMXCP_ALARM_SITE_WIRING_FAULT 194
256
#define BCMXCP_ALARM_BACKFEED_CONTACTOR_FAIL 195
257
#define BCMXCP_ALARM_ON_BUCK 196
258
#define BCMXCP_ALARM_ON_BOOST 197
259
#define BCMXCP_ALARM_ON_DOUBLE_BOOST 198
260
#define BCMXCP_ALARM_BATTERIES_DISCONNECTED 199
261
#define BCMXCP_ALARM_UPS_CABINET_OVER_TEMP 200
262
#define BCMXCP_ALARM_TRANSFORMER_OVER_TEMP 201
263
#define BCMXCP_ALARM_AMBIENT_UNDER_TEMP 202
264
#define BCMXCP_ALARM_AMBIENT_OVER_TEMP 203
265
#define BCMXCP_ALARM_CABINET_DOOR_OPEN 204
266
#define BCMXCP_ALARM_CABINET_DOOR_OPEN_VOLT_PRESENT 205
267
#define BCMXCP_ALARM_AUTO_SHUTDOWN_PENDING 206
268
#define BCMXCP_ALARM_TAP_SWITCHING_REALY_PENDING 207
269
#define BCMXCP_ALARM_UNABLE_TO_CHARGE_BATTERIES 208
270
#define BCMXCP_ALARM_STARTUP_FAILURE_CHECK_EPO 209
271
#define BCMXCP_ALARM_AUTOMATIC_STARTUP_PENDING 210
272
#define BCMXCP_ALARM_MODEM_FAILED 211
273
#define BCMXCP_ALARM_INCOMING_MODEM_CALL_STARTED 212
274
#define BCMXCP_ALARM_OUTGOING_MODEM_CALL_STARTED 213
275
#define BCMXCP_ALARM_MODEM_CONNECTION_ESTABLISHED 214
276
#define BCMXCP_ALARM_MODEM_CALL_COMPLETED_SUCCESS 215
277
#define BCMXCP_ALARM_MODEM_CALL_COMPLETED_FAIL 216
278
#define BCMXCP_ALARM_INPUT_BREAKER_FAIL 217
279
#define BCMXCP_ALARM_SYSINIT_IN_PROGRESS 218
280
#define BCMXCP_ALARM_AUTOCALIBRATION_FAIL 219
281
#define BCMXCP_ALARM_SELECTIVE_TRIP_OF_MODULE 220
282
#define BCMXCP_ALARM_INVERTER_OUTPUT_FAILURE 221
283
#define BCMXCP_ALARM_ABNORMAL_OUTPUT_VOLT_AT_STARTUP 222
284
#define BCMXCP_ALARM_RECTIFIER_OVER_TEMP 223
285
#define BCMXCP_ALARM_CONFIG_ERROR 224
286
#define BCMXCP_ALARM_REDUNDANCY_LOSS_DUE_TO_OVERLOAD 225
287
#define BCMXCP_ALARM_ON_ALTERNATE_AC_SOURCE 226
289
#define BCMXCP_METER_MAP_MAX 91 /* Max no of entries in BCM/XCP meter map */
290
#define BCMXCP_ALARM_MAP_MAX 232 /* Max no of entries in BCM/XCP alarm map (adjusted upwards to nearest multi of 8 */
292
typedef struct { /* Entry in BCM/XCP - UPS - NUT mapping table */
293
char *nut_entity; /* The NUT variable name */
294
unsigned char format; /* The format of the data - float, long etc */
295
unsigned int meter_block_index; /* The position of this meter in the UPS meter block */
296
} BCMXCP_METER_MAP_ENTRY;
298
BCMXCP_METER_MAP_ENTRY
299
bcmxcp_meter_map[BCMXCP_METER_MAP_MAX];
301
typedef struct { /* Entry in BCM/XCP - UPS mapping table */
302
unsigned int alarm_block_index; /* Index of this alarm in alarm block. -1 = not existing */
303
char *alarm_desc; /* Description of this alarm */
304
} BCMXCP_ALARM_MAP_ENTRY;
306
BCMXCP_ALARM_MAP_ENTRY
307
bcmxcp_alarm_map[BCMXCP_ALARM_MAP_MAX];
309
typedef struct { /* A place to store status info and other data not for NUT */
310
unsigned char topology_mask; /* Configuration block byte 16, masks valid status bits */
311
unsigned int lowbatt; /* Seconds of runtime left left when LB alarm is set */
312
unsigned int shutdowndelay; /* Shutdown delay in seconds, from ups.conf */
313
int alarm_on_battery; /* On Battery alarm active? */
314
int alarm_low_battery; /* Battery Low alarm active? */
320
static int get_word(const unsigned char*);
321
static long int get_long(const unsigned char*);
322
static float get_float(const unsigned char *data);
323
static int checksum_test(const unsigned char*);
324
static unsigned char calc_checksum(const unsigned char *buf);
325
static void init_meter_map(void);
326
static void init_alarm_map(void);
327
static void init_ups_meter_map(const unsigned char *map, unsigned char len);
328
static void init_ups_alarm_map(const unsigned char *map, unsigned char len);
329
static void decode_meter_map_entry(const unsigned char *entry, const unsigned char format, char* value);
330
static void send_read_command(unsigned char);
331
static void send_write_command(unsigned char*, int);
332
static int get_answer(unsigned char*, unsigned char);
333
static int command_read_sequence(unsigned char, unsigned char*);
334
static int command_write_sequence(unsigned char*, int, unsigned char*);
335
static int instcmd(const char *cmdname, const char *extra);
337
#endif /*_POWERWARE_H */