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

Commit bf0b9faa authored by Hridya Valsaraju's avatar Hridya Valsaraju
Browse files

Initialize healthd_mode_ops in recovery default Health HAL impl.

This is required for correct functioning of getHealthInfo() API
in recovery since BatteryMonitor requires healthd_mode_ops to be
initialized to update battery properties.

Bug: 78793464
Test: fastboot getvar battery-voltage
Change-Id: I9ff77664cada22e4aa3668bfb7d28d5f1d45590b
parent 0d30daba
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -142,7 +142,7 @@ Return<void> Health::getChargeStatus(getChargeStatus_cb _hidl_cb) {
Return<Result> Health::update() {
    if (!healthd_mode_ops || !healthd_mode_ops->battery_update) {
        LOG(WARNING) << "health@2.0: update: not initialized. "
                     << "update() should not be called in charger / recovery.";
                     << "update() should not be called in charger";
        return Result::UNKNOWN;
    }

+24 −1
Original line number Diff line number Diff line
@@ -46,9 +46,32 @@ int healthd_board_battery_update(struct android::BatteryProperties*) {
    return 0;
}

void healthd_mode_default_impl_init(struct healthd_config*) {
    // noop
}

int healthd_mode_default_impl_preparetowait(void) {
    return -1;
}

void healthd_mode_default_impl_heartbeat(void) {
    // noop
}

void healthd_mode_default_impl_battery_update(struct android::BatteryProperties*) {
    // noop
}

static struct healthd_mode_ops healthd_mode_default_impl_ops = {
    .init = healthd_mode_default_impl_init,
    .preparetowait = healthd_mode_default_impl_preparetowait,
    .heartbeat = healthd_mode_default_impl_heartbeat,
    .battery_update = healthd_mode_default_impl_battery_update,
};

extern "C" IHealth* HIDL_FETCH_IHealth(const char* name) {
    const static std::string providedInstance{"backup"};

    healthd_mode_ops = &healthd_mode_default_impl_ops;
    if (providedInstance == name) {
        // use defaults
        // Health class stores static instance