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

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

Modify IHealthInfoCallback interface to return V2.0 HealthInfo

Bug: 71860528
Test: vts-tradefed run vts -m VtsHalHealthV2_0
Change-Id: Ie7294efa644442825baa5f08c39553c10b368e75
parent e56eafc6
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package android.hardware.health@2.0;

import @1.0::HealthInfo;

/**
 * IHealthInfoCallback is the callback interface to
 * {@link IHealthInfoBus.registerCallback}.
@@ -28,5 +26,5 @@ interface IHealthInfoCallback {
     * registered callbacks after health info changes.
     * @param info the updated HealthInfo
     */
    oneway healthInfoChanged(@1.0::HealthInfo info);
    oneway healthInfoChanged(HealthInfo info);
};
+20 −2
Original line number Diff line number Diff line
@@ -155,10 +155,28 @@ Return<Result> Health::update() {
    return Result::SUCCESS;
}

void Health::notifyListeners(const HealthInfo& info) {
void Health::notifyListeners(HealthInfo* healthInfo) {
    std::vector<StorageInfo> info;
    get_storage_info(info);

    std::vector<DiskStats> stats;
    get_disk_stats(stats);

    int32_t currentAvg = 0;

    struct BatteryProperty prop;
    status_t ret = battery_monitor_->getProperty(BATTERY_PROP_CURRENT_AVG, &prop);
    if (ret == OK) {
        currentAvg = static_cast<int32_t>(prop.valueInt64);
    }

    healthInfo->batteryCurrentAverage = currentAvg;
    healthInfo->diskStats = stats;
    healthInfo->storageInfos = info;

    std::lock_guard<std::mutex> _lock(callbacks_lock_);
    for (auto it = callbacks_.begin(); it != callbacks_.end();) {
        auto ret = (*it)->healthInfoChanged(info);
        auto ret = (*it)->healthInfoChanged(*healthInfo);
        if (!ret.isOk() && ret.isDeadObject()) {
            it = callbacks_.erase(it);
        } else {
+1 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ namespace V2_0 {
namespace implementation {

using V1_0::BatteryStatus;
using V1_0::HealthInfo;

using ::android::hidl::base::V1_0::IBase;

@@ -38,7 +37,7 @@ struct Health : public IHealth, hidl_death_recipient {
    Health(struct healthd_config* c);

    // TODO(b/62229583): clean up and hide these functions after update() logic is simplified.
    void notifyListeners(const HealthInfo& info);
    void notifyListeners(HealthInfo* info);

    // Methods from IHealth follow.
    Return<Result> registerCallback(const sp<IHealthInfoCallback>& callback) override;
+1 −1
Original line number Diff line number Diff line
@@ -141,7 +141,7 @@ struct HealthInfo {
    /**
     * Average battery current in uA. Will be 0 if unsupported.
     */
    int64_t batteryCurrentAverage;
    int32_t batteryCurrentAverage;
    /**
     * Disk Statistics. Will be an empty vector if unsupported.
     */
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ class HealthHidlTest : public ::testing::VtsHalHidlTargetTestBase {

class Callback : public IHealthInfoCallback {
   public:
    Return<void> healthInfoChanged(const V1_0::HealthInfo&) override {
    Return<void> healthInfoChanged(const HealthInfo&) override {
        std::lock_guard<std::mutex> lock(mMutex);
        mInvoked = true;
        mInvokedNotify.notify_all();