summaryrefslogtreecommitdiff
path: root/src/up-daemon.c
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-10-11 14:29:04 +0200
committerBastien Nocera <hadess@hadess.net>2013-10-14 10:42:56 +0200
commitde749a332b8b659ca9ec33103110cf64e43b5109 (patch)
tree57729bd0480071d063d0028e5897a5b5db10af52 /src/up-daemon.c
parent68aca3a7e7dbbbeab9d6728b1c3d42fa2fdb1538 (diff)
downloadupower-de749a332b8b659ca9ec33103110cf64e43b5109.tar.gz
daemon: Add WarningLevel device property
Diffstat (limited to 'src/up-daemon.c')
-rw-r--r--src/up-daemon.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/up-daemon.c b/src/up-daemon.c
index c57c797..2da05b9 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -437,6 +437,37 @@ up_daemon_set_on_low_battery (UpDaemon *daemon, gboolean on_low_battery)
g_object_notify (G_OBJECT (daemon), "on-low-battery");
}
+UpDeviceLevel
+up_daemon_compute_warning_level(UpDaemon *daemon,
+ gboolean power_supply,
+ gdouble percentage,
+ gint64 time_to_empty)
+{
+ gboolean use_percentage = TRUE;
+
+ if (!power_supply || !daemon->priv->use_percentage_for_policy)
+ use_percentage = FALSE;
+
+ if (use_percentage) {
+ if (percentage > daemon->priv->low_percentage)
+ return UP_DEVICE_LEVEL_NONE;
+ if (percentage > daemon->priv->critical_percentage)
+ return UP_DEVICE_LEVEL_LOW;
+ if (percentage > daemon->priv->action_percentage)
+ return UP_DEVICE_LEVEL_CRITICAL;
+ return UP_DEVICE_LEVEL_ACTION;
+ } else {
+ if (time_to_empty > daemon->priv->low_time)
+ return UP_DEVICE_LEVEL_NONE;
+ if (time_to_empty > daemon->priv->critical_time)
+ return UP_DEVICE_LEVEL_LOW;
+ if (time_to_empty > daemon->priv->action_time)
+ return UP_DEVICE_LEVEL_CRITICAL;
+ return UP_DEVICE_LEVEL_ACTION;
+ }
+ g_assert_not_reached ();
+}
+
/**
* up_daemon_refresh_battery_devices_cb:
**/