diff options
author | Bastien Nocera <hadess@hadess.net> | 2013-10-11 15:23:25 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2013-10-14 10:42:56 +0200 |
commit | bd3a57fe0471ddeb8f0a168f10629e8f5d7b7b6c (patch) | |
tree | b5fd4e86161aa8eaf9c9f7eb395ba054d663e447 | |
parent | 9c27c42a9977afe6e82622bda947b831c3be7197 (diff) | |
download | upower-bd3a57fe0471ddeb8f0a168f10629e8f5d7b7b6c.tar.gz |
daemon: Replace "on-low-battery" property
With "warning-level" property.
-rw-r--r-- | src/freebsd/up-device-supply.c | 28 | ||||
-rwxr-xr-x | src/linux/integration-test | 1 | ||||
-rw-r--r-- | src/linux/up-device-hid.c | 31 | ||||
-rw-r--r-- | src/linux/up-device-supply.c | 31 | ||||
-rw-r--r-- | src/openbsd/up-backend.c | 25 | ||||
-rw-r--r-- | src/org.freedesktop.UPower.xml | 6 | ||||
-rw-r--r-- | src/up-daemon.c | 89 | ||||
-rw-r--r-- | src/up-daemon.h | 6 | ||||
-rw-r--r-- | src/up-device.c | 19 | ||||
-rw-r--r-- | src/up-device.h | 4 |
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); |