summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2018-08-15 00:57:47 +0200
committerandroid-build-merger <android-build-merger@google.com>2018-08-15 00:57:47 +0200
commitfa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0 (patch)
tree05fddc49dd14d0e39f51bbd5d0ed5303222d101b
parentMerge "updater: Move libupdater to Soong." am: c205dd9d43 (diff)
parentMerge "recovery uses IHealth::getService" (diff)
downloadandroid_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar.gz
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar.bz2
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar.lz
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar.xz
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.tar.zst
android_bootable_recovery-fa82f9c4e15ebc27fb18ac3fcc2ba6d801a264b0.zip
-rw-r--r--Android.bp18
-rw-r--r--recovery.cpp65
-rw-r--r--tests/Android.mk13
3 files changed, 33 insertions, 63 deletions
diff --git a/Android.bp b/Android.bp
index bc60eed0a..1e7f54361 100644
--- a/Android.bp
+++ b/Android.bp
@@ -104,6 +104,7 @@ cc_defaults {
],
shared_libs: [
+ "android.hardware.health@2.0",
"libbase",
"libbootloader_message",
"libcrypto",
@@ -112,6 +113,8 @@ cc_defaults {
"libfs_mgr",
"libfusesideload",
"libhidl-gen-utils",
+ "libhidlbase",
+ "libhidltransport",
"liblog",
"libpng",
"libselinux",
@@ -125,20 +128,11 @@ cc_defaults {
"libminui",
"libverifier",
"libotautil",
+
+ // external dependencies
+ "libhealthhalutils",
"libvintf_recovery",
"libvintf",
-
- // TODO(b/80132328): Remove the dependency on static health HAL.
- "libhealthd.default",
- "android.hardware.health@2.0-impl",
- "android.hardware.health@2.0",
- "android.hardware.health@1.0",
- "android.hardware.health@1.0-convert",
- "libhealthstoragedefault",
- "libhidltransport",
- "libhidlbase",
- "libhwbinder_noltopgo",
- "libbatterymonitor",
],
}
diff --git a/recovery.cpp b/recovery.cpp
index cc30035df..129909549 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -49,7 +49,7 @@
#include <android-base/unique_fd.h>
#include <bootloader_message/bootloader_message.h>
#include <cutils/properties.h> /* for property_list */
-#include <health2/Health.h>
+#include <healthhalutils/HealthHalUtils.h>
#include <ziparchive/zip_archive.h>
#include "adb_install.h"
@@ -877,42 +877,29 @@ void ui_print(const char* format, ...) {
static bool is_battery_ok(int* required_battery_level) {
using android::hardware::health::V1_0::BatteryStatus;
+ using android::hardware::health::V2_0::get_health_service;
+ using android::hardware::health::V2_0::IHealth;
using android::hardware::health::V2_0::Result;
using android::hardware::health::V2_0::toString;
- using android::hardware::health::V2_0::implementation::Health;
-
- struct healthd_config healthd_config = {
- .batteryStatusPath = android::String8(android::String8::kEmptyString),
- .batteryHealthPath = android::String8(android::String8::kEmptyString),
- .batteryPresentPath = android::String8(android::String8::kEmptyString),
- .batteryCapacityPath = android::String8(android::String8::kEmptyString),
- .batteryVoltagePath = android::String8(android::String8::kEmptyString),
- .batteryTemperaturePath = android::String8(android::String8::kEmptyString),
- .batteryTechnologyPath = android::String8(android::String8::kEmptyString),
- .batteryCurrentNowPath = android::String8(android::String8::kEmptyString),
- .batteryCurrentAvgPath = android::String8(android::String8::kEmptyString),
- .batteryChargeCounterPath = android::String8(android::String8::kEmptyString),
- .batteryFullChargePath = android::String8(android::String8::kEmptyString),
- .batteryCycleCountPath = android::String8(android::String8::kEmptyString),
- .energyCounter = nullptr,
- .boot_min_cap = 0,
- .screen_on = nullptr
- };
- auto health =
- android::hardware::health::V2_0::implementation::Health::initInstance(&healthd_config);
+ android::sp<IHealth> health = get_health_service();
static constexpr int BATTERY_READ_TIMEOUT_IN_SEC = 10;
int wait_second = 0;
while (true) {
auto charge_status = BatteryStatus::UNKNOWN;
- health
- ->getChargeStatus([&charge_status](auto res, auto out_status) {
- if (res == Result::SUCCESS) {
- charge_status = out_status;
- }
- })
- .isOk(); // should not have transport error
+
+ if (health == nullptr) {
+ LOG(WARNING) << "no health implementation is found, assuming defaults";
+ } else {
+ health
+ ->getChargeStatus([&charge_status](auto res, auto out_status) {
+ if (res == Result::SUCCESS) {
+ charge_status = out_status;
+ }
+ })
+ .isOk(); // should not have transport error
+ }
// Treat unknown status as charged.
bool charged = (charge_status != BatteryStatus::DISCHARGING &&
@@ -920,15 +907,17 @@ static bool is_battery_ok(int* required_battery_level) {
Result res = Result::UNKNOWN;
int32_t capacity = INT32_MIN;
- health
- ->getCapacity([&res, &capacity](auto out_res, auto out_capacity) {
- res = out_res;
- capacity = out_capacity;
- })
- .isOk(); // should not have transport error
-
- ui_print("charge_status %d, charged %d, status %s, capacity %" PRId32 "\n", charge_status,
- charged, toString(res).c_str(), capacity);
+ if (health != nullptr) {
+ health
+ ->getCapacity([&res, &capacity](auto out_res, auto out_capacity) {
+ res = out_res;
+ capacity = out_capacity;
+ })
+ .isOk(); // should not have transport error
+ }
+
+ LOG(INFO) << "charge_status " << toString(charge_status) << ", charged " << charged
+ << ", status " << toString(res) << ", capacity " << capacity;
// At startup, the battery drivers in devices like N5X/N6P take some time to load
// the battery profile. Before the load finishes, it reports value 50 as a fake
// capacity. BATTERY_READ_TIMEOUT_IN_SEC is set that the battery drivers are expected
diff --git a/tests/Android.mk b/tests/Android.mk
index 4c9b68243..b59da8045 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -154,18 +154,6 @@ libupdater_static_libraries := \
libtune2fs \
$(tune2fs_static_libraries)
-health_hal_static_libraries := \
- android.hardware.health@2.0-impl \
- android.hardware.health@2.0 \
- android.hardware.health@1.0 \
- android.hardware.health@1.0-convert \
- libhealthstoragedefault \
- libhidltransport \
- libhidlbase \
- libhwbinder_noltopgo \
- libvndksupport \
- libbatterymonitor
-
librecovery_static_libraries := \
librecovery \
libbootloader_message \
@@ -175,7 +163,6 @@ librecovery_static_libraries := \
libminui \
libverifier \
libotautil \
- $(health_hal_static_libraries) \
libcrypto_utils \
libcrypto \
libext4_utils \