Hello,
the appended patch converts the reason of transfer to be human readable.
How about adding this variable to the usbmon message when it detects
being on battery?
Michael
----------------------------------------------------------------------
--- ./drivers/apcsmart.h.orig 2009-12-09 16:52:56.000000000 +0100
+++ ./drivers/apcsmart.h 2009-12-09 16:54:34.000000000 +0100
@@ -98,6 +98,7 @@
#define APC_F_SECONDS 0x100000 /* Time in seconds */
#define APC_F_MINUTES 0x110000 /* Time in minutes */
#define APC_F_HOURS 0x120000 /* Time in hours */
+#define APC_F_REASON 0x130000 /* Reason of transfer */
#define APC_F_LEAVE 0 /* Just pass this through */
struct apc_vartab_t {
@@ -143,7 +144,7 @@
{ "input.transfer.high",
APC_F_VOLT, 'u' },
{ "input.transfer.reason",
- APC_POLL, 'G' },
+ APC_POLL|APC_F_REASON, 'G' },
{ "input.voltage.maximum",
APC_POLL|APC_F_VOLT, 'M' },
--- ./drivers/apcsmart.c.orig 2009-12-09 16:39:46.000000000 +0100
+++ ./drivers/apcsmart.c 2010-02-02 13:46:48.000000000 +0100
@@ -106,6 +106,17 @@
snprintf(tmp, sizeof(tmp), "%d", tval);
return tmp;
+ case APC_F_REASON:
+ switch (upsval[0]) {
+ case 'R': return "unacceptable utility voltage rate of
change";
+ case 'H': return "high utility voltage";
+ case 'L': return "low utility voltage";
+ case 'T': return "line voltage notch or spike";
+ case 'O': return "no transfers yet since turnon";
+ case 'S': return "simulated power failure or UPS test";
+ default: return upsval;
+ }
+
default:
upslogx(LOG_NOTICE, "Unable to handle conversion of %s",
cmd_entry->name);