diff --git a/drivers/usbhid-ups.c b/drivers/usbhid-ups.c index b5968d0a02..ac0b43fdf6 100644 --- a/drivers/usbhid-ups.c +++ b/drivers/usbhid-ups.c @@ -280,6 +280,7 @@ static status_lkp_t status_info[] = { { "boost", STATUS(BOOST) }, { "bypassauto", STATUS(BYPASSAUTO) }, { "bypassman", STATUS(BYPASSMAN) }, + { "ecomode", STATUS(ECOMODE) }, { "off", STATUS(OFF) }, { "cal", STATUS(CALIB) }, { "overheat", STATUS(OVERHEAT) }, @@ -371,6 +372,12 @@ info_lkp_t bypass_manual_info[] = { { 0, "!bypassman", NULL, NULL }, { 0, NULL, NULL, NULL } }; +info_lkp_t eco_mode_info[] = { + { 0, "normal", NULL, NULL }, + { 1, "high-efficiency", NULL, NULL }, + { 2, "ESS", NULL, NULL }, /* makes sense for UPS that implements this mode */ + { 0, NULL, NULL, NULL } +}; /* note: this value is reverted (0=set, 1=not set). We report "being off" rather than "being on", so that devices that don't implement this variable are "on" by default */ @@ -2086,6 +2093,9 @@ static void ups_alarm_set(void) if (ups_status & STATUS(BYPASSMAN)) { alarm_set("Manual bypass mode!"); } + if (ups_status & STATUS(ECOMODE)) { + alarm_set("HE/ECO mode!"); + } } /* Return the current value of ups_status */ diff --git a/drivers/usbhid-ups.h b/drivers/usbhid-ups.h index f6f67fea72..06c1085c96 100644 --- a/drivers/usbhid-ups.h +++ b/drivers/usbhid-ups.h @@ -142,6 +142,7 @@ typedef enum { BOOST, /* SmartBoost */ BYPASSAUTO, /* on automatic bypass */ BYPASSMAN, /* on manual/service bypass */ + ECOMODE, /* High Efficiency (aka ECO Mode) */ OFF, /* ups is off */ CALIB, /* calibration */ OVERHEAT, /* overheat; Belkin, TrippLite */