summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <lekensteyn@gmail.com>2013-09-03 23:18:11 +0200
committerPeter Wu <lekensteyn@gmail.com>2013-09-03 23:18:11 +0200
commita03a13a71b6e5e5a1f86cdf74051a7032dfc71f4 (patch)
tree6fb264c7a0e452f54338e850c27202b4209dda3e
parent43cb53961b279af5ed961596737f053801da5fb8 (diff)
downloadupower-hidpp-rework.tar.gz
hidpp: try harder not to report 0% batteryhidpp-rework
(1) If the K800 keyboard is charging via the USB cable, it will report itself as Charging, but with a discharge level of 0 (which means "unknown". In this case, the previous known value (before connecting the cable) is always a better approximation than using zero. (2) When the K800 has fully charged (but with the cable still plugged in), it will still report 0 as discharge level. "Full" is 100% by definition, so let's fallback to that value. Signed-off-by: Peter Wu <lekensteyn@gmail.com>
-rw-r--r--src/linux/hidpp-device.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/linux/hidpp-device.c b/src/linux/hidpp-device.c
index c6d9fbe..24a095c 100644
--- a/src/linux/hidpp-device.c
+++ b/src/linux/hidpp-device.c
@@ -973,12 +973,17 @@ hidpp_device_refresh (HidppDevice *device,
priv->batt_status = HIDPP_DEVICE_BATT_STATUS_CHARGING;
break;
case 3: /* charging complete */
+ priv->batt_percentage = 100;
priv->batt_status = HIDPP_DEVICE_BATT_STATUS_CHARGED;
break;
default:
break;
}
- priv->batt_percentage = msg.s.params[0];
+
+ /* do not overwrite battery status with 0 (unknown) */
+ if (msg.s.params[0] != 0)
+ priv->batt_percentage = msg.s.params[0];
+
g_debug ("level=%i%%, next-level=%i%%, battery-status=%i",
msg.s.params[0], msg.s.params[1], msg.s.params[2]);
}