summaryrefslogtreecommitdiff
path: root/test/sbs_charging_v2.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/sbs_charging_v2.c')
-rw-r--r--test/sbs_charging_v2.c30
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();
}