diff options
author | Hridya Valsaraju <hridya@google.com> | 2018-10-03 15:53:22 -0700 |
---|---|---|
committer | Hridya Valsaraju <hridya@google.com> | 2018-10-05 16:16:49 -0700 |
commit | a534a5a973858a4b2945763585eb907c4cc62f55 (patch) | |
tree | 5aedf41285b5ebc546276b97f0f0075fc31ab74e /fastboot/device/variables.cpp | |
parent | d7f2c56089005969d465633e7458807833afb5fd (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.cpp | 75 |
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 */, |