From 0e98790ad5371770b5d87de3a9d6168397521616 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 3 May 2023 11:31:45 -0600 Subject: charger: Move state-of-charge-change handling into a function Move this into its own function so simplify the main loop. Fix a comment in the hook at the same time. This makes no functional change. BUG=b:218332694 TEST=zmake build dev-posix Change-Id: Ibdee116e10ab10265ad1718a76ed3401475ad235 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4501289 Reviewed-by: Abe Levkoy Tested-by: Simon Glass Commit-Queue: Simon Glass --- common/charge_state_v2.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) (limited to 'common') 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 -- cgit v1.2.1