Battery: better Unknown state handling
o9000 mrovi9000@gmail.com
2 files changed,
13 insertions(+),
3 deletions(-)
M
src/battery/battery.c
→
src/battery/battery.c
@@ -176,7 +176,7 @@ (battery_state.state == BATTERY_CHARGING)
? "Charging" : (battery_state.state == BATTERY_DISCHARGING) ? "Discharging" - : (battery_state.state == BATTERY_FULL || battery_state.percentage >= 100) + : (battery_state.state == BATTERY_FULL) ? "Full" : "Unknown", BATTERY_BUF_SIZE);@@ -194,8 +194,7 @@ snprintf(buf, sizeof(buf), "%d%%", battery_state.percentage);
strnappend(dest, buf, BATTERY_BUF_SIZE); break; case 't': - if (battery_state.state == BATTERY_FULL || - (battery_state.state == BATTERY_UNKNOWN && battery_state.percentage >= 100)) { + if (battery_state.state == BATTERY_FULL) { snprintf(buf, sizeof(buf), "Full"); strnappend(dest, buf, BATTERY_BUF_SIZE); } else {
M
src/battery/linux.c
→
src/battery/linux.c
@@ -446,6 +446,17 @@
/* AC state */ state->ac_connected = ac_connected; + if (state->state == BATTERY_UNKNOWN) { + if (ac_connected) { + if (total_rate_now == 0 && state->percentage >= 90) + state->state = BATTERY_FULL; + else + state->state = BATTERY_CHARGING; + } else { + state->state = BATTERY_DISCHARGING; + } + } + return 0; }