From b548bea77884649e84cdaaf6765dfd70c7d43ab1 Mon Sep 17 00:00:00 2001 From: Tao Bao Date: Mon, 30 Sep 2019 16:16:07 -0700 Subject: [PATCH] minadbd: Return battery level via getprop. `adb rescue getprop rescue.battery_level` returns the current battery level. Bug: 134560109 Test: Build and boot into rescue mode. Test: `adb rescue getprop ro.build.fingerprint` Test: `adb rescue getprop rescue.battery_level` Test: `adb rescue getprop` to dump all the properties. Test: Run recovery_unit_test. Change-Id: I78a9e8ab9783ffc8532cb93e6a64fb2157c19bd5 --- minadbd/Android.bp | 4 ++++ minadbd/minadbd_services.cpp | 18 ++++++++++++++++-- recovery_utils/Android.bp | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/minadbd/Android.bp b/minadbd/Android.bp index 07171259..b7075e67 100644 --- a/minadbd/Android.bp +++ b/minadbd/Android.bp @@ -40,6 +40,7 @@ cc_library { defaults: [ "minadbd_defaults", + "librecovery_utils_defaults", ], srcs: [ @@ -48,6 +49,7 @@ cc_library { ], static_libs: [ + "librecovery_utils", "libotautil", ], @@ -97,6 +99,7 @@ cc_test { defaults: [ "minadbd_defaults", + "librecovery_utils_defaults", ], srcs: [ @@ -107,6 +110,7 @@ cc_test { static_libs: [ "libminadbd_services", "libfusesideload", + "librecovery_utils", "libotautil", "libadbd", ], diff --git a/minadbd/minadbd_services.cpp b/minadbd/minadbd_services.cpp index cabcdaa0..eb91fb3e 100644 --- a/minadbd/minadbd_services.cpp +++ b/minadbd/minadbd_services.cpp @@ -44,6 +44,7 @@ #include "fuse_adb_provider.h" #include "fuse_sideload.h" #include "minadbd/types.h" +#include "recovery_utils/battery_utils.h" #include "services.h" #include "sysdeps.h" @@ -160,7 +161,10 @@ static void RescueInstallHostService(unique_fd sfd, const std::string& args) { // If given an empty string, dumps all the supported properties (analogous to `adb shell getprop`) // in lines, e.g. "[prop]: [value]". static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) { + constexpr const char* kRescueBatteryLevelProp = "rescue.battery_level"; static const std::set kGetpropAllowedProps = { + // clang-format off + kRescueBatteryLevelProp, "ro.build.date.utc", "ro.build.fingerprint", "ro.build.flavor", @@ -170,18 +174,28 @@ static void RescueGetpropHostService(unique_fd sfd, const std::string& prop) { "ro.build.version.incremental", "ro.product.device", "ro.product.vendor.device", + // clang-format on }; + + auto query_prop = [](const std::string& key) { + if (key == kRescueBatteryLevelProp) { + auto battery_info = GetBatteryInfo(); + return std::to_string(battery_info.capacity); + } + return android::base::GetProperty(key, ""); + }; + std::string result; if (prop.empty()) { for (const auto& key : kGetpropAllowedProps) { - auto value = android::base::GetProperty(key, ""); + auto value = query_prop(key); if (value.empty()) { continue; } result += "[" + key + "]: [" + value + "]\n"; } } else if (kGetpropAllowedProps.find(prop) != kGetpropAllowedProps.end()) { - result = android::base::GetProperty(prop, "") + "\n"; + result = query_prop(prop) + "\n"; } if (result.empty()) { result = "\n"; diff --git a/recovery_utils/Android.bp b/recovery_utils/Android.bp index 1f422175..bf79a2e8 100644 --- a/recovery_utils/Android.bp +++ b/recovery_utils/Android.bp @@ -75,6 +75,7 @@ cc_library_static { visibility: [ "//bootable/recovery", "//bootable/recovery/install", + "//bootable/recovery/minadbd", "//bootable/recovery/tests", ], }