Skip to content

Commit d8d5dfe

Browse files
committed
drivers/vertiv-mib.c: refine code markup after another round of AI changes [#3299]
Signed-off-by: Jim Klimov <jimklimov+nut@gmail.com>
1 parent 192b6a2 commit d8d5dfe

1 file changed

Lines changed: 128 additions & 88 deletions

File tree

drivers/vertiv-mib.c

Lines changed: 128 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -27,108 +27,148 @@
2727

2828
#include "vertiv-mib.h"
2929

30-
#define VERTIV_MIB_VERSION "0.04"
30+
#define VERTIV_MIB_VERSION "0.01"
3131

3232
/* Base OIDs from IS-UNITY-DP Card */
33-
#define VERTIV_BASEOID ".1.3.6.1.4.1.476.1.42"
34-
#define VERTIV_ID_OID VERTIV_BASEOID ".2.4.2.1.4.1"
35-
#define VERTIV_VAL_OID VERTIV_BASEOID ".3.9.30.1.20.1.2.1"
36-
#define VERTIV_ALM_OID VERTIV_BASEOID ".3.9.20.1.10.1.2.100"
37-
#define VERTIV_PWRSTATUS_OID VERTIV_BASEOID ".3.5.3"
38-
#define VERTIV_BEEPER_OID VERTIV_VAL_OID ".6188"
33+
#define VERTIV_BASEOID ".1.3.6.1.4.1.476.1.42"
34+
#define VERTIV_ID_OID VERTIV_BASEOID ".2.4.2.1.4.1"
35+
#define VERTIV_VAL_OID VERTIV_BASEOID ".3.9.30.1.20.1.2.1"
36+
#define VERTIV_ALM_OID VERTIV_BASEOID ".3.9.20.1.10.1.2.100"
37+
#define VERTIV_PWRSTATUS_OID VERTIV_BASEOID ".3.5.3"
38+
#define VERTIV_BEEPER_OID VERTIV_VAL_OID ".6188"
39+
40+
#ifdef VERTIV_WITH_IETF_BEEPER_FALLBACK
41+
/* May be defined in experimental builds */
42+
static info_lkp_t ietf_beeper_status_info[] = {
43+
info_lkp_default(1, "disabled"),
44+
info_lkp_default(2, "enabled"),
45+
info_lkp_default(3, "muted"),
46+
info_lkp_sentinel
47+
};
48+
#endif /* VERTIV_WITH_IETF_BEEPER_FALLBACK */
3949

4050
static info_lkp_t vertiv_beeper_status_info[] = {
41-
info_lkp_default(1, "enabled"),
42-
info_lkp_default(2, "disabled"),
43-
info_lkp_sentinel
51+
info_lkp_default(1, "enabled"),
52+
info_lkp_default(2, "disabled"),
53+
info_lkp_sentinel
4454
};
4555

56+
/* FIXME: the below may introduce status redundancy, that needs to be
57+
* addressed by the driver, as for usbhid-ups! */
58+
/*
59+
* DESCRIPTION
60+
* The present source of output power. The enumeration
61+
* none(2) indicates that there is no source of output
62+
* power (and therefore no output power), for example,
63+
* the system has opened the output breaker.
64+
*
65+
* NOTE: In a single-module system, this point
66+
* is intended to have the same behavior as
67+
* the RFC1628 point upsOutputSource."
68+
*/
4669
static info_lkp_t vertiv_power_source_info[] = {
47-
info_lkp_default(1, "other"),
48-
info_lkp_default(2, "OFF"),
49-
info_lkp_default(3, "OL"),
50-
info_lkp_default(4, "BYPASS"),
51-
info_lkp_default(5, "OB"),
52-
info_lkp_default(6, "BOOST"),
53-
info_lkp_default(7, "TRIM"),
54-
info_lkp_sentinel
70+
info_lkp_default(1, ""), /* other */
71+
info_lkp_default(2, "OFF"), /* none */
72+
info_lkp_default(3, "OL"), /* normal */
73+
info_lkp_default(4, "BYPASS"), /* bypass */
74+
info_lkp_default(5, "OB"), /* battery */
75+
info_lkp_default(6, "BOOST"), /* booster */
76+
info_lkp_default(7, "TRIM"), /* reducer */
77+
info_lkp_sentinel
5578
};
5679

5780
static snmp_info_t vertiv_mib[] = {
58-
/* Standard MIB items */
59-
snmp_info_default("device.description", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.1.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
60-
snmp_info_default("device.contact", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.4.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
61-
snmp_info_default("device.location", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.6.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
62-
63-
/* Device Identification */
64-
snmp_info_default("device.mfr", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.1.1.0", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
65-
snmp_info_default("device.model", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.4.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
66-
snmp_info_default("device.serial", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.7.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
67-
snmp_info_default("ups.firmware", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.5.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
68-
69-
/* Extended Identification */
70-
snmp_info_default("device.type", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4553", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
71-
snmp_info_default("ups.mfr", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4333", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
72-
snmp_info_default("ups.model", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4240", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
73-
74-
/* UPS Measurements & Topology (High-precision) */
75-
snmp_info_default("ups.load", 0, 1.0, VERTIV_VAL_OID ".5861", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
76-
snmp_info_default("ups.temperature", 0, 1.0, VERTIV_BASEOID ".3.9.30.1.10.1.2.1.4291", NULL, SU_FLAG_NEGINVALID, NULL),
77-
snmp_info_default("ups.type", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.6199", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
78-
79-
/* Battery Data */
80-
snmp_info_default("battery.charge", 0, 1.0, VERTIV_VAL_OID ".4153", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
81-
snmp_info_default("battery.runtime", 0, 60.0, VERTIV_VAL_OID ".4150", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
82-
snmp_info_default("battery.voltage", 0, 1.0, VERTIV_VAL_OID ".4148", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
83-
snmp_info_default("battery.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".6189", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
84-
85-
/* Power Quality - Scaled (0.1) for high precision decimal values */
86-
snmp_info_default("input.voltage", 0, 0.1, VERTIV_VAL_OID ".4096", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
87-
snmp_info_default("input.current", 0, 0.1, VERTIV_VAL_OID ".4113", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
88-
snmp_info_default("input.frequency", 0, 0.1, VERTIV_VAL_OID ".4105", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
89-
snmp_info_default("input.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".4102", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
90-
snmp_info_default("input.current.nominal", 0, 1.0, VERTIV_VAL_OID ".4104", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
91-
snmp_info_default("input.frequency.nominal", 0, 1.0, VERTIV_VAL_OID ".4103", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
92-
snmp_info_default("output.voltage", 0, 0.1, VERTIV_VAL_OID ".4385", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
93-
snmp_info_default("output.current", 0, 0.1, VERTIV_VAL_OID ".4204", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
94-
snmp_info_default("output.frequency", 0, 0.1, VERTIV_VAL_OID ".4207", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
95-
snmp_info_default("output.power", 0, 1.0, VERTIV_VAL_OID ".4208", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
96-
snmp_info_default("output.power.apparent", 0, 1.0, VERTIV_VAL_OID ".4209", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
97-
snmp_info_default("output.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".4260", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
98-
snmp_info_default("output.power.nominal", 0, 1.0, VERTIV_VAL_OID ".4264", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
99-
100-
/* UPS Status & Beeper */
101-
snmp_info_default("ups.status", ST_FLAG_STRING, SU_INFOSIZE, VERTIV_VAL_OID ".4872", "", SU_STATUS_PWR | SU_FLAG_OK, vertiv_power_source_info),
102-
snmp_info_default("ups.beeper.status", ST_FLAG_STRING, SU_INFOSIZE, VERTIV_BEEPER_OID, "", SU_FLAG_OK, vertiv_beeper_status_info),
103-
104-
/* Instant Commands */
105-
snmp_info_default("beeper.disable", 0, 1, VERTIV_BEEPER_OID, "2", SU_TYPE_CMD, NULL),
106-
snmp_info_default("beeper.enable", 0, 1, VERTIV_BEEPER_OID, "1", SU_TYPE_CMD, NULL),
107-
108-
/* Shutdown & Restart */
109-
snmp_info_default("ups.delay.shutdown", ST_FLAG_RW, 1.0, VERTIV_VAL_OID ".5814", "", SU_TYPE_TIME | SU_FLAG_OK, NULL),
110-
snmp_info_default("ups.delay.start", ST_FLAG_RW, 1.0, VERTIV_VAL_OID ".5816", "", SU_TYPE_TIME | SU_FLAG_OK, NULL),
111-
112-
snmp_info_sentinel
81+
/* Standard IETF MIB items */
82+
snmp_info_default("device.description", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.1.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
83+
snmp_info_default("device.contact", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.4.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
84+
snmp_info_default("device.location", ST_FLAG_STRING | ST_FLAG_RW, SU_INFOSIZE, ".1.3.6.1.2.1.1.6.0", NULL, SU_FLAG_OK | SU_FLAG_SEMI_STATIC, NULL),
85+
86+
/* Device Identification from vendor MIB */
87+
snmp_info_default("device.mfr", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.1.1.0", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
88+
snmp_info_default("device.model", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.4.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
89+
snmp_info_default("device.serial", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.7.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
90+
snmp_info_default("ups.firmware", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".2.4.2.1.5.1", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
91+
92+
/* Extended Identification */
93+
snmp_info_default("device.type", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4553", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
94+
snmp_info_default("ups.mfr", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4333", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
95+
snmp_info_default("ups.model", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.4240", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
96+
97+
/* UPS Measurements & Topology (High-precision) */
98+
snmp_info_default("ups.load", 0, 1.0, VERTIV_VAL_OID ".5861", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
99+
snmp_info_default("ups.temperature", 0, 1.0, VERTIV_BASEOID ".3.9.30.1.10.1.2.1.4291", NULL, SU_FLAG_NEGINVALID, NULL),
100+
snmp_info_default("ups.type", ST_FLAG_STRING, 1.0, VERTIV_BASEOID ".3.9.20.1.20.1.2.1.6199", NULL, SU_FLAG_OK | SU_FLAG_STATIC, NULL),
101+
102+
/* Battery Data */
103+
snmp_info_default("battery.charge", 0, 1.0, VERTIV_VAL_OID ".4153", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
104+
/* Multiplier 60.0 converts UPS minutes to NUT seconds */
105+
snmp_info_default("battery.runtime", 0, 60.0, VERTIV_VAL_OID ".4150", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
106+
snmp_info_default("battery.voltage", 0, 1.0, VERTIV_VAL_OID ".4148", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
107+
snmp_info_default("battery.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".6189", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
108+
109+
/* Power Quality - Scaled (0.1) for high precision decimal values (tenths of Volts/Amps/Hz) */
110+
snmp_info_default("input.voltage", 0, 0.1, VERTIV_VAL_OID ".4096", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
111+
snmp_info_default("input.current", 0, 0.1, VERTIV_VAL_OID ".4113", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
112+
snmp_info_default("input.frequency", 0, 0.1, VERTIV_VAL_OID ".4105", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
113+
snmp_info_default("input.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".4102", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
114+
snmp_info_default("input.current.nominal", 0, 1.0, VERTIV_VAL_OID ".4104", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
115+
snmp_info_default("input.frequency.nominal", 0, 1.0, VERTIV_VAL_OID ".4103", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
116+
snmp_info_default("output.voltage", 0, 0.1, VERTIV_VAL_OID ".4385", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
117+
snmp_info_default("output.current", 0, 0.1, VERTIV_VAL_OID ".4204", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
118+
snmp_info_default("output.frequency", 0, 0.1, VERTIV_VAL_OID ".4207", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
119+
snmp_info_default("output.power", 0, 1.0, VERTIV_VAL_OID ".4208", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
120+
snmp_info_default("output.power.apparent", 0, 1.0, VERTIV_VAL_OID ".4209", "", SU_FLAG_OK | SU_FLAG_NEGINVALID, NULL),
121+
snmp_info_default("output.voltage.nominal", 0, 1.0, VERTIV_VAL_OID ".4260", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
122+
snmp_info_default("output.power.nominal", 0, 1.0, VERTIV_VAL_OID ".4264", "", SU_FLAG_OK | SU_FLAG_STATIC, NULL),
123+
124+
/* UPS Status */
125+
snmp_info_default("ups.status", ST_FLAG_STRING, SU_INFOSIZE, VERTIV_VAL_OID ".4872", "", SU_STATUS_PWR | SU_FLAG_OK, vertiv_power_source_info),
126+
127+
/* Beeper status and commands */
128+
snmp_info_default("ups.beeper.status", ST_FLAG_STRING, SU_INFOSIZE, VERTIV_BEEPER_OID, "", SU_FLAG_UNIQUE, vertiv_beeper_status_info),
129+
130+
snmp_info_default("beeper.disable", 0, 1, VERTIV_BEEPER_OID, "2", SU_TYPE_CMD, NULL),
131+
snmp_info_default("beeper.enable", 0, 1, VERTIV_BEEPER_OID, "1", SU_TYPE_CMD, NULL),
132+
133+
#ifdef VERTIV_WITH_IETF_BEEPER_FALLBACK
134+
/* IETF MIB fallback */
135+
snmp_info_default("ups.beeper.status", ST_FLAG_STRING, SU_INFOSIZE, "1.3.6.1.2.1.33.1.9.8.0", "", SU_FLAG_UNIQUE, ietf_beeper_status_info),
136+
#if 0
137+
snmp_info_default("beeper.disable", 0, 1, "1.3.6.1.2.1.33.1.9.8.0", "1", SU_TYPE_CMD, NULL),
138+
snmp_info_default("beeper.enable", 0, 1, "1.3.6.1.2.1.33.1.9.8.0", "2", SU_TYPE_CMD, NULL),
139+
#endif
140+
snmp_info_default("beeper.mute", 0, 1, "1.3.6.1.2.1.33.1.9.8.0", "3", SU_TYPE_CMD, NULL),
141+
#endif /* VERTIV_WITH_IETF_BEEPER_FALLBACK */
142+
143+
/* Shutdown / Restart Control
144+
* NOTE: Other sources suggest
145+
* "ups.delay.shutdown" => VERTIV_BASEOID ".3.3.5.1.0"
146+
* "ups.delay.start" => VERTIV_BASEOID ".3.3.5.2.0"
147+
*/
148+
snmp_info_default("ups.delay.shutdown", ST_FLAG_RW, 1.0, VERTIV_VAL_OID ".5814", "", SU_TYPE_TIME | SU_FLAG_OK, NULL),
149+
snmp_info_default("ups.delay.start", ST_FLAG_RW, 1.0, VERTIV_VAL_OID ".5816", "", SU_TYPE_TIME | SU_FLAG_OK, NULL),
150+
151+
/* end of structure. */
152+
snmp_info_sentinel
113153
};
114154

115155
static alarms_info_t vertiv_alarms[] = {
116-
{ VERTIV_ALM_OID ".4168", "OB", "Battery Discharging" },
117-
{ VERTIV_ALM_OID ".4162", "LB", "Battery Low" },
118-
{ VERTIV_ALM_OID ".5806", "OVER", "Output Overload" },
119-
{ VERTIV_ALM_OID ".6182", "RB", "Replace Battery" },
120-
{ VERTIV_ALM_OID ".4233", "FAULT", "Inverter Failure" },
121-
{ VERTIV_ALM_OID ".4310", "OT", "Over Temperature" },
122-
{ VERTIV_ALM_OID ".4215", "OFF", "UPS Output Off" },
123-
{ NULL, NULL, NULL }
156+
{ VERTIV_ALM_OID ".4168", "OB", "Battery Discharging" },
157+
{ VERTIV_ALM_OID ".4162", "LB", "Battery Low" },
158+
{ VERTIV_ALM_OID ".5806", "OVER", "Output Overload" },
159+
{ VERTIV_ALM_OID ".6182", "RB", "Replace Battery" },
160+
{ VERTIV_ALM_OID ".4233", "FAULT", "Inverter Failure" },
161+
{ VERTIV_ALM_OID ".4310", "OT", "Over Temperature" },
162+
{ VERTIV_ALM_OID ".4215", "OFF", "UPS Output Off" },
163+
{ NULL, NULL, NULL }
124164
};
125165

126166
mib2nut_info_t vertiv = {
127-
"vertiv",
128-
VERTIV_MIB_VERSION,
129-
VERTIV_PWRSTATUS_OID,
130-
VERTIV_ID_OID,
131-
vertiv_mib,
132-
VERTIV_BASEOID,
133-
vertiv_alarms
167+
"vertiv",
168+
VERTIV_MIB_VERSION,
169+
VERTIV_PWRSTATUS_OID,/* Optional Power Status OID */
170+
VERTIV_ID_OID, /* Model Name OID */
171+
vertiv_mib,
172+
VERTIV_BASEOID, /* SysOID fingerprint */
173+
vertiv_alarms
134174
};

0 commit comments

Comments
 (0)