From b446cac8f697fb1417f8d07190f95fa40b690260 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Mon, 14 Oct 2013 14:33:54 +0200 Subject: daemon: Add new WarningLevel "Discharging" When UPSes are discharging, we should have a warning already, as it means that mains power has been lost to the UPS (though not to the computer). --- libupower-glib/up-types.c | 4 ++++ libupower-glib/up-types.h | 1 + src/org.freedesktop.UPower.Device.xml | 9 ++++++--- src/up-daemon.c | 7 +++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libupower-glib/up-types.c b/libupower-glib/up-types.c index db0aa68..71d8036 100644 --- a/libupower-glib/up-types.c +++ b/libupower-glib/up-types.c @@ -250,6 +250,8 @@ up_device_level_to_string (UpDeviceLevel level_enum) return "unknown"; case UP_DEVICE_LEVEL_NONE: return "none"; + case UP_DEVICE_LEVEL_DISCHARGING: + return "discharging"; case UP_DEVICE_LEVEL_LOW: return "low"; case UP_DEVICE_LEVEL_CRITICAL: @@ -280,6 +282,8 @@ up_device_level_from_string (const gchar *level) return UP_DEVICE_LEVEL_UNKNOWN; if (g_strcmp0 (level, "none") == 0) return UP_DEVICE_LEVEL_NONE; + if (g_strcmp0 (level, "discharging") == 0) + return UP_DEVICE_LEVEL_DISCHARGING; if (g_strcmp0 (level, "low") == 0) return UP_DEVICE_LEVEL_LOW; if (g_strcmp0 (level, "critical") == 0) diff --git a/libupower-glib/up-types.h b/libupower-glib/up-types.h index 0a175bc..7b09604 100644 --- a/libupower-glib/up-types.h +++ b/libupower-glib/up-types.h @@ -91,6 +91,7 @@ typedef enum { typedef enum { UP_DEVICE_LEVEL_UNKNOWN, UP_DEVICE_LEVEL_NONE, + UP_DEVICE_LEVEL_DISCHARGING, UP_DEVICE_LEVEL_LOW, UP_DEVICE_LEVEL_CRITICAL, UP_DEVICE_LEVEL_ACTION, diff --git a/src/org.freedesktop.UPower.Device.xml b/src/org.freedesktop.UPower.Device.xml index bbbe20d..d825c4b 100644 --- a/src/org.freedesktop.UPower.Device.xml +++ b/src/org.freedesktop.UPower.Device.xml @@ -698,13 +698,16 @@ method return sender=:1.386 -> dest=:1.477 reply_serial=2 1None - 2Low + 2Discharging (only for UPSes) - 3Critical + 3Low - 4Action + 4Critical + + + 5Action diff --git a/src/up-daemon.c b/src/up-daemon.c index 2018a91..ce1d5c5 100644 --- a/src/up-daemon.c +++ b/src/up-daemon.c @@ -551,6 +551,7 @@ up_daemon_compute_warning_level (UpDaemon *daemon, gint64 time_to_empty) { gboolean use_percentage = TRUE; + UpDeviceLevel default_level = UP_DEVICE_LEVEL_NONE; if (state != UP_DEVICE_STATE_DISCHARGING) return UP_DEVICE_LEVEL_NONE; @@ -566,6 +567,8 @@ up_daemon_compute_warning_level (UpDaemon *daemon, return UP_DEVICE_LEVEL_LOW; else return UP_DEVICE_LEVEL_NONE; + } else if (kind == UP_DEVICE_KIND_UPS) { + default_level = UP_DEVICE_LEVEL_DISCHARGING; } if (!power_supply || !daemon->priv->use_percentage_for_policy) @@ -573,7 +576,7 @@ up_daemon_compute_warning_level (UpDaemon *daemon, if (use_percentage) { if (percentage > daemon->priv->low_percentage) - return UP_DEVICE_LEVEL_NONE; + return default_level; if (percentage > daemon->priv->critical_percentage) return UP_DEVICE_LEVEL_LOW; if (percentage > daemon->priv->action_percentage) @@ -581,7 +584,7 @@ up_daemon_compute_warning_level (UpDaemon *daemon, return UP_DEVICE_LEVEL_ACTION; } else { if (time_to_empty > daemon->priv->low_time) - return UP_DEVICE_LEVEL_NONE; + return default_level; if (time_to_empty > daemon->priv->critical_time) return UP_DEVICE_LEVEL_LOW; if (time_to_empty > daemon->priv->action_time) -- cgit v1.2.1