Add an API to return Health Info
Bug: 71860528
Test: vts-tradefed run vts -m VtsHalHealthV2_0
Change-Id: I5e0defdabcd8e44b32a6eab609492ff354512e64
diff --git a/health/2.0/default/Health.cpp b/health/2.0/default/Health.cpp
index 96f6d70..c1dd194 100644
--- a/health/2.0/default/Health.cpp
+++ b/health/2.0/default/Health.cpp
@@ -18,6 +18,7 @@
#include <health2/Health.h>
+#include <hal_conversion.h>
#include <hidl/HidlTransportSupport.h>
extern void healthd_battery_update_internal(bool);
@@ -199,6 +200,39 @@
return Void();
}
+Return<void> Health::getHealthInfo(getHealthInfo_cb _hidl_cb) {
+ using android::hardware::health::V1_0::hal_conversion::convertToHealthInfo;
+
+ update();
+ struct android::BatteryProperties p = getBatteryProperties(battery_monitor_.get());
+
+ V1_0::HealthInfo batteryInfo;
+ convertToHealthInfo(&p, batteryInfo);
+
+ 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);
+ }
+
+ V2_0::HealthInfo healthInfo = {};
+ healthInfo.legacy = std::move(batteryInfo);
+ healthInfo.batteryCurrentAverage = currentAvg;
+ healthInfo.diskStats = stats;
+ healthInfo.storageInfos = info;
+
+ _hidl_cb(Result::SUCCESS, healthInfo);
+ return Void();
+}
+
void Health::serviceDied(uint64_t /* cookie */, const wp<IBase>& who) {
(void)unregisterCallbackInternal(who.promote());
}