ssuominen 14/05/26 19:37:42 Added: upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch upower-pm-utils-0.9.23-create-dir-runtime.patch upower-pm-utils-0.9.23-fix-segfault.patch Log: Initial commit. (Portage version: 2.2.10/cvs/Linux x86_64, signed Manifest commit with key 4868F14D)
Revision Changes Path 1.1 sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch?rev=1.1&content-type=text/plain Index: upower-pm-utils-0.9.23-clamp_percentage_for_overfull_batt.patch =================================================================== >From b8fe9902f3c6c50ca6a23e24fcea99582beebc65 Mon Sep 17 00:00:00 2001 From: Martin Pitt <martinp...@gnome.org> Date: Tue, 22 Oct 2013 08:02:51 +0000 Subject: linux: Clamp percentage for overfull batteries Some batteries report energy > energy_full and a percentage ("capacity" attribute) > 100%. Clamp these within 0 and 100% for both plausibility as well as to avoid setting an out-of-range property which would then become 0%. https://launchpad.net/bugs/1240673 --- diff --git a/src/linux/integration-test b/src/linux/integration-test index 8489bf3..4be1922 100755 --- a/src/linux/integration-test +++ b/src/linux/integration-test @@ -442,6 +442,39 @@ class Tests(unittest.TestCase): self.assertEqual(self.get_dbus_property('OnLowBattery'), False) self.stop_daemon() + def test_battery_overfull(self): + '''battery which reports a > 100% percentage for a full battery''' + + self.testbed.add_device('power_supply', 'BAT0', None, + ['type', 'Battery', + 'present', '1', + 'status', 'Full', + 'current_now', '1000', + 'charge_now', '11000000', + 'charge_full', '10000000', + 'charge_full_design', '11000000', + 'capacity', '110', + 'voltage_now', '12000000'], []) + + self.start_daemon() + devs = self.proxy.EnumerateDevices() + self.assertEqual(len(devs), 1) + bat0_up = devs[0] + + # should clamp percentage + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Percentage'), 100.0) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'IsPresent'), True) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'State'), + UP_DEVICE_STATE_FULLY_CHARGED) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Energy'), 132.0) + # should adjust EnergyFull to reality, not what the battery claims + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'EnergyFull'), 132.0) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'EnergyFullDesign'), 132.0) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Voltage'), 12.0) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'PowerSupply'), True) + self.assertEqual(self.get_dbus_dev_property(bat0_up, 'Type'), 2) + self.stop_daemon() + def test_battery_temperature(self): '''battery which reports temperature''' diff --git a/src/linux/up-device-supply.c b/src/linux/up-device-supply.c index 8020277..b953d65 100644 --- a/src/linux/up-device-supply.c +++ b/src/linux/up-device-supply.c @@ -708,6 +708,10 @@ up_device_supply_refresh_battery (UpDeviceSupply *supply) /* get a precise percentage */ if (sysfs_file_exists (native_path, "capacity")) { percentage = sysfs_get_double (native_path, "capacity"); + if (percentage < 0.0f) + percentage = 0.0f; + if (percentage > 100.0f) + percentage = 100.0f; /* for devices which provide capacity, but not {energy,charge}_now */ if (energy < 0.1f && energy_full > 0.0f) energy = energy_full * percentage / 100; -- cgit v0.9.0.2-2-gbebe 1.1 sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-create-dir-runtime.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-create-dir-runtime.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-create-dir-runtime.patch?rev=1.1&content-type=text/plain Index: upower-pm-utils-0.9.23-create-dir-runtime.patch =================================================================== >From b9cff29978113aefe3ad18521f383f12ab099a34 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi <cos...@endlessm.com> Date: Tue, 25 Feb 2014 09:43:04 +0000 Subject: Create the history directory at runtime In addition to build time - this increases compatibilty with OSTree, which starts out with an empty /var. Signed-off-by: Richard Hughes <rich...@hughsie.com> --- diff --git a/src/up-history.c b/src/up-history.c index f9d0fdf..795b093 100644 --- a/src/up-history.c +++ b/src/up-history.c @@ -414,6 +414,7 @@ up_history_set_directory (UpHistory *history, const gchar *dir) { g_free (history->priv->dir); history->priv->dir = g_strdup (dir); + g_mkdir_with_parents (dir, 0755); } /** @@ -887,7 +888,8 @@ up_history_init (UpHistory *history) history->priv->data_time_full = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); history->priv->data_time_empty = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); history->priv->max_data_age = UP_HISTORY_DEFAULT_MAX_DATA_AGE; - history->priv->dir = g_build_filename (HISTORY_DIR, NULL); + + up_history_set_directory (history, HISTORY_DIR); } /** -- cgit v0.9.0.2-2-gbebe 1.1 sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-fix-segfault.patch file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-fix-segfault.patch?rev=1.1&view=markup plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/sys-power/upower-pm-utils/files/upower-pm-utils-0.9.23-fix-segfault.patch?rev=1.1&content-type=text/plain Index: upower-pm-utils-0.9.23-fix-segfault.patch =================================================================== >From 0d64bbddaa0078ef148d609a3cfad854cf00d7de Mon Sep 17 00:00:00 2001 From: Martin Pitt <martinp...@gnome.org> Date: Fri, 08 Nov 2013 13:59:50 +0000 Subject: lib: Fix segfault on getting property when daemon is not running This fixes "upower --version" when the daemon is not running, and thus the client proxy is NULL. --- diff --git a/libupower-glib/up-client.c b/libupower-glib/up-client.c index 35d7b5d..17fb02d 100644 --- a/libupower-glib/up-client.c +++ b/libupower-glib/up-client.c @@ -322,6 +322,9 @@ up_client_get_property (GObject *object, UpClient *client; client = UP_CLIENT (object); + if (client->priv->proxy == NULL) + return; + switch (prop_id) { case PROP_DAEMON_VERSION: g_value_set_string (value, up_client_glue_get_daemon_version (client->priv->proxy)); -- cgit v0.9.0.2-2-gbebe