apcupsd-ups: ignore generated files
[networkupstools/kirr.git] / drivers / apcsmart_tabs.c
blob9cefa42769cc58a0423dd7344bed3e8317875068
1 /* apcsmart_tabs.c - common tables for APC smart protocol units
3 * Copyright (C) 1999 Russell Kroll <rkroll@exploits.org>
4 * (C) 2000 Nigel Metheringham <Nigel.Metheringham@Intechnology.co.uk>
5 * (C) 2011+ Michal Soltys <soltys@ziu.info>
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "apcsmart_tabs.h"
24 /* APC_MULTI variables *must* be listed in order of preference */
25 apc_vartab_t apc_vartab[] = {
27 { "ups.temperature", 'C', APC_POLL|APC_F_CELSIUS },
28 { "ups.load", 'P', APC_POLL|APC_F_PERCENT },
29 { "ups.test.interval", 'E', APC_F_HOURS },
30 { "ups.test.result", 'X', APC_POLL },
31 { "ups.delay.start", 'r', APC_F_SECONDS },
32 { "ups.delay.shutdown", 'p', APC_F_SECONDS },
33 { "ups.id", 'c', APC_STRING },
34 { "ups.contacts", 'i', APC_POLL|APC_F_HEX },
35 { "ups.display.language", '\014' },
36 { "input.voltage", 'L', APC_POLL|APC_F_VOLT },
37 { "input.frequency", 'F', APC_POLL|APC_F_DEC },
38 { "input.sensitivity", 's', },
39 { "input.quality", '9', APC_POLL|APC_F_HEX },
40 { "input.transfer.low", 'l', APC_F_VOLT },
41 { "input.transfer.high", 'u', APC_F_VOLT },
42 { "input.transfer.reason", 'G', APC_POLL|APC_F_REASON },
43 { "input.voltage.maximum", 'M', APC_POLL|APC_F_VOLT },
44 { "input.voltage.minimum", 'N', APC_POLL|APC_F_VOLT },
45 { "output.current", '/', APC_POLL|APC_F_AMP },
46 { "output.voltage", 'O', APC_POLL|APC_F_VOLT },
47 { "output.voltage.nominal", 'o', APC_F_VOLT },
48 { "ambient.humidity", 'h', APC_POLL|APC_F_PERCENT },
49 { "ambient.0.humidity", 'H', APC_POLL|APC_PACK|APC_F_PERCENT },
50 { "ambient.0.humidity.high", '{', APC_POLL|APC_PACK|APC_F_PERCENT },
51 { "ambient.0.humidity.low", '}', APC_POLL|APC_PACK|APC_F_PERCENT },
52 { "ambient.temperature", 't', APC_POLL|APC_F_CELSIUS },
53 { "ambient.0.temperature", 'T', APC_MULTI|APC_POLL|APC_PACK|APC_F_CELSIUS, "^[0-9]{2}\\.[0-9]{2}$" },
54 { "ambient.0.temperature.high", '[', APC_POLL|APC_PACK|APC_F_CELSIUS },
55 { "ambient.0.temperature.low", ']', APC_POLL|APC_PACK|APC_F_CELSIUS },
56 { "battery.date", 'x', APC_STRING },
57 { "battery.charge", 'f', APC_POLL|APC_F_PERCENT },
58 { "battery.charge.restart", 'e', APC_F_PERCENT },
59 { "battery.voltage", 'B', APC_POLL|APC_F_VOLT },
60 { "battery.voltage.nominal", 'g', },
61 { "battery.runtime", 'j', APC_POLL|APC_F_MINUTES },
62 { "battery.runtime.low", 'q', APC_F_MINUTES },
63 { "battery.packs", '>', APC_F_DEC },
64 { "battery.packs.bad", '<', APC_F_DEC },
65 { "battery.alarm.threshold", 'k', },
66 { "device.uptime", 'T', APC_MULTI|APC_POLL|APC_F_HOURS, "^[0-9]{3}\\.[0-9]{1}$" },
67 { "ups.serial", 'n', },
68 { "ups.mfr.date", 'm', },
69 { "ups.model", '\001' },
70 { "ups.firmware.aux", 'v', },
71 { "ups.firmware", 'b', APC_MULTI, "^[[:alnum:]]+\\.[[:alnum:]]+\\.[[:alnum:]]+$" },
72 { "ups.firmware", 'V', APC_MULTI },
74 { NULL }
75 /* todo:
77 I = alarm enable (hex field) - split into alarm.n.enable
78 J = alarm status (hex field) - split into alarm.n.status
80 0x15 = output voltage selection (APC_F_VOLT)
81 0x5C = load power (APC_POLL|APC_F_PERCENT)
87 * APC commands mapped to NUT's instant commands
88 * the format of extra values is matched by extended posix regex
89 * APC_CMD_CUSTOM means that the instant command is handled by separate
90 * function, thus the actual APC cmd in the table is ignored
92 apc_cmdtab_t apc_cmdtab[] = {
93 { "shutdown.return", "^[Aa][Tt]:[0-9]{1,3}$",
94 APC_CMD_GRACEDOWN, APC_NASTY },
95 { "shutdown.return", "^([Cc][Ss]|)$",
96 APC_CMD_SOFTDOWN, APC_NASTY },
97 { "shutdown.stayoff", 0, APC_CMD_SHUTDOWN, APC_NASTY|APC_REPEAT },
98 { "load.off", 0, APC_CMD_OFF, APC_NASTY|APC_REPEAT },
99 { "load.on", 0, APC_CMD_ON, APC_REPEAT },
100 { "calibrate.start", 0, APC_CMD_CALTOGGLE, 0 },
101 { "calibrate.stop", 0, APC_CMD_CALTOGGLE, 0 },
102 { "test.panel.start", 0, APC_CMD_FPTEST, 0 },
103 { "test.failure.start", 0, APC_CMD_SIMPWF, 0 },
104 { "test.battery.start", 0, APC_CMD_BTESTTOGGLE, 0 },
105 { "test.battery.stop", 0, APC_CMD_BTESTTOGGLE, 0 },
106 { "bypass.start", 0, APC_CMD_BYPTOGGLE, 0 },
107 { "bypass.stop", 0, APC_CMD_BYPTOGGLE, 0 },
109 { NULL }
112 /* compatibility with hardware that doesn't do APC_CMDSET ('a') */
113 apc_compattab_t apc_compattab[] = {
114 /* APC Matrix */
115 { "0XI", "@789ABCDEFGKLMNOPQRSTUVWXYZcefgjklmnopqrsuwxz/<>\\^\014\026", 0 },
116 { "0XM", "@789ABCDEFGKLMNOPQRSTUVWXYZcefgjklmnopqrsuwxz/<>\\^\014\026", 0 },
117 { "0ZI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz/<>", 0 },
118 { "5UI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz/<>", 0 },
119 { "5ZM", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz/<>", 0 },
120 /* APC600 */
121 { "6QD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
122 { "6QI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
123 { "6TD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
124 { "6TI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
125 /* SmartUPS 900 */
126 { "7QD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
127 { "7QI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
128 { "7TD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
129 { "7TI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
130 /* SmartUPS 600I */
131 { "6JI", "@789ABCFGKLMNOPQSTUVWXYZfg", 0 },
132 /* SmartUPS 900I */
133 { "7II", "@79ABCEFGKLMNOPQRSUVWXYZcfg", 0 },
134 /* SmartUPS 2000I */
135 { "9II", "@79ABCEFGKLMNOPQRSUVWXYZcfg", 0 },
136 { "9GI", "@79ABCEFGKLMNOPQRSUVWXYZcfg", 0 },
137 /* SmartUPS 1250I */
138 { "8II", "@79ABCEFGKLMNOPQRSUVWXYZcfg", 0 },
139 { "8GI", "@79ABCEFGKLMNOPQRSUVWXYZfg", 0 },
140 /* SmartUPS 1250 */
141 { "8QD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
142 { "8QI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
143 { "8TD", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
144 { "8TI", "@79ABCDEFGKLMNOPQRSUVWXYZcefgjklmnopqrsuxz", 0 },
145 /* CS 350 */
146 { "5.4.D", "@\1ABPQRSUYbdfgjmnx9", 0 },
148 * certain set of UPSes returning voltage > 255V through 'b'; "set\1"
149 * is matched explicitly (fake key); among the UPS models - some old
150 * APC 600 ones
152 { "set\1", "@789ABCFGKLMNOPQRSUVWXYZ", 0 },
154 { NULL }
157 upsdrv_info_t apc_tab_info = {
158 "APC command table",
159 APC_TABLE_VERSION