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)