Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7fa8dd65 authored by Harry Pan's avatar Harry Pan
Browse files

Add new fastbootd battery-soc variable



Introduce new battery-soc variable to read battery
SSOC, this benefits manufacturing to better track
the SSOC after FSI image flashing in the userspace
fastbootd using the same approach as Android space,
otherwise it is difficult to implement the entire
battery SW stack from Android to fastboot bootloader
and generate the same test experience monotonically.

Bug: 303561559
Test: fastboot getvar battery-soc # in fastbootd
Change-Id: Ia3f68e314263d7dd4d4c45a908a0a49db6e761f9
Signed-off-by: default avatarHarry Pan <gspj@google.com>
parent 7cf712ab
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@
#define FB_VAR_VARIANT "variant"
#define FB_VAR_OFF_MODE_CHARGE_STATE "off-mode-charge"
#define FB_VAR_BATTERY_VOLTAGE "battery-voltage"
#define FB_VAR_BATTERY_SOC "battery-soc"
#define FB_VAR_BATTERY_SOC_OK "battery-soc-ok"
#define FB_VAR_SUPER_PARTITION_NAME "super-partition-name"
#define FB_VAR_SNAPSHOT_UPDATE_STATUS "snapshot-update-status"
+1 −0
Original line number Diff line number Diff line
@@ -134,6 +134,7 @@ const std::unordered_map<std::string, VariableHandlers> kVariableMap = {
        {FB_VAR_IS_FORCE_DEBUGGABLE, {GetIsForceDebuggable, nullptr}},
        {FB_VAR_OFF_MODE_CHARGE_STATE, {GetOffModeChargeState, nullptr}},
        {FB_VAR_BATTERY_VOLTAGE, {GetBatteryVoltage, nullptr}},
        {FB_VAR_BATTERY_SOC, {GetBatterySoC, nullptr}},
        {FB_VAR_BATTERY_SOC_OK, {GetBatterySoCOk, nullptr}},
        {FB_VAR_HW_REVISION, {GetHardwareRevision, nullptr}},
        {FB_VAR_SUPER_PARTITION_NAME, {GetSuperPartitionName, nullptr}},
+26 −0
Original line number Diff line number Diff line
@@ -130,6 +130,21 @@ bool GetBatteryVoltageHelper(FastbootDevice* device, int32_t* battery_voltage) {
    return true;
}

bool GetBatterySoCHelper(FastbootDevice* device, int32_t* battery_soc) {
    using aidl::android::hardware::health::HealthInfo;

    auto health_hal = device->health_hal();
    if (!health_hal) {
        return false;
    }

    HealthInfo health_info;
    auto res = health_hal->getHealthInfo(&health_info);
    if (!res.isOk()) return false;
    *battery_soc = health_info.batteryLevel;
    return true;
}

bool GetBatterySoCOk(FastbootDevice* device, const std::vector<std::string>& /* args */,
                     std::string* message) {
    int32_t battery_voltage = 0;
@@ -185,6 +200,17 @@ bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& /
    return false;
}

bool GetBatterySoC(FastbootDevice* device, const std::vector<std::string>& /* args */,
                   std::string* message) {
    int32_t battery_soc = 0;
    if (GetBatterySoCHelper(device, &battery_soc)) {
        *message = std::to_string(battery_soc);
        return true;
    }
    *message = "Unable to get battery soc";
    return false;
}

bool GetCurrentSlot(FastbootDevice* device, const std::vector<std::string>& /* args */,
                    std::string* message) {
    std::string suffix = device->GetCurrentSlot();
+2 −0
Original line number Diff line number Diff line
@@ -63,6 +63,8 @@ bool GetOffModeChargeState(FastbootDevice* device, const std::vector<std::string
                           std::string* message);
bool GetBatteryVoltage(FastbootDevice* device, const std::vector<std::string>& args,
                       std::string* message);
bool GetBatterySoC(FastbootDevice* device, const std::vector<std::string>& args,
                   std::string* message);
bool GetBatterySoCOk(FastbootDevice* device, const std::vector<std::string>& args,
                     std::string* message);
bool GetSuperPartitionName(FastbootDevice* device, const std::vector<std::string>& args,