diff --git a/apps/gui/gwps-common.c b/apps/gui/gwps-common.c index b6a7c89..133c102 100644 --- a/apps/gui/gwps-common.c +++ b/apps/gui/gwps-common.c @@ -1100,7 +1100,8 @@ static char *get_token_value(struct gui_wps *gwps, #if CONFIG_CHARGING >= CHARGING_MONITOR case WPS_TOKEN_BATTERY_CHARGING: { - if (charge_state == CHARGING || charge_state == TOPOFF) { + if (charge_state == CHARGING || charge_state == TOPOFF || + charge_state == TRICKLE) { return "c"; } else { return NULL; diff --git a/apps/gui/statusbar.c b/apps/gui/statusbar.c index 0a421e8..f03e012 100644 --- a/apps/gui/statusbar.c +++ b/apps/gui/statusbar.c @@ -187,11 +187,11 @@ void gui_statusbar_draw(struct gui_statusbar * bar, bool force_redraw) #if CONFIG_CHARGING >= CHARGING_MONITOR /* zero battery run time if charging */ - if (charge_state > DISCHARGING) + if (charge_state > DISCHARGING || charge_state == CHARGE_STATE_ERROR) lasttime = current_tick; /* animate battery if charging */ - if ((charge_state == DISCHARGING) || (charge_state == TRICKLE)) + if ((charge_state == DISCHARGING) || (charge_state == CHARGE_STATE_ERROR)) { bar->info.batt_charge_step = -1; } diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c index 7be352f..4cac5ea 100644 --- a/firmware/powermgmt.c +++ b/firmware/powermgmt.c @@ -356,18 +356,15 @@ static int voltage_to_battery_level(int battery_millivolts) int level; #if CONFIG_CHARGING >= CHARGING_MONITOR - if (charge_state == DISCHARGING) { + if (charge_state == DISCHARGING || charge_state == CHARGE_STATE_ERROR) { level = voltage_to_percent(battery_millivolts, percent_to_volt_discharge[battery_type]); } - else if (charge_state == CHARGING) { + else { /* battery level is defined to be < 100% until charging is finished */ level = MIN(voltage_to_percent(battery_millivolts, percent_to_volt_charge), 99); } - else { /* in topoff/trickle charge, battery is by definition 100% full */ - level = 100; - } #else /* always use the discharge table */ level = voltage_to_percent(battery_millivolts,