Interface with health HAL to read battery voltage
Bug: 78793464 Test: fastboot getvar battery-voltage Change-Id: Ie0763e4f08327ec7649c5629066eb73e8142e0e6
This commit is contained in:
parent
7c9bbe948b
commit
47658caae4
7 changed files with 42 additions and 1 deletions
|
|
@ -122,6 +122,7 @@ cc_binary {
|
|||
shared_libs: [
|
||||
"android.hardware.boot@1.0",
|
||||
"android.hardware.fastboot@1.0",
|
||||
"android.hardware.health@2.0",
|
||||
"libadbd",
|
||||
"libasyncio",
|
||||
"libbase",
|
||||
|
|
@ -139,6 +140,10 @@ cc_binary {
|
|||
"libutils",
|
||||
],
|
||||
|
||||
static_libs: [
|
||||
"libhealthhalutils",
|
||||
],
|
||||
|
||||
cpp_std: "c++17",
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -62,3 +62,4 @@
|
|||
#define FB_VAR_HW_REVISION "hw-revision"
|
||||
#define FB_VAR_VARIANT "variant"
|
||||
#define FB_VAR_OFF_MODE_CHARGE_STATE "off-mode-charge"
|
||||
#define FB_VAR_BATTERY_VOLTAGE "battery-voltage"
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@ bool GetVarHandler(FastbootDevice* device, const std::vector<std::string>& args)
|
|||
{FB_VAR_IS_LOGICAL, {GetPartitionIsLogical, GetAllPartitionArgsWithSlot}},
|
||||
{FB_VAR_IS_USERSPACE, {GetIsUserspace, nullptr}},
|
||||
{FB_VAR_OFF_MODE_CHARGE_STATE, {GetOffModeChargeState, nullptr}},
|
||||
{FB_VAR_BATTERY_VOLTAGE, {GetBatteryVoltage, nullptr}},
|
||||
{FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}}};
|
||||
|
||||
if (args.size() < 2) {
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
#include <android-base/strings.h>
|
||||
#include <android/hardware/boot/1.0/IBootControl.h>
|
||||
#include <android/hardware/fastboot/1.0/IFastboot.h>
|
||||
#include <healthhalutils/HealthHalUtils.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "constants.h"
|
||||
|
|
@ -30,6 +32,8 @@ using ::android::hardware::hidl_string;
|
|||
using ::android::hardware::boot::V1_0::IBootControl;
|
||||
using ::android::hardware::boot::V1_0::Slot;
|
||||
using ::android::hardware::fastboot::V1_0::IFastboot;
|
||||
using ::android::hardware::health::V2_0::get_health_service;
|
||||
|
||||
namespace sph = std::placeholders;
|
||||
|
||||
FastbootDevice::FastbootDevice()
|
||||
|
|
@ -52,6 +56,7 @@ FastbootDevice::FastbootDevice()
|
|||
}),
|
||||
transport_(std::make_unique<ClientUsbTransport>()),
|
||||
boot_control_hal_(IBootControl::getService()),
|
||||
health_hal_(get_health_service()),
|
||||
fastboot_hal_(IFastboot::getService()) {}
|
||||
|
||||
FastbootDevice::~FastbootDevice() {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <android/hardware/boot/1.0/IBootControl.h>
|
||||
#include <android/hardware/fastboot/1.0/IFastboot.h>
|
||||
#include <android/hardware/health/2.0/IHealth.h>
|
||||
|
||||
#include "commands.h"
|
||||
#include "transport.h"
|
||||
|
|
@ -53,12 +54,14 @@ class FastbootDevice {
|
|||
android::sp<android::hardware::fastboot::V1_0::IFastboot> fastboot_hal() {
|
||||
return fastboot_hal_;
|
||||
}
|
||||
android::sp<android::hardware::health::V2_0::IHealth> health_hal() { return health_hal_; }
|
||||
|
||||
private:
|
||||
const std::unordered_map<std::string, CommandHandler> kCommandMap;
|
||||
|
||||
std::unique_ptr<Transport> transport_;
|
||||
android::sp<android::hardware::boot::V1_0::IBootControl> boot_control_hal_;
|
||||
android::sp<android::hardware::health::V2_0::IHealth> health_hal_;
|
||||
android::sp<android::hardware::fastboot::V1_0::IFastboot> fastboot_hal_;
|
||||
std::vector<char> download_data_;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include <android-base/stringprintf.h>
|
||||
#include <android-base/strings.h>
|
||||
#include <ext4_utils/ext4_utils.h>
|
||||
#include <healthhalutils/HealthHalUtils.h>
|
||||
|
||||
#include "fastboot_device.h"
|
||||
#include "flashing.h"
|
||||
|
|
@ -117,6 +118,30 @@ bool GetOffModeChargeState(FastbootDevice* device, const std::vector<std::string
|
|||
return true;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GetCurrentSlot(FastbootDevice* device, const std::vector<std::string>& /* args */,
|
||||
std::string* message) {
|
||||
std::string suffix = device->GetCurrentSlot();
|
||||
|
|
|
|||
|
|
@ -55,7 +55,8 @@ bool GetHardwareRevision(FastbootDevice* device, const std::vector<std::string>&
|
|||
bool GetVariant(FastbootDevice* device, const std::vector<std::string>& args, std::string* message);
|
||||
bool GetOffModeChargeState(FastbootDevice* device, const std::vector<std::string>& args,
|
||||
std::string* message);
|
||||
|
||||
bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& args,
|
||||
std::string* message);
|
||||
// Helpers for getvar all.
|
||||
std::vector<std::vector<std::string>> GetAllPartitionArgsWithSlot(FastbootDevice* device);
|
||||
std::vector<std::vector<std::string>> GetAllPartitionArgsNoSlot(FastbootDevice* device);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue