From 3e6dbcbc30ca0c7c5550defe89f6993b1be08b50 Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Fri, 19 Jan 2018 13:17:34 -0800 Subject: [PATCH] health: add README. Test: none Bug: 63702641 Change-Id: I1d23c0cdf56516585e7c6dd0db577784baa7b74e Merged-In: I1d23c0cdf56516585e7c6dd0db577784baa7b74e --- health/2.0/README | 99 +++++++++++++++++++++++++++++++++++++++++ health/2.0/utils/README | 28 ++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 health/2.0/README create mode 100644 health/2.0/utils/README diff --git a/health/2.0/README b/health/2.0/README new file mode 100644 index 0000000000..a0a5f08669 --- /dev/null +++ b/health/2.0/README @@ -0,0 +1,99 @@ +Upgrading from health@1.0 HAL + +0. Remove android.hardware.health@1.0* from PRDOUCT_PACKAGES + in device///device.mk + +1. If the device does not have a vendor-specific libhealthd AND does not + implement storage-related APIs, just add the following to PRODUCT_PACKAGES: + android.hardware.health@2.0-service + Otherwise, continue to Step 2. + +2. Create directory + device///health + +3. Create device///health/Android.bp + (or equivalent device///health/Android.mk) + +cc_binary { + name: "android.hardware.health@2.0-service.", + init_rc: ["android.hardware.health@2.0-service..rc"], + proprietary: true, + relative_install_path: "hw", + srcs: [ + "HealthService.cpp", + ], + + cflags: [ + "-Wall", + "-Werror", + ], + + static_libs: [ + "android.hardware.health@2.0-impl", + "android.hardware.health@1.0-convert", + "libhealthservice", + "libbatterymonitor", + ], + + shared_libs: [ + "libbase", + "libcutils", + "libhidlbase", + "libhidltransport", + "libutils", + "android.hardware.health@2.0", + ], + + header_libs: ["libhealthd_headers"], +} + +4. Create device///health/android.hardware.health@2.0-service..rc + +service vendor.health-hal-2-0 /vendor/bin/hw/android.hardware.health@2.0-service. + class hal + user system + group system + +5. Create device///health/HealthService.cpp: + +#include +int main() { return health_service_main(); } + +6. libhealthd dependency: + +6.1 If the device has a vendor-specific libhealthd., add it to static_libs. + +6.2 If the device does not have a vendor-specific libhealthd, add the following + lines to HealthService.cpp: + +#include +void healthd_board_init(struct healthd_config*) {} + +int healthd_board_battery_update(struct android::BatteryProperties*) { + // return 0 to log periodic polled battery status to kernel log + return 0; +} + +7. Storage related APIs: + +7.1 If the device does not implement IHealth.getDiskStats and + IHealth.getStorageInfo, add libstoragehealthdefault to static_libs. + +7.2 If the device implements one of these two APIs, add and implement the + following functions in HealthService.cpp: + +void get_storage_info(std::vector& info) { + // ... +} +void get_disk_stats(std::vector& stats) { + // ... +} + +8. Update necessary SELinux permissions. For example, + +# device///sepolicy/vendor/file_contexts +/vendor/bin/hw/android\.hardware\.health@2\.0-service. u:object_r:hal_health_default_exec:s0 + +# device///sepolicy/vendor/hal_health_default.te +# Add device specific permissions to hal_health_default domain, especially +# if Step 6.2 or Step 7.2 is done. diff --git a/health/2.0/utils/README b/health/2.0/utils/README new file mode 100644 index 0000000000..1d5c27f35f --- /dev/null +++ b/health/2.0/utils/README @@ -0,0 +1,28 @@ +* libhealthhalutils + +A convenience library for (hwbinder) clients of health HAL to choose between +the "default" instance (served by vendor service) or "backup" instance (served +by healthd). C++ clients of health HAL should use this library instead of +calling IHealth::getService() directly. + +Its Java equivalent can be found in BatteryService.HealthServiceWrapper. + +* libhealthservice + +Common code for all (hwbinder) services of the health HAL, including healthd and +vendor health service android.hardware.health@2.0-service(.). main() in +those binaries calls health_service_main() directly. + +* libhealthstoragedefault + +Default implementation for storage related APIs for (hwbinder) services of the +health HAL. If an implementation of the health HAL do not wish to provide any +storage info, include this library. Otherwise, it should implement the following +two functions: + +void get_storage_info(std::vector& info) { + // ... +} +void get_disk_stats(std::vector& stats) { + // ... +}