diff --git a/healthd-ext/main.cpp b/healthd-ext/main.cpp index f911bc1..4c6baf5 100644 --- a/healthd-ext/main.cpp +++ b/healthd-ext/main.cpp @@ -27,6 +27,31 @@ class ChargerCallbackImpl : public ChargerCallback { } //namespace aidl::android::hardware::health #endif +namespace aidl::android::hardware::health { +static constexpr int kChargeCounterMultiplier = 1000; // mAh to uAh +static constexpr int kChargeTimeToFullMultiplier = 60; // mins to secs +class HealthImpl : public Health { + public: + using Health::Health; + virtual ~HealthImpl() {} + ndk::ScopedAStatus getChargeCounterUah(int32_t* out) override; + protected: + void UpdateHealthInfo(HealthInfo* health_info) override; +}; +void HealthImpl::UpdateHealthInfo(HealthInfo* health_info) { + if (health_info->batteryChargeTimeToFullNowSeconds == 65535) { + health_info->batteryChargeTimeToFullNowSeconds = -1; + } else { + health_info->batteryChargeTimeToFullNowSeconds *= kChargeTimeToFullMultiplier; + } + health_info->batteryChargeCounterUah *= kChargeCounterMultiplier; +} +ndk::ScopedAStatus HealthImpl::getChargeCounterUah(int32_t* out) { + *out *= kChargeCounterMultiplier; + return ndk::ScopedAStatus::ok(); +} +} // namespace aidl::android::hardware::health + static constexpr const char* gInstanceName = "default"; static constexpr std::string_view gChargerArg{"--charger"}; @@ -80,7 +105,7 @@ int main(int argc, char** argv) { auto config = std::make_unique(); qti_healthd_board_init(config.get()); ::android::hardware::health::InitHealthdConfig(config.get()); - auto binder = ndk::SharedRefBase::make(gInstanceName, std::move(config)); + auto binder = ndk::SharedRefBase::make(gInstanceName, std::move(config)); if (argc >= 2 && argv[1] == gChargerArg) { #if !CHARGER_FORCE_NO_UI