diff options
author | Yifan Hong <elsk@google.com> | 2018-08-15 02:20:26 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-08-15 02:20:26 +0200 |
commit | 254e49c01d92e9cfcb3d7a63106ae4bf405afb02 (patch) | |
tree | 05fddc49dd14d0e39f51bbd5d0ed5303222d101b | |
parent | Merge "updater: Move libupdater to Soong." am: c205dd9d43 am: d1386d8385 (diff) | |
parent | Merge "recovery uses IHealth::getService" am: ce2f0d85fb (diff) | |
download | android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar.gz android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar.bz2 android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar.lz android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar.xz android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.tar.zst android_bootable_recovery-254e49c01d92e9cfcb3d7a63106ae4bf405afb02.zip |
-rw-r--r-- | Android.bp | 18 | ||||
-rw-r--r-- | recovery.cpp | 65 | ||||
-rw-r--r-- | tests/Android.mk | 13 |
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 \ |