summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmds/statsd/Android.bp3
-rw-r--r--cmds/statsd/src/atoms.proto8
-rw-r--r--cmds/statsd/src/external/ResourceHealthManagerPuller.cpp117
-rw-r--r--cmds/statsd/src/external/ResourceHealthManagerPuller.h39
-rw-r--r--cmds/statsd/src/external/StatsPullerManager.cpp17
-rw-r--r--services/core/java/com/android/server/stats/pull/StatsPullAtomService.java77
6 files changed, 77 insertions, 184 deletions
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index ac24a553b555..fdc7fce3b884 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -69,7 +69,6 @@ cc_defaults {
"src/external/PowerStatsPuller.cpp",
"src/external/PullResultReceiver.cpp",
"src/external/puller_util.cpp",
- "src/external/ResourceHealthManagerPuller.cpp",
"src/external/StatsCallbackPuller.cpp",
"src/external/StatsPuller.cpp",
"src/external/StatsPullerManager.cpp",
@@ -127,7 +126,6 @@ cc_defaults {
"android.hardware.power@1.1",
"libbase",
"libcutils",
- "libhealthhalutils",
"liblog",
"libplatformprotos",
"libprotoutil",
@@ -136,7 +134,6 @@ cc_defaults {
"libsysutils",
],
shared_libs: [
- "android.hardware.health@2.0",
"libbinder",
"libgraphicsenv",
"libhidlbase",
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 7f00410ac9ab..d065401953fe 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -411,8 +411,8 @@ message Atom {
CpuActiveTime cpu_active_time = 10016 [(module) = "framework"];
CpuClusterTime cpu_cluster_time = 10017 [(module) = "framework"];
DiskSpace disk_space = 10018 [deprecated=true];
- RemainingBatteryCapacity remaining_battery_capacity = 10019;
- FullBatteryCapacity full_battery_capacity = 10020;
+ RemainingBatteryCapacity remaining_battery_capacity = 10019 [(module) = "framework"];
+ FullBatteryCapacity full_battery_capacity = 10020 [(module) = "framework"];
Temperature temperature = 10021 [(module) = "framework"];
BinderCalls binder_calls = 10022 [(module) = "framework"];
BinderCallsExceptions binder_calls_exceptions = 10023 [(module) = "framework"];
@@ -422,7 +422,7 @@ message Atom {
AppSize app_size = 10027 [(module) = "framework"];
CategorySize category_size = 10028 [(module) = "framework"];
ProcStats proc_stats = 10029 [(module) = "framework"];
- BatteryVoltage battery_voltage = 10030;
+ BatteryVoltage battery_voltage = 10030 [(module) = "framework"];
NumFingerprintsEnrolled num_fingerprints_enrolled = 10031 [(module) = "framework"];
DiskIo disk_io = 10032 [(module) = "framework"];
PowerProfile power_profile = 10033 [(module) = "framework"];
@@ -438,7 +438,7 @@ message Atom {
ProcessMemoryHighWaterMark process_memory_high_water_mark = 10042 [(module) = "framework"];
BatteryLevel battery_level = 10043 [(module) = "framework"];
BuildInformation build_information = 10044 [(module) = "framework"];
- BatteryCycleCount battery_cycle_count = 10045;
+ BatteryCycleCount battery_cycle_count = 10045 [(module) = "framework"];
DebugElapsedClock debug_elapsed_clock = 10046 [(module) = "framework"];
DebugFailingElapsedClock debug_failing_elapsed_clock = 10047 [(module) = "framework"];
NumFacesEnrolled num_faces_enrolled = 10048 [(module) = "framework"];
diff --git a/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp b/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
deleted file mode 100644
index c9aafcd80168..000000000000
--- a/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define DEBUG false // STOPSHIP if true
-#include "Log.h"
-
-#include <android/hardware/health/2.0/IHealth.h>
-#include <healthhalutils/HealthHalUtils.h>
-#include "external/ResourceHealthManagerPuller.h"
-#include "external/StatsPuller.h"
-
-#include "ResourceHealthManagerPuller.h"
-#include "logd/LogEvent.h"
-#include "stats_log_util.h"
-#include "statslog.h"
-
-using android::hardware::hidl_vec;
-using android::hardware::Return;
-using android::hardware::Void;
-using android::hardware::health::V2_0::get_health_service;
-using android::hardware::health::V2_0::HealthInfo;
-using android::hardware::health::V2_0::IHealth;
-using android::hardware::health::V2_0::Result;
-
-using std::make_shared;
-using std::shared_ptr;
-
-namespace android {
-namespace os {
-namespace statsd {
-
-sp<android::hardware::health::V2_0::IHealth> gHealthHal = nullptr;
-
-bool getHealthHal() {
- if (gHealthHal == nullptr) {
- gHealthHal = get_health_service();
- }
- return gHealthHal != nullptr;
-}
-
-ResourceHealthManagerPuller::ResourceHealthManagerPuller(int tagId) : StatsPuller(tagId) {
-}
-
-// TODO(b/110565992): add other health atoms (eg. Temperature).
-bool ResourceHealthManagerPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
- if (!getHealthHal()) {
- ALOGE("Health Hal not loaded");
- return false;
- }
-
- int64_t wallClockTimestampNs = getWallClockNs();
- int64_t elapsedTimestampNs = getElapsedRealtimeNs();
-
- data->clear();
- bool result_success = true;
-
- // Get the data from the Health HAL (hardware/interfaces/health/1.0/types.hal).
- Return<void> ret = gHealthHal->getHealthInfo([&](Result r, HealthInfo v) {
- if (r != Result::SUCCESS) {
- result_success = false;
- return;
- }
- if (mTagId == android::util::REMAINING_BATTERY_CAPACITY) {
- auto ptr = make_shared<LogEvent>(android::util::REMAINING_BATTERY_CAPACITY,
- wallClockTimestampNs, elapsedTimestampNs);
- ptr->write(v.legacy.batteryChargeCounter);
- ptr->init();
- data->push_back(ptr);
- } else if (mTagId == android::util::FULL_BATTERY_CAPACITY) {
- auto ptr = make_shared<LogEvent>(android::util::FULL_BATTERY_CAPACITY,
- wallClockTimestampNs, elapsedTimestampNs);
- ptr->write(v.legacy.batteryFullCharge);
- ptr->init();
- data->push_back(ptr);
- } else if (mTagId == android::util::BATTERY_VOLTAGE) {
- auto ptr = make_shared<LogEvent>(android::util::BATTERY_VOLTAGE, wallClockTimestampNs,
- elapsedTimestampNs);
- ptr->write(v.legacy.batteryVoltage);
- ptr->init();
- data->push_back(ptr);
- } else if (mTagId == android::util::BATTERY_CYCLE_COUNT) {
- auto ptr = make_shared<LogEvent>(android::util::BATTERY_CYCLE_COUNT,
- wallClockTimestampNs, elapsedTimestampNs);
- ptr->write(v.legacy.batteryCycleCount);
- ptr->init();
- data->push_back(ptr);
- } else {
- ALOGE("Unsupported tag in ResourceHealthManagerPuller: %d", mTagId);
- }
- });
- if (!result_success || !ret.isOk()) {
- ALOGE("getHealthHal() failed: health HAL service not available. Description: %s",
- ret.description().c_str());
- if (!ret.isOk() && ret.isDeadObject()) {
- gHealthHal = nullptr;
- }
- return false;
- }
- return true;
-}
-
-} // namespace statsd
-} // namespace os
-} // namespace android
diff --git a/cmds/statsd/src/external/ResourceHealthManagerPuller.h b/cmds/statsd/src/external/ResourceHealthManagerPuller.h
deleted file mode 100644
index f650fccc447e..000000000000
--- a/cmds/statsd/src/external/ResourceHealthManagerPuller.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <utils/String16.h>
-#include "StatsPuller.h"
-
-namespace android {
-namespace os {
-namespace statsd {
-
-/**
- * Reads Ihealth.hal
- */
-class ResourceHealthManagerPuller : public StatsPuller {
-public:
- explicit ResourceHealthManagerPuller(int tagId);
-
-private:
- bool PullInternal(vector<std::shared_ptr<LogEvent>>* data) override;
-};
-
-} // namespace statsd
-} // namespace os
-} // namespace android
diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp
index 5a3eb723cd73..668c11ef55f5 100644
--- a/cmds/statsd/src/external/StatsPullerManager.cpp
+++ b/cmds/statsd/src/external/StatsPullerManager.cpp
@@ -34,7 +34,6 @@
#include "../statscompanion_util.h"
#include "GpuStatsPuller.h"
#include "PowerStatsPuller.h"
-#include "ResourceHealthManagerPuller.h"
#include "StatsCallbackPuller.h"
#include "SubsystemSleepStatePuller.h"
#include "TrainInfoPuller.h"
@@ -62,22 +61,6 @@ StatsPullerManager::StatsPullerManager()
// on_device_power_measurement
{{.atomTag = android::util::ON_DEVICE_POWER_MEASUREMENT}, new PowerStatsPuller()},
- // remaining_battery_capacity
- {{.atomTag = android::util::REMAINING_BATTERY_CAPACITY},
- new ResourceHealthManagerPuller(android::util::REMAINING_BATTERY_CAPACITY)},
-
- // full_battery_capacity
- {{.atomTag = android::util::FULL_BATTERY_CAPACITY},
- new ResourceHealthManagerPuller(android::util::FULL_BATTERY_CAPACITY)},
-
- // battery_voltage
- {{.atomTag = android::util::BATTERY_VOLTAGE},
- new ResourceHealthManagerPuller(android::util::BATTERY_VOLTAGE)},
-
- // battery_cycle_count
- {{.atomTag = android::util::BATTERY_CYCLE_COUNT},
- new ResourceHealthManagerPuller(android::util::BATTERY_CYCLE_COUNT)},
-
// TrainInfo.
{{.atomTag = android::util::TRAIN_INFO}, new TrainInfoPuller()},
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index 9d2d3023afbd..4f8a86d3f3c6 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -378,7 +378,11 @@ public class StatsPullAtomService extends SystemService {
case FrameworkStatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED:
return pullDangerousPermissionState(atomTag, data);
case FrameworkStatsLog.BATTERY_LEVEL:
- return pullBatteryLevel(atomTag, data);
+ case FrameworkStatsLog.REMAINING_BATTERY_CAPACITY:
+ case FrameworkStatsLog.FULL_BATTERY_CAPACITY:
+ case FrameworkStatsLog.BATTERY_VOLTAGE:
+ case FrameworkStatsLog.BATTERY_CYCLE_COUNT:
+ return pullHealthHal(atomTag, data);
default:
throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
}
@@ -534,6 +538,10 @@ public class StatsPullAtomService extends SystemService {
registerDangerousPermissionState();
registerDangerousPermissionStateSampled();
registerBatteryLevel();
+ registerRemainingBatteryCapacity();
+ registerFullBatteryCapacity();
+ registerBatteryVoltage();
+ registerBatteryCycleCount();
}
private INetworkStatsService getINetworkStatsService() {
@@ -2986,20 +2994,81 @@ public class StatsPullAtomService extends SystemService {
);
}
- int pullBatteryLevel(int atomTag, List<StatsEvent> pulledData) {
+ private void registerRemainingBatteryCapacity() {
+ int tagId = FrameworkStatsLog.REMAINING_BATTERY_CAPACITY;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ BackgroundThread.getExecutor(),
+ mStatsCallbackImpl
+ );
+ }
+
+ private void registerFullBatteryCapacity() {
+ int tagId = FrameworkStatsLog.FULL_BATTERY_CAPACITY;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ BackgroundThread.getExecutor(),
+ mStatsCallbackImpl
+ );
+ }
+
+ private void registerBatteryVoltage() {
+ int tagId = FrameworkStatsLog.BATTERY_VOLTAGE;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ BackgroundThread.getExecutor(),
+ mStatsCallbackImpl
+ );
+ }
+
+ private void registerBatteryCycleCount() {
+ int tagId = FrameworkStatsLog.BATTERY_CYCLE_COUNT;
+ mStatsManager.registerPullAtomCallback(
+ tagId,
+ null, // use default PullAtomMetadata values
+ BackgroundThread.getExecutor(),
+ mStatsCallbackImpl
+ );
+ }
+
+ int pullHealthHal(int atomTag, List<StatsEvent> pulledData) {
IHealth healthService = mHealthService.getLastService();
if (healthService == null) {
return StatsManager.PULL_SKIP;
}
try {
healthService.getHealthInfo((result, value) -> {
+ int pulledValue;
+ switch(atomTag) {
+ case FrameworkStatsLog.BATTERY_LEVEL:
+ pulledValue = value.legacy.batteryLevel;
+ break;
+ case FrameworkStatsLog.REMAINING_BATTERY_CAPACITY:
+ pulledValue = value.legacy.batteryChargeCounter;
+ break;
+ case FrameworkStatsLog.FULL_BATTERY_CAPACITY:
+ pulledValue = value.legacy.batteryFullCharge;
+ break;
+ case FrameworkStatsLog.BATTERY_VOLTAGE:
+ pulledValue = value.legacy.batteryVoltage;
+ break;
+ case FrameworkStatsLog.BATTERY_CYCLE_COUNT:
+ pulledValue = value.legacy.batteryCycleCount;
+ break;
+ default:
+ throw new IllegalStateException("Invalid atomTag in healthHal puller: "
+ + atomTag);
+ }
StatsEvent e = StatsEvent.newBuilder()
.setAtomId(atomTag)
- .writeInt(value.legacy.batteryLevel)
+ .writeInt(pulledValue)
.build();
pulledData.add(e);
});
- } catch (RemoteException e) {
+ } catch (RemoteException | IllegalStateException e) {
return StatsManager.PULL_SKIP;
}
return StatsManager.PULL_SUCCESS;