From 55f1a1f3f695e4f85f0e54d0fd5e0578e9de95ab Mon Sep 17 00:00:00 2001 From: Hridya Valsaraju Date: Fri, 22 Nov 2019 15:06:08 -0800 Subject: [PATCH] health 2.0: Check health_loop status for passthrough usage health HAL is used as passthrough in recovery mode and hence healthd_main() is not invoked. Add checks in healthd_battery_update_internal() and healthd_register_event() to return when health_loop is NULL. Test: fastboot getvar battery-voltage works in fastbootd. Bug: 144299329 Change-Id: I0a975a4bfe942813f9c5b3936df91cc3d8fa9674 --- health/2.0/default/healthd_common_adapter.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/health/2.0/default/healthd_common_adapter.cpp b/health/2.0/default/healthd_common_adapter.cpp index 8fc689d50c..0b5d869496 100644 --- a/health/2.0/default/healthd_common_adapter.cpp +++ b/health/2.0/default/healthd_common_adapter.cpp @@ -49,11 +49,14 @@ class HealthLoopAdapter : public HealthLoop { static std::unique_ptr health_loop; int healthd_register_event(int fd, void (*handler)(uint32_t), EventWakeup wakeup) { + if (!health_loop) return -1; + auto wrapped_handler = [handler](auto*, uint32_t epevents) { handler(epevents); }; return health_loop->RegisterEvent(fd, wrapped_handler, wakeup); } void healthd_battery_update_internal(bool charger_online) { + if (!health_loop) return; health_loop->AdjustWakealarmPeriods(charger_online); }