diff options
Diffstat (limited to 'test/sbs_charging_v2.c')
-rw-r--r-- | test/sbs_charging_v2.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/sbs_charging_v2.c b/test/sbs_charging_v2.c index bdca592d6c..2f9ddee57c 100644 --- a/test/sbs_charging_v2.c +++ b/test/sbs_charging_v2.c @@ -365,6 +365,35 @@ static int test_low_battery(void) return EC_SUCCESS; } +static int test_deep_charge_battery(void) +{ + enum charge_state_v2 state_v2; + const struct battery_info *bat_info = battery_get_info(); + + test_setup(1); + + /* battery pack voltage bellow voltage_min */ + sb_write(SB_VOLTAGE, (bat_info->voltage_min - 200)); + wait_charging_state(); + state_v2 = charge_get_state_v2(); + TEST_ASSERT(state_v2 == ST_PRECHARGE); + + /* + * Battery voltage keep bellow voltage_min, + * precharge over time CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT + */ + usleep(CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT); + state_v2 = charge_get_state_v2(); + TEST_ASSERT(state_v2 == ST_IDLE); + + /* recovery from a low voltage. */ + sb_write(SB_VOLTAGE, (bat_info->voltage_normal)); + wait_charging_state(); + state_v2 = charge_get_state_v2(); + TEST_ASSERT(state_v2 == ST_CHARGE); + + return EC_SUCCESS; +} static int test_high_temp_battery(void) { test_setup(1); @@ -935,6 +964,7 @@ void run_test(int argc, char **argv) RUN_TEST(test_low_battery_hostevents); RUN_TEST(test_battery_sustainer); RUN_TEST(test_battery_sustainer_discharge_idle); + RUN_TEST(test_deep_charge_battery); test_print_result(); } |