Battery: better Unknown state handling

This commit is contained in:
o9000 2017-06-22 19:02:55 +02:00
parent 201ea843a0
commit cd33e5b274
2 changed files with 13 additions and 3 deletions

View file

@ -176,7 +176,7 @@ void battery_update_text(char *dest, char *format)
? "Charging" ? "Charging"
: (battery_state.state == BATTERY_DISCHARGING) : (battery_state.state == BATTERY_DISCHARGING)
? "Discharging" ? "Discharging"
: (battery_state.state == BATTERY_FULL || battery_state.percentage >= 100) : (battery_state.state == BATTERY_FULL)
? "Full" ? "Full"
: "Unknown", : "Unknown",
BATTERY_BUF_SIZE); BATTERY_BUF_SIZE);
@ -194,8 +194,7 @@ void battery_update_text(char *dest, char *format)
strnappend(dest, buf, BATTERY_BUF_SIZE); strnappend(dest, buf, BATTERY_BUF_SIZE);
break; break;
case 't': case 't':
if (battery_state.state == BATTERY_FULL || if (battery_state.state == BATTERY_FULL) {
(battery_state.state == BATTERY_UNKNOWN && battery_state.percentage >= 100)) {
snprintf(buf, sizeof(buf), "Full"); snprintf(buf, sizeof(buf), "Full");
strnappend(dest, buf, BATTERY_BUF_SIZE); strnappend(dest, buf, BATTERY_BUF_SIZE);
} else { } else {

View file

@ -446,6 +446,17 @@ int battery_os_update(BatteryState *state)
/* AC state */ /* AC state */
state->ac_connected = ac_connected; 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; return 0;
} }