summaryrefslogtreecommitdiff
path: root/fastboot/device/variables.cpp
diff options
context:
space:
mode:
authorHridya Valsaraju <hridya@google.com>2018-10-03 15:53:22 -0700
committerHridya Valsaraju <hridya@google.com>2018-10-05 16:16:49 -0700
commita534a5a973858a4b2945763585eb907c4cc62f55 (patch)
tree5aedf41285b5ebc546276b97f0f0075fc31ab74e /fastboot/device/variables.cpp
parentd7f2c56089005969d465633e7458807833afb5fd (diff)
Support fastboot variable battery-soc-ok
Bug: 79480454 Test: fastboot getvar battery-soc-ok Change-Id: Icfd70a71f1598e437316d4b8f895fd851516febb Merged-In: Icfd70a71f1598e437316d4b8f895fd851516febb (cherry picked from commit 9a1203b7acf7cf3a09ccec022c4698c994143bbd)
Diffstat (limited to 'fastboot/device/variables.cpp')
-rw-r--r--fastboot/device/variables.cpp75
1 files changed, 56 insertions, 19 deletions
diff --git a/fastboot/device/variables.cpp b/fastboot/device/variables.cpp
index 01415d72b..2de79b18d 100644
--- a/fastboot/device/variables.cpp
+++ b/fastboot/device/variables.cpp
@@ -96,6 +96,56 @@ bool GetVariant(FastbootDevice* device, const std::vector<std::string>& /* args
return true;
}
+bool GetBatteryVoltageHelper(FastbootDevice* device, int32_t* battery_voltage) {
+ using android::hardware::health::V2_0::HealthInfo;
+ using android::hardware::health::V2_0::Result;
+
+ auto health_hal = device->health_hal();
+ if (!health_hal) {
+ return false;
+ }
+
+ Result ret;
+ auto ret_val = health_hal->getHealthInfo([&](Result result, HealthInfo info) {
+ *battery_voltage = info.legacy.batteryVoltage;
+ ret = result;
+ });
+ if (!ret_val.isOk() || (ret != Result::SUCCESS)) {
+ return false;
+ }
+
+ return true;
+}
+
+bool GetBatterySoCOk(FastbootDevice* device, const std::vector<std::string>& /* args */,
+ std::string* message) {
+ int32_t battery_voltage = 0;
+ if (!GetBatteryVoltageHelper(device, &battery_voltage)) {
+ *message = "Unable to read battery voltage";
+ return false;
+ }
+
+ auto fastboot_hal = device->fastboot_hal();
+ if (!fastboot_hal) {
+ *message = "Fastboot HAL not found";
+ return false;
+ }
+
+ Result ret;
+ auto ret_val = fastboot_hal->getBatteryVoltageFlashingThreshold(
+ [&](int32_t voltage_threshold, Result result) {
+ *message = battery_voltage >= voltage_threshold ? "yes" : "no";
+ ret = result;
+ });
+
+ if (!ret_val.isOk() || ret.status != Status::SUCCESS) {
+ *message = "Unable to get battery voltage flashing threshold";
+ return false;
+ }
+
+ return true;
+}
+
bool GetOffModeChargeState(FastbootDevice* device, const std::vector<std::string>& /* args */,
std::string* message) {
auto fastboot_hal = device->fastboot_hal();
@@ -120,26 +170,13 @@ bool GetOffModeChargeState(FastbootDevice* device, const std::vector<std::string
bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& /* args */,
std::string* message) {
- using android::hardware::health::V2_0::HealthInfo;
- using android::hardware::health::V2_0::Result;
-
- auto health_hal = device->health_hal();
- if (!health_hal) {
- *message = "Health HAL not found";
- return false;
- }
-
- Result ret;
- auto ret_val = health_hal->getHealthInfo([&](Result result, HealthInfo info) {
- *message = std::to_string(info.legacy.batteryVoltage);
- ret = result;
- });
- if (!ret_val.isOk() || (ret != Result::SUCCESS)) {
- *message = "Unable to get battery voltage";
- return false;
+ int32_t battery_voltage = 0;
+ if (GetBatteryVoltageHelper(device, &battery_voltage)) {
+ *message = std::to_string(battery_voltage);
+ return true;
}
-
- return true;
+ *message = "Unable to get battery voltage";
+ return false;
}
bool GetCurrentSlot(FastbootDevice* device, const std::vector<std::string>& /* args */,