diff options
Diffstat (limited to 'common/charge_state_v2.c')
-rw-r--r-- | common/charge_state_v2.c | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/common/charge_state_v2.c b/common/charge_state_v2.c index 4d01cd9ed3..c70da4b326 100644 --- a/common/charge_state_v2.c +++ b/common/charge_state_v2.c @@ -1700,6 +1700,26 @@ static void base_check_extpower(void) #endif } +/* check for and handle any state-of-charge change with the battery */ +void check_battery_change_soc(void) +{ + if ((!(curr.batt.flags & BATT_FLAG_BAD_STATE_OF_CHARGE) && + curr.batt.state_of_charge != prev_charge) || +#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT + (charge_base != prev_charge_base) || +#endif + (is_full != prev_full) || (curr.state != prev_state) || + (charge_get_display_charge() != prev_disp_charge)) { + show_charging_progress(); + prev_charge = curr.batt.state_of_charge; + prev_disp_charge = charge_get_display_charge(); +#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT + prev_charge_base = charge_base; +#endif + hook_notify(HOOK_BATTERY_SOC_CHANGE); + } +} + /* Main loop */ void charger_task(void *u) { @@ -1945,21 +1965,8 @@ void charger_task(void *u) /* Run battery soc check for setting the current limit. */ current_limit_battery_soc(); - if ((!(curr.batt.flags & BATT_FLAG_BAD_STATE_OF_CHARGE) && - curr.batt.state_of_charge != prev_charge) || -#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT - (charge_base != prev_charge_base) || -#endif - (is_full != prev_full) || (curr.state != prev_state) || - (charge_get_display_charge() != prev_disp_charge)) { - show_charging_progress(); - prev_charge = curr.batt.state_of_charge; - prev_disp_charge = charge_get_display_charge(); -#ifdef CONFIG_EC_EC_COMM_BATTERY_CLIENT - prev_charge_base = charge_base; -#endif - hook_notify(HOOK_BATTERY_SOC_CHANGE); - } + check_battery_change_soc(); + prev_full = is_full; #ifndef CONFIG_CHARGER_MAINTAIN_VBAT |