summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2013-10-11 15:23:25 +0200
committerBastien Nocera <hadess@hadess.net>2013-10-14 10:42:56 +0200
commitbd3a57fe0471ddeb8f0a168f10629e8f5d7b7b6c (patch)
treeb5fd4e86161aa8eaf9c9f7eb395ba054d663e447
parent9c27c42a9977afe6e82622bda947b831c3be7197 (diff)
downloadupower-bd3a57fe0471ddeb8f0a168f10629e8f5d7b7b6c.tar.gz
daemon: Replace "on-low-battery" property
With "warning-level" property.
-rw-r--r--src/freebsd/up-device-supply.c28
-rwxr-xr-xsrc/linux/integration-test1
-rw-r--r--src/linux/up-device-hid.c31
-rw-r--r--src/linux/up-device-supply.c31
-rw-r--r--src/openbsd/up-backend.c25
-rw-r--r--src/org.freedesktop.UPower.xml6
-rw-r--r--src/up-daemon.c89
-rw-r--r--src/up-daemon.h6
-rw-r--r--src/up-device.c19
-rw-r--r--src/up-device.h4
10 files changed, 56 insertions, 184 deletions
diff --git a/src/freebsd/up-device-supply.c b/src/freebsd/up-device-supply.c
index 54c21a3..f2cc1c4 100644
--- a/src/freebsd/up-device-supply.c
+++ b/src/freebsd/up-device-supply.c
@@ -54,7 +54,6 @@ static gboolean up_device_supply_battery_coldplug (UpDevice *device, UpAcpiNati
static gboolean up_device_supply_acline_set_properties (UpDevice *device);
static gboolean up_device_supply_battery_set_properties (UpDevice *device, UpAcpiNative *native);
static gboolean up_device_supply_get_on_battery (UpDevice *device, gboolean *on_battery);
-static gboolean up_device_supply_get_low_battery (UpDevice *device, gboolean *low_battery);
static gboolean up_device_supply_get_online (UpDevice *device, gboolean *online);
/**
@@ -439,32 +438,6 @@ up_device_supply_get_on_battery (UpDevice *device, gboolean *on_battery)
}
/**
- * up_device_supply_get_low_battery:
- **/
-static gboolean
-up_device_supply_get_low_battery (UpDevice *device, gboolean *low_battery)
-{
- gboolean ret;
- gboolean on_battery;
- gdouble percentage;
-
- g_return_val_if_fail (low_battery != NULL, FALSE);
-
- ret = up_device_supply_get_on_battery (device, &on_battery);
- if (!ret)
- return FALSE;
-
- if (!on_battery) {
- *low_battery = FALSE;
- return TRUE;
- }
-
- g_object_get (device, "percentage", &percentage, NULL);
- *low_battery = (percentage < 10.0f);
- return TRUE;
-}
-
-/**
* up_device_supply_get_online:
**/
static gboolean
@@ -506,7 +479,6 @@ up_device_supply_class_init (UpDeviceSupplyClass *klass)
UpDeviceClass *device_class = UP_DEVICE_CLASS (klass);
device_class->get_on_battery = up_device_supply_get_on_battery;
- device_class->get_low_battery = up_device_supply_get_low_battery;
device_class->get_online = up_device_supply_get_online;
device_class->coldplug = up_device_supply_coldplug;
device_class->refresh = up_device_supply_refresh;
diff --git a/src/linux/integration-test b/src/linux/integration-test
index 510e1f7..c004740 100755
--- a/src/linux/integration-test
+++ b/src/linux/integration-test
@@ -726,7 +726,6 @@ class Tests(unittest.TestCase):
self.assertIn(client.get_lid_is_present(), [False, True])
self.assertIn(client.get_lid_is_closed(), [False, True])
self.assertEqual(client.get_on_battery(), False)
- self.assertEqual(client.get_on_low_battery(), False)
#
# Helper methods
diff --git a/src/linux/up-device-hid.c b/src/linux/up-device-hid.c
index d7d4440..a7bb07c 100644
--- a/src/linux/up-device-hid.c
+++ b/src/linux/up-device-hid.c
@@ -466,36 +466,6 @@ up_device_hid_get_on_battery (UpDevice *device, gboolean *on_battery)
}
/**
- * up_device_hid_get_low_battery:
- **/
-static gboolean
-up_device_hid_get_low_battery (UpDevice *device, gboolean *low_battery)
-{
- gboolean ret;
- gboolean on_battery;
- UpDeviceHid *hid = UP_DEVICE_HID (device);
- gdouble percentage;
-
- g_return_val_if_fail (UP_IS_DEVICE_HID (hid), FALSE);
- g_return_val_if_fail (low_battery != NULL, FALSE);
-
- /* reuse the common checks */
- ret = up_device_hid_get_on_battery (device, &on_battery);
- if (!ret)
- return FALSE;
-
- /* shortcut */
- if (!on_battery) {
- *low_battery = FALSE;
- return TRUE;
- }
-
- g_object_get (device, "percentage", &percentage, NULL);
- *low_battery = (percentage < 10.0f);
- return TRUE;
-}
-
-/**
* up_device_hid_init:
**/
static void
@@ -544,7 +514,6 @@ up_device_hid_class_init (UpDeviceHidClass *klass)
object_class->finalize = up_device_hid_finalize;
device_class->coldplug = up_device_hid_coldplug;
device_class->get_on_battery = up_device_hid_get_on_battery;
- device_class->get_low_battery = up_device_hid_get_low_battery;
device_class->refresh = up_device_hid_refresh;
g_type_class_add_private (klass, sizeof (UpDeviceHidPrivate));
diff --git a/src/linux/up-device-supply.c b/src/linux/up-device-supply.c
index c1b046e..48bf786 100644
--- a/src/linux/up-device-supply.c
+++ b/src/linux/up-device-supply.c
@@ -176,36 +176,6 @@ up_device_supply_get_on_battery (UpDevice *device, gboolean *on_battery)
}
/**
- * up_device_supply_get_low_battery:
- **/
-static gboolean
-up_device_supply_get_low_battery (UpDevice *device, gboolean *low_battery)
-{
- gboolean ret;
- gboolean on_battery;
- UpDeviceSupply *supply = UP_DEVICE_SUPPLY (device);
- gdouble percentage;
-
- g_return_val_if_fail (UP_IS_DEVICE_SUPPLY (supply), FALSE);
- g_return_val_if_fail (low_battery != NULL, FALSE);
-
- /* reuse the common checks */
- ret = up_device_supply_get_on_battery (device, &on_battery);
- if (!ret)
- return FALSE;
-
- /* shortcut */
- if (!on_battery) {
- *low_battery = FALSE;
- return TRUE;
- }
-
- g_object_get (device, "percentage", &percentage, NULL);
- *low_battery = (percentage < 10.0f);
- return TRUE;
-}
-
-/**
* up_device_supply_get_online:
**/
static gboolean
@@ -1100,7 +1070,6 @@ up_device_supply_class_init (UpDeviceSupplyClass *klass)
object_class->finalize = up_device_supply_finalize;
device_class->get_on_battery = up_device_supply_get_on_battery;
- device_class->get_low_battery = up_device_supply_get_low_battery;
device_class->get_online = up_device_supply_get_online;
device_class->coldplug = up_device_supply_coldplug;
device_class->refresh = up_device_supply_refresh;
diff --git a/src/openbsd/up-backend.c b/src/openbsd/up-backend.c
index c8f75ea..b6bd001 100644
--- a/src/openbsd/up-backend.c
+++ b/src/openbsd/up-backend.c
@@ -36,7 +36,6 @@ UpDeviceState up_backend_apm_get_battery_state_value(u_char battery_state);
static void up_backend_update_acpibat_state(UpDevice*, struct sensordev);
static gboolean up_apm_device_get_on_battery (UpDevice *device, gboolean *on_battery);
-static gboolean up_apm_device_get_low_battery (UpDevice *device, gboolean *low_battery);
static gboolean up_apm_device_get_online (UpDevice *device, gboolean *online);
static gboolean up_apm_device_refresh (UpDevice *device);
@@ -92,28 +91,6 @@ up_apm_device_get_on_battery (UpDevice *device, gboolean * on_battery)
*on_battery = (state == UP_DEVICE_STATE_DISCHARGING);
return TRUE;
}
-gboolean
-up_apm_device_get_low_battery (UpDevice *device, gboolean * low_battery)
-{
- gboolean ret;
- gboolean on_battery;
- gdouble percentage;
-
- g_return_val_if_fail (low_battery != NULL, FALSE);
-
- ret = up_apm_device_get_on_battery (device, &on_battery);
- if (!ret)
- return FALSE;
-
- if (!on_battery) {
- *low_battery = FALSE;
- return TRUE;
- }
-
- g_object_get (device, "percentage", &percentage, (void*) NULL);
- *low_battery = (percentage < 10.0f);
- return TRUE;
-}
gboolean
up_apm_device_get_online (UpDevice *device, gboolean * online)
@@ -509,12 +486,10 @@ up_backend_init (UpBackend *backend)
backend->priv->battery = UP_DEVICE(up_device_new ());
device_class = UP_DEVICE_GET_CLASS (backend->priv->battery);
device_class->get_on_battery = up_apm_device_get_on_battery;
- device_class->get_low_battery = up_apm_device_get_low_battery;
device_class->get_online = up_apm_device_get_online;
device_class->refresh = up_apm_device_refresh;
device_class = UP_DEVICE_GET_CLASS (backend->priv->ac);
device_class->get_on_battery = up_apm_device_get_on_battery;
- device_class->get_low_battery = up_apm_device_get_low_battery;
device_class->get_online = up_apm_device_get_online;
device_class->refresh = up_apm_device_refresh;
/* creates thread */
diff --git a/src/org.freedesktop.UPower.xml b/src/org.freedesktop.UPower.xml
index 8fe71e1..f972c1c 100644
--- a/src/org.freedesktop.UPower.xml
+++ b/src/org.freedesktop.UPower.xml
@@ -126,10 +126,10 @@ method return sender=:1.386 -> dest=:1.451 reply_serial=2
</doc:para></doc:description></doc:doc>
</property>
- <property name="OnLowBattery" type="b" access="read">
+ <property name="WarningLevel" type="u" access="read">
<doc:doc><doc:description><doc:para>
- Indicates whether the system is running on battery power and if the battery is critically low.
- This property is provided for convenience.
+ Indicates whether the system is running on battery power and if the batteries are low,
+ or critically low. This property is provided for convenience.
</doc:para></doc:description></doc:doc>
</property>
diff --git a/src/up-daemon.c b/src/up-daemon.c
index 2da05b9..10c836a 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -47,10 +47,10 @@ enum
PROP_0,
PROP_DAEMON_VERSION,
PROP_ON_BATTERY,
- PROP_ON_LOW_BATTERY,
PROP_LID_IS_CLOSED,
PROP_LID_IS_PRESENT,
PROP_IS_DOCKED,
+ PROP_WARNING_LEVEL,
PROP_LAST
};
@@ -74,7 +74,7 @@ struct UpDaemonPrivate
UpBackend *backend;
UpDeviceList *power_devices;
gboolean on_battery;
- gboolean on_low_battery;
+ UpDeviceLevel warning_level;
gboolean lid_is_closed;
gboolean lid_is_present;
gboolean is_docked;
@@ -93,7 +93,7 @@ struct UpDaemonPrivate
static void up_daemon_finalize (GObject *object);
static gboolean up_daemon_get_on_battery_local (UpDaemon *daemon);
-static gboolean up_daemon_get_on_low_battery_local (UpDaemon *daemon);
+static gboolean up_daemon_get_warning_level_local(UpDaemon *daemon);
static gboolean up_daemon_get_on_ac_local (UpDaemon *daemon);
G_DEFINE_TYPE (UpDaemon, up_daemon, G_TYPE_OBJECT)
@@ -160,32 +160,41 @@ up_daemon_get_number_devices_of_type (UpDaemon *daemon, UpDeviceKind type)
}
/**
- * up_daemon_get_on_low_battery_local:
+ * up_daemon_get_warning_level_local:
*
* As soon as _all_ batteries are low, this is true
**/
static gboolean
-up_daemon_get_on_low_battery_local (UpDaemon *daemon)
+up_daemon_get_warning_level_local (UpDaemon *daemon)
{
guint i;
- gboolean ret;
- gboolean result = TRUE;
- gboolean on_low_battery;
- UpDevice *device;
GPtrArray *array;
+ UpDeviceLevel level = UP_DEVICE_LEVEL_LAST;
/* ask each device */
array = up_device_list_get_array (daemon->priv->power_devices);
- for (i=0; i<array->len; i++) {
- device = (UpDevice *) g_ptr_array_index (array, i);
- ret = up_device_get_low_battery (device, &on_low_battery);
- if (ret && !on_low_battery) {
- result = FALSE;
- break;
- }
+ for (i = 0; i < array->len; i++) {
+ UpDevice *device;
+ UpDeviceLevel device_level;
+ UpDeviceKind kind;
+
+ device = g_ptr_array_index (array, i);
+ g_object_get (G_OBJECT (device),
+ "type", &kind,
+ "warning-level", &device_level,
+ NULL);
+ if (kind != UP_DEVICE_KIND_BATTERY &&
+ kind != UP_DEVICE_KIND_UPS)
+ continue;
+ if (device_level < level)
+ level = device_level;
}
g_ptr_array_unref (array);
- return result;
+
+ if (level == UP_DEVICE_LEVEL_LAST)
+ level = UP_DEVICE_LEVEL_NONE;
+
+ return level;
}
/**
@@ -316,7 +325,7 @@ up_daemon_startup (UpDaemon *daemon)
{
gboolean ret;
gboolean on_battery;
- gboolean on_low_battery;
+ UpDeviceLevel warning_level;
UpDaemonPrivate *priv = daemon->priv;
/* register on bus */
@@ -341,9 +350,9 @@ up_daemon_startup (UpDaemon *daemon)
/* get battery state */
on_battery = (up_daemon_get_on_battery_local (daemon) &&
!up_daemon_get_on_ac_local (daemon));
- on_low_battery = up_daemon_get_on_low_battery_local (daemon);
+ warning_level = up_daemon_get_warning_level_local (daemon);
up_daemon_set_on_battery (daemon, on_battery);
- up_daemon_set_on_low_battery (daemon, on_low_battery);
+ up_daemon_set_warning_level (daemon, warning_level);
/* start signals and callbacks */
g_object_thaw_notify (G_OBJECT(daemon));
@@ -426,15 +435,15 @@ up_daemon_set_on_battery (UpDaemon *daemon, gboolean on_battery)
}
/**
- * up_daemon_set_on_low_battery:
+ * up_daemon_set_warning_level:
**/
void
-up_daemon_set_on_low_battery (UpDaemon *daemon, gboolean on_low_battery)
+up_daemon_set_warning_level (UpDaemon *daemon, UpDeviceLevel warning_level)
{
UpDaemonPrivate *priv = daemon->priv;
- g_debug ("on_low_battery = %s", on_low_battery ? "yes" : "no");
- priv->on_low_battery = on_low_battery;
- g_object_notify (G_OBJECT (daemon), "on-low-battery");
+ g_debug ("warning_level = %s", up_device_level_to_string (warning_level));
+ priv->warning_level = warning_level;
+ g_object_notify (G_OBJECT (daemon), "warning-level");
}
UpDeviceLevel
@@ -520,6 +529,7 @@ up_daemon_device_changed_cb (UpDevice *device, UpDaemon *daemon)
UpDeviceKind type;
gboolean ret;
UpDaemonPrivate *priv = daemon->priv;
+ UpDeviceLevel warning_level;
g_return_if_fail (UP_IS_DAEMON (daemon));
g_return_if_fail (UP_IS_DEVICE (device));
@@ -534,14 +544,14 @@ up_daemon_device_changed_cb (UpDevice *device, UpDaemon *daemon)
up_daemon_poll_battery_devices_for_a_little_bit (daemon);
}
- /* second, check if the on_battery and on_low_battery state has changed */
+ /* second, check if the on_battery and warning_level state has changed */
ret = (up_daemon_get_on_battery_local (daemon) && !up_daemon_get_on_ac_local (daemon));
if (ret != priv->on_battery) {
up_daemon_set_on_battery (daemon, ret);
}
- ret = up_daemon_get_on_low_battery_local (daemon);
- if (ret != priv->on_low_battery)
- up_daemon_set_on_low_battery (daemon, ret);
+ warning_level = up_daemon_get_warning_level_local (daemon);
+ if (warning_level != priv->warning_level)
+ up_daemon_set_warning_level (daemon, warning_level);
/* emit */
if (!priv->during_coldplug) {
@@ -726,7 +736,7 @@ up_daemon_init (UpDaemon *daemon)
G_CALLBACK (up_daemon_properties_changed_cb), daemon);
g_signal_connect (daemon, "notify::on-battery",
G_CALLBACK (up_daemon_properties_changed_cb), daemon);
- g_signal_connect (daemon, "notify::on-low-battery",
+ g_signal_connect (daemon, "notify::warning-level",
G_CALLBACK (up_daemon_properties_changed_cb), daemon);
}
@@ -780,9 +790,6 @@ up_daemon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
case PROP_ON_BATTERY:
g_value_set_boolean (value, priv->on_battery);
break;
- case PROP_ON_LOW_BATTERY:
- g_value_set_boolean (value, priv->on_battery && priv->on_low_battery);
- break;
case PROP_LID_IS_CLOSED:
g_value_set_boolean (value, priv->lid_is_closed);
break;
@@ -792,6 +799,9 @@ up_daemon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
case PROP_IS_DOCKED:
g_value_set_boolean (value, priv->is_docked);
break;
+ case PROP_WARNING_LEVEL:
+ g_value_set_uint (value, priv->warning_level);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -875,12 +885,13 @@ up_daemon_class_init (UpDaemonClass *klass)
G_PARAM_READABLE));
g_object_class_install_property (object_class,
- PROP_ON_LOW_BATTERY,
- g_param_spec_boolean ("on-low-battery",
- "On Low Battery",
- "Whether the system is running on battery and if the battery is critically low",
- FALSE,
- G_PARAM_READABLE));
+ PROP_WARNING_LEVEL,
+ g_param_spec_uint ("warning-level",
+ NULL, NULL,
+ UP_DEVICE_LEVEL_UNKNOWN,
+ UP_DEVICE_LEVEL_LAST,
+ UP_DEVICE_LEVEL_UNKNOWN,
+ G_PARAM_READABLE));
g_object_class_install_property (object_class,
PROP_LID_IS_CLOSED,
diff --git a/src/up-daemon.h b/src/up-daemon.h
index d580cbd..b706d15 100644
--- a/src/up-daemon.h
+++ b/src/up-daemon.h
@@ -81,8 +81,8 @@ void up_daemon_set_is_docked (UpDaemon *daemon,
gboolean is_docked);
void up_daemon_set_on_battery (UpDaemon *daemon,
gboolean on_battery);
-void up_daemon_set_on_low_battery (UpDaemon *daemon,
- gboolean on_low_battery);
+void up_daemon_set_warning_level (UpDaemon *daemon,
+ UpDeviceLevel warning_level);
UpDeviceLevel up_daemon_compute_warning_level(UpDaemon *daemon,
gboolean power_supply,
gdouble percentage,
@@ -94,7 +94,7 @@ gboolean up_daemon_enumerate_devices (UpDaemon *daemon,
DBusGMethodInvocation *context);
gboolean up_daemon_get_on_battery (UpDaemon *daemon,
DBusGMethodInvocation *context);
-gboolean up_daemon_get_low_battery (UpDaemon *daemon,
+guint up_daemon_get_warning_level (UpDaemon *daemon,
DBusGMethodInvocation *context);
G_END_DECLS
diff --git a/src/up-device.c b/src/up-device.c
index 15edc0d..1877bab 100644
--- a/src/up-device.c
+++ b/src/up-device.c
@@ -409,25 +409,6 @@ up_device_get_on_battery (UpDevice *device, gboolean *on_battery)
}
/**
- * up_device_get_low_battery:
- *
- * Note: Only implement for system devices, i.e. ones supplying the system
- **/
-gboolean
-up_device_get_low_battery (UpDevice *device, gboolean *low_battery)
-{
- UpDeviceClass *klass = UP_DEVICE_GET_CLASS (device);
-
- g_return_val_if_fail (UP_IS_DEVICE (device), FALSE);
-
- /* no support */
- if (klass->get_low_battery == NULL)
- return FALSE;
-
- return klass->get_low_battery (device, low_battery);
-}
-
-/**
* up_device_get_online:
*
* Note: Only implement for system devices, i.e. devices supplying the system
diff --git a/src/up-device.h b/src/up-device.h
index 020e529..1f01f82 100644
--- a/src/up-device.h
+++ b/src/up-device.h
@@ -55,8 +55,6 @@ typedef struct
const gchar *(*get_id) (UpDevice *device);
gboolean (*get_on_battery) (UpDevice *device,
gboolean *on_battery);
- gboolean (*get_low_battery) (UpDevice *device,
- gboolean *low_battery);
gboolean (*get_online) (UpDevice *device,
gboolean *online);
} UpDeviceClass;
@@ -84,8 +82,6 @@ GObject *up_device_get_native (UpDevice *device);
const gchar *up_device_get_object_path (UpDevice *device);
gboolean up_device_get_on_battery (UpDevice *device,
gboolean *on_battery);
-gboolean up_device_get_low_battery (UpDevice *device,
- gboolean *low_battery);
gboolean up_device_get_online (UpDevice *device,
gboolean *online);
gboolean up_device_refresh_internal (UpDevice *device);