From 10873682a880af91b9da9a07ee7f9d264fb33c8f Mon Sep 17 00:00:00 2001 From: Rong Chang Date: Mon, 2 Jul 2012 17:59:03 +0800 Subject: [PATCH] Retry to update power led after 1wire error Signed-off-by: Rong Chang BUG=chrome-os-partner:10779 TEST=manual plug/unplug ac power and check powerled Change-Id: I1f75a67aa20fd076f1c367d7086bfc54fb050dc9 Reviewed-on: https://gerrit.chromium.org/gerrit/26564 Reviewed-by: Vic Yang Commit-Ready: Rong Chang Tested-by: Rong Chang --- common/charge_state.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/common/charge_state.c b/common/charge_state.c index 39648695cd..338e2f873e 100644 --- a/common/charge_state.c +++ b/common/charge_state.c @@ -464,6 +464,8 @@ void charge_state_machine_task(void) int sleep_usec = POLL_PERIOD_SHORT, diff_usec, sleep_next; enum power_state new_state; uint8_t batt_flags; + enum powerled_color led_color = POWERLED_OFF; + int rv_setled = 0; ctx.prev.state = PWR_STATE_INIT; ctx.curr.state = PWR_STATE_INIT; @@ -523,7 +525,8 @@ void charge_state_machine_task(void) *ctx.memmap_batt_flags = batt_flags; /* Charge done */ - powerled_set(POWERLED_GREEN); + led_color = POWERLED_GREEN; + rv_setled = powerled_set(POWERLED_GREEN); sleep_usec = POLL_PERIOD_LONG; break; @@ -541,18 +544,22 @@ void charge_state_machine_task(void) *ctx.memmap_batt_flags = batt_flags; /* Charging */ - powerled_set(POWERLED_YELLOW); + led_color = POWERLED_YELLOW; + rv_setled = powerled_set(POWERLED_YELLOW); sleep_usec = POLL_PERIOD_CHARGE; break; case PWR_STATE_ERROR: /* Error */ - powerled_set(POWERLED_RED); + led_color = POWERLED_RED; + rv_setled = powerled_set(POWERLED_RED); sleep_usec = POLL_PERIOD_CHARGE; break; case PWR_STATE_UNCHANGE: /* Don't change sleep duration */ + if (rv_setled) + rv_setled = powerled_set(led_color); break; default: /* Other state; poll quickly and hope it goes away */