]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/platform-hardware-interfaces.git/commitdiff
Initialize healthd_mode_ops in recovery default Health HAL impl.
authorHridya Valsaraju <hridya@google.com>
Fri, 28 Sep 2018 17:44:02 +0000 (10:44 -0700)
committerHridya Valsaraju <hridya@google.com>
Fri, 28 Sep 2018 21:30:20 +0000 (21:30 +0000)
This is required for correct functioning of getHealthInfo() API
in recovery since BatteryMonitor requires healthd_mode_ops to be
initialized to update battery properties.

Bug: 78793464
Test: fastboot getvar battery-voltage
Change-Id: I9ff77664cada22e4aa3668bfb7d28d5f1d45590b

health/2.0/default/Health.cpp
health/2.0/default/HealthImplDefault.cpp

index 6d3be9923baa8559fe905d78dddb9f19843a1896..e02bfa98df0f0e0e39cd19fb2d83fd6475466642 100644 (file)
@@ -142,7 +142,7 @@ Return<void> Health::getChargeStatus(getChargeStatus_cb _hidl_cb) {
 Return<Result> Health::update() {
     if (!healthd_mode_ops || !healthd_mode_ops->battery_update) {
         LOG(WARNING) << "health@2.0: update: not initialized. "
-                     << "update() should not be called in charger / recovery.";
+                     << "update() should not be called in charger";
         return Result::UNKNOWN;
     }
 
index 15346bf6e9f4882227a8b46515a9167afab32bce..e3cbefdbebd5746a5395d23236bf2d394ad69f6a 100644 (file)
@@ -46,9 +46,32 @@ int healthd_board_battery_update(struct android::BatteryProperties*) {
     return 0;
 }
 
+void healthd_mode_default_impl_init(struct healthd_config*) {
+    // noop
+}
+
+int healthd_mode_default_impl_preparetowait(void) {
+    return -1;
+}
+
+void healthd_mode_default_impl_heartbeat(void) {
+    // noop
+}
+
+void healthd_mode_default_impl_battery_update(struct android::BatteryProperties*) {
+    // noop
+}
+
+static struct healthd_mode_ops healthd_mode_default_impl_ops = {
+    .init = healthd_mode_default_impl_init,
+    .preparetowait = healthd_mode_default_impl_preparetowait,
+    .heartbeat = healthd_mode_default_impl_heartbeat,
+    .battery_update = healthd_mode_default_impl_battery_update,
+};
+
 extern "C" IHealth* HIDL_FETCH_IHealth(const char* name) {
     const static std::string providedInstance{"backup"};
-
+    healthd_mode_ops = &healthd_mode_default_impl_ops;
     if (providedInstance == name) {
         // use defaults
         // Health class stores static instance