Merge "Update for expanding @2.0::HealthInfo."

This commit is contained in:
TreeHugger Robot 2017-10-11 21:37:47 +00:00 committed by Android (Google) Code Review
commit 4a8fee8641
3 changed files with 17 additions and 9 deletions

View file

@ -120,7 +120,7 @@ Return<Result> Health::update() {
}
// Retrieve all information and call healthd_mode_ops->battery_update, which calls
// notifyListeners.
// updateAndNotify.
bool chargerOnline = battery_monitor_->update();
// adjust uevent / wakealarm periods
@ -129,10 +129,19 @@ Return<Result> Health::update() {
return Result::SUCCESS;
}
void Health::notifyListeners(const HealthInfo& info) {
void Health::updateAndNotify(HealthInfo* info) {
// update 2.0 specific fields
struct BatteryProperty prop;
if (battery_monitor_->getProperty(BATTERY_PROP_CURRENT_AVG, &prop) == OK)
info->batteryCurrentAverage = static_cast<int32_t>(prop.valueInt64);
if (battery_monitor_->getProperty(BATTERY_PROP_CAPACITY, &prop) == OK)
info->batteryCapacity = static_cast<int32_t>(prop.valueInt64);
if (battery_monitor_->getProperty(BATTERY_PROP_ENERGY_COUNTER, &prop) == OK)
info->energyCounter = prop.valueInt64;
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(*info);
if (!ret.isOk() && ret.isDeadObject()) {
it = callbacks_.erase(it);
} else {

View file

@ -28,8 +28,8 @@
using android::hardware::IPCThreadState;
using android::hardware::configureRpcThreadpool;
using android::hardware::health::V1_0::HealthInfo;
using android::hardware::health::V1_0::hal_conversion::convertToHealthInfo;
using android::hardware::health::V2_0::HealthInfo;
using android::hardware::health::V2_0::IHealth;
using android::hardware::health::V2_0::implementation::Health;
@ -89,9 +89,9 @@ void healthd_mode_service_2_0_battery_update(struct android::BatteryProperties*
// Implementation-defined update logic goes here. An implementation
// can make modifications to prop before broadcasting it to all callbacks.
HealthInfo info;
convertToHealthInfo(prop, info);
static_cast<Health*>(gHealth.get())->notifyListeners(info);
HealthInfo info{};
convertToHealthInfo(prop, info.legacy);
static_cast<Health*>(gHealth.get())->updateAndNotify(&info);
}
static struct healthd_mode_ops healthd_mode_service_2_0_ops = {

View file

@ -16,7 +16,6 @@ namespace V2_0 {
namespace implementation {
using V1_0::BatteryStatus;
using V1_0::HealthInfo;
using ::android::hidl::base::V1_0::IBase;
@ -25,7 +24,7 @@ struct Health : public IHealth, hidl_death_recipient {
Health(struct healthd_config* c);
// TODO(b/62229583): clean up and hide these functions.
void notifyListeners(const HealthInfo& info);
void updateAndNotify(HealthInfo* info);
// Methods from IHealth follow.
Return<Result> registerCallback(const sp<IHealthInfoCallback>& callback) override;