diff --git a/healthd/charger.cpp b/healthd/charger.cpp index 58ed4161c..d03978d4f 100644 --- a/healthd/charger.cpp +++ b/healthd/charger.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +#include + #include "charger.sysprop.h" #include "healthd_mode_charger.h" #include "healthd_mode_charger_nops.h" @@ -23,6 +25,7 @@ #endif int main(int argc, char** argv) { + android::base::InitLogging(argv, &android::base::KernelLogger); if (CHARGER_FORCE_NO_UI || android::sysprop::ChargerProperties::no_ui().value_or(false)) { return healthd_charger_nops(argc, argv); } else { diff --git a/healthd/charger_utils.cpp b/healthd/charger_utils.cpp index 0cf9df5f6..8bbfb4e7f 100644 --- a/healthd/charger_utils.cpp +++ b/healthd/charger_utils.cpp @@ -17,50 +17,28 @@ #include "charger_utils.h" #include -#include +#include #include #include -#include - -using android::hardware::getPassthroughServiceManager; -using android::hidl::base::V1_0::IBase; -using android::hidl::manager::V1_0::IServiceManager; namespace android { namespace hardware { namespace health { -sp GetPassthroughHealthImpl() { - // Not using getService() because there is no hwservicemanager in charger mode. - sp pm = getPassthroughServiceManager(); - if (pm == nullptr) { - LOG(WARNING) << "Cannot get passthrough service manager."; - return nullptr; - } - sp base = pm->get(V2_0::IHealth::descriptor, "default"); - if (base == nullptr) { - LOG(WARNING) << "Cannot find passthrough implementation of health 2.0 HAL for instance " - "'default' on the device."; - return nullptr; - } - sp service = V2_1::IHealth::castFrom(base); - if (service == nullptr) { - LOG(WARNING) - << "Cannot cast passthrough implementation of health 2.0 HAL to 2.1 for instance " - "'default' on the device."; - return nullptr; - } - return service; -} -sp GetPassthroughHealth() { - auto impl = GetPassthroughHealthImpl(); - if (impl == nullptr) { +sp GetHealthServiceOrDefault() { + // No need to use get_health_service from libhealthhalutils that + // checks for "backup" instance provided by healthd, since + // V2_1::implementation::Health does the same thing. + sp service = V2_1::IHealth::getService(); + if (service != nullptr) { + LOG(INFO) << "Charger uses health HAL service."; + } else { LOG(WARNING) << "Charger uses system defaults."; auto config = std::make_unique(); InitHealthdConfig(config.get()); - impl = new V2_1::implementation::Health(std::move(config)); + service = new V2_1::implementation::Health(std::move(config)); } - return impl; + return service; } } // namespace health diff --git a/healthd/charger_utils.h b/healthd/charger_utils.h index f96e827be..39d8aabad 100644 --- a/healthd/charger_utils.h +++ b/healthd/charger_utils.h @@ -21,7 +21,9 @@ namespace android { namespace hardware { namespace health { -sp GetPassthroughHealth(); +// Return health HAL service. If it is not supported on the device (with +// VINTF checks), return a default passthrough implementation. +sp GetHealthServiceOrDefault(); } // namespace health } // namespace hardware } // namespace android diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp index 7d844c9a5..386ba1a9b 100644 --- a/healthd/healthd_mode_charger.cpp +++ b/healthd/healthd_mode_charger.cpp @@ -60,7 +60,7 @@ using namespace android; using android::hardware::Return; -using android::hardware::health::GetPassthroughHealth; +using android::hardware::health::GetHealthServiceOrDefault; using android::hardware::health::HealthLoop; using android::hardware::health::V1_0::BatteryStatus; using android::hardware::health::V2_0::Result; @@ -742,6 +742,6 @@ int healthd_charger_main(int argc, char** argv) { } } - Charger charger(GetPassthroughHealth()); + Charger charger(GetHealthServiceOrDefault()); return charger.StartLoop(); } diff --git a/healthd/healthd_mode_charger_nops.cpp b/healthd/healthd_mode_charger_nops.cpp index 13e734852..9fe381ef4 100644 --- a/healthd/healthd_mode_charger_nops.cpp +++ b/healthd/healthd_mode_charger_nops.cpp @@ -20,10 +20,10 @@ #include "charger_utils.h" -using android::hardware::health::GetPassthroughHealth; +using android::hardware::health::GetHealthServiceOrDefault; using android::hardware::health::V2_1::implementation::HalHealthLoop; int healthd_charger_nops(int /* argc */, char** /* argv */) { - HalHealthLoop charger("charger", GetPassthroughHealth()); + HalHealthLoop charger("charger", GetHealthServiceOrDefault()); return charger.StartLoop(); }