diff options
author | Rong Chang <rongchang@chromium.org> | 2012-07-02 17:59:03 +0800 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-07-02 21:10:25 -0700 |
commit | 10873682a880af91b9da9a07ee7f9d264fb33c8f (patch) | |
tree | 7fa8b3c026cfa279eebe450520c96c67998b77a3 | |
parent | 3ed21ca42cee24b08e54f10aeb96a60e6e49f0d5 (diff) | |
download | chrome-ec-10873682a880af91b9da9a07ee7f9d264fb33c8f.tar.gz |
Retry to update power led after 1wire error
Signed-off-by: Rong Chang <rongchang@chromium.org>
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 <victoryang@chromium.org>
Commit-Ready: Rong Chang <rongchang@chromium.org>
Tested-by: Rong Chang <rongchang@chromium.org>
-rw-r--r-- | common/charge_state.c | 13 |
1 files 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 */ |