app: aboot: Add support for battery's voltage and battery-soc-ok
Add support to publish battery's voltage and battery-soc-ok, the battery
state-of-charge is acceptable for flashing if the battery-soc-ok return
"yes"
Change-Id: I44824e90819fb0c80711f7fa468bc343cf5a26de
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 9ac8d36..0d3e37b 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -235,6 +235,7 @@
char sn_buf[13];
char display_panel_buf[MAX_PANEL_BUF_SIZE];
char panel_display_mode[MAX_RSP_SIZE];
+char battery_voltage[MAX_RSP_SIZE];
extern int emmc_recovery_init(void);
@@ -2248,6 +2249,13 @@
void cmd_erase(const char *arg, void *data, unsigned sz)
{
+#if CHECK_BAT_VOLTAGE
+ if (!target_battery_soc_ok()) {
+ fastboot_fail("Warning: battery's capacity is very low\n");
+ return;
+ }
+#endif
+
#if VERIFIED_BOOT
if (target_build_variant_user())
{
@@ -2814,6 +2822,12 @@
void cmd_flash(const char *arg, void *data, unsigned sz)
{
+#if CHECK_BAT_VOLTAGE
+ if (!target_battery_soc_ok()) {
+ fastboot_fail("Warning: battery's capacity is very low\n");
+ return;
+ }
+#endif
if(target_is_emmc_boot())
cmd_flash_mmc(arg, data, sz);
else
@@ -3259,6 +3273,12 @@
(const char *) panel_display_mode);
fastboot_publish("version-bootloader", (const char *) device.bootloader_version);
fastboot_publish("version-baseband", (const char *) device.radio_version);
+#if CHECK_BAT_VOLTAGE
+ snprintf(battery_voltage, MAX_RSP_SIZE, "%d",
+ target_get_battery_voltage());
+ fastboot_publish("battery-voltage", (const char *) battery_voltage);
+ fastboot_publish("battery-soc-ok", target_battery_soc_ok()? "yes":"no");
+#endif
}
void aboot_init(const struct app_descriptor *app)