~ubuntu-branches/ubuntu/saucy/nut/saucy

« back to all changes in this revision

Viewing changes to drivers/bcmxcp.h

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2005-07-20 19:48:50 UTC
  • mto: (16.1.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 4.
  • Revision ID: james.westby@ubuntu.com-20050720194850-oo61wjr33rrx2mre
Tags: upstream-2.0.2
ImportĀ upstreamĀ versionĀ 2.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* bcmxcp.h -- header for (BCM/XCP)  protocol module
2
 
 * 
3
 
 * Copyright (c) 2002, Martin Schroeder
4
 
 * emes -at- geomer.de
5
 
 * All rights reserved.
6
 
 *
7
 
 * Redistribution and use in source and binary forms, with or without 
8
 
 * modification, are permitted provided that the following conditions 
9
 
 * are met:
10
 
 *
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. 
19
 
 *
20
 
 *
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.
32
 
 *
33
 
 */    
 
1
/* 
 
2
 * bcmxcp.h -- header for BCM/XCP module
 
3
 */ 
34
4
 
35
5
#ifndef _POWERWARE_H
36
6
#define _POWERWARE_H
37
7
 
38
 
#include <termios.h>
39
 
 
40
 
 
41
 
char *FreqTol[3]        = {"+/-2%", "+/-5%", "+/-7"};
42
 
char *ABMStatus[4]      = {"Charging", "Discharging", "Floating", "Resting"};
43
 
 
44
 
#define PW_MAX_TRY  3   /* How often we try to get valid data from the ups in */
45
 
                        /* case of a read error                               */
46
 
 
47
 
 
48
 
#define PW_MAX_BAUD 5
49
 
struct pw_baud_rate {
50
 
        int rate;
51
 
        int name;
52
 
} pw_baud_rates[] = {
53
 
        { B1200,  1200 },
54
 
        { B2400,  2400 },
55
 
        { B4800,  4800 },
56
 
        { B9600,  9600 },
57
 
        { B19200, 19200 },
58
 
};
59
 
                            
60
 
 
61
 
#define PW_COMMAND_START_BYTE   0xAB
62
 
 
63
 
 
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,...)  */
70
 
 
71
 
 
72
 
#endif /* _POWERWARE_H */
 
8
#include "timehead.h"
 
9
 
 
10
 
 
11
char *FreqTol[3] = {"+/-2%", "+/-5%", "+/-7"};
 
12
char *ABMStatus[4] = {"Charging", "Discharging", "Floating", "Resting"};
 
13
 
 
14
#define PW_MAX_TRY 3 /* How many times we try to send data. */
 
15
 
 
16
#define PW_COMMAND_START_BYTE (unsigned char)0xAB
 
17
 
 
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     */
 
31
 
 
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 */
 
45
 
 
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
 
50
 
 
51
/* Extended     limits block offsets */
 
52
#define BCMXCP_EXT_LIMITS_BLOCK_LOW_BATT_WARNING        16
 
53
 
 
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
 
59
 
 
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
 
288
 
 
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 */
 
291
 
 
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;
 
297
 
 
298
BCMXCP_METER_MAP_ENTRY
 
299
        bcmxcp_meter_map[BCMXCP_METER_MAP_MAX];
 
300
 
 
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;
 
305
 
 
306
BCMXCP_ALARM_MAP_ENTRY
 
307
        bcmxcp_alarm_map[BCMXCP_ALARM_MAP_MAX];
 
308
 
 
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? */
 
315
}       BCMXCP_STATUS;
 
316
 
 
317
BCMXCP_STATUS
 
318
        bcmxcp_status;
 
319
 
 
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);
 
336
 
 
337
#endif /*_POWERWARE_H */
73
338