diff options
Diffstat (limited to 'board/kukui/led.c')
-rw-r--r-- | board/kukui/led.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/board/kukui/led.c b/board/kukui/led.c index a6c7476d00..527568b83d 100644 --- a/board/kukui/led.c +++ b/board/kukui/led.c @@ -30,11 +30,13 @@ static enum charge_state prv_chstate = PWR_STATE_INIT; static void kukui_led_set_battery(void) { enum charge_state chstate; + static uint8_t prv_r, prv_g, prv_b; uint8_t br[EC_LED_COLOR_COUNT] = { 0 }; chstate = charge_get_state(); - if (prv_chstate == chstate) + if (prv_chstate == chstate && + chstate != PWR_STATE_DISCHARGE) return; prv_chstate = chstate; @@ -47,7 +49,8 @@ static void kukui_led_set_battery(void) br[EC_LED_COLOR_RED] = 1; break; case PWR_STATE_DISCHARGE: - if (charge_get_percent() <= 10) + /* display SoC 10% = real battery SoC 13%*/ + if (charge_get_percent() <= 13) br[EC_LED_COLOR_RED] = 1; break; case PWR_STATE_ERROR: @@ -58,6 +61,14 @@ static void kukui_led_set_battery(void) return; } + if (prv_r == br[EC_LED_COLOR_RED] && + prv_g == br[EC_LED_COLOR_GREEN] && + prv_b == br[EC_LED_COLOR_BLUE]) + return; + + prv_r = br[EC_LED_COLOR_RED]; + prv_g = br[EC_LED_COLOR_GREEN]; + prv_b = br[EC_LED_COLOR_BLUE]; led_set_brightness(EC_LED_ID_BATTERY_LED, br); } |