diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java index 84d758bbe319e..bf64f9dae836c 100644 --- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java +++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java @@ -1247,49 +1247,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { } } - private void pullTemperature(int tagId, long elapsedNanos, long wallClockNanos, - List pulledData) { - long callingToken = Binder.clearCallingIdentity(); - try { - List temperatures = sThermalService.getCurrentTemperatures(); - for (Temperature temp : temperatures) { - StatsLogEventWrapper e = - new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); - e.writeInt(temp.getType()); - e.writeString(temp.getName()); - e.writeInt((int) (temp.getValue() * 10)); - e.writeInt(temp.getStatus()); - pulledData.add(e); - } - } catch (RemoteException e) { - // Should not happen. - Slog.e(TAG, "Disconnected from thermal service. Cannot pull temperatures."); - } finally { - Binder.restoreCallingIdentity(callingToken); - } - } - - private void pullCoolingDevices(int tagId, long elapsedNanos, long wallClockNanos, - List pulledData) { - long callingToken = Binder.clearCallingIdentity(); - try { - List devices = sThermalService.getCurrentCoolingDevices(); - for (CoolingDevice device : devices) { - StatsLogEventWrapper e = - new StatsLogEventWrapper(tagId, elapsedNanos, wallClockNanos); - e.writeInt(device.getType()); - e.writeString(device.getName()); - e.writeInt((int) (device.getValue())); - pulledData.add(e); - } - } catch (RemoteException e) { - // Should not happen. - Slog.e(TAG, "Disconnected from thermal service. Cannot pull temperatures."); - } finally { - Binder.restoreCallingIdentity(callingToken); - } - } - private void pullDebugElapsedClock(int tagId, long elapsedNanos, final long wallClockNanos, List pulledData) { final long elapsedMillis = SystemClock.elapsedRealtime(); @@ -1745,16 +1702,6 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { break; } - case StatsLog.TEMPERATURE: { - pullTemperature(tagId, elapsedNanos, wallClockNanos, ret); - break; - } - - case StatsLog.COOLING_DEVICE: { - pullCoolingDevices(tagId, elapsedNanos, wallClockNanos, ret); - break; - } - case StatsLog.DEBUG_ELAPSED_CLOCK: { pullDebugElapsedClock(tagId, elapsedNanos, wallClockNanos, ret); break; diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp index 38f6459c1097a..d88f538c39cff 100644 --- a/cmds/statsd/src/external/StatsPullerManager.cpp +++ b/cmds/statsd/src/external/StatsPullerManager.cpp @@ -95,14 +95,6 @@ std::map StatsPullerManager::kAllPullAtomInfo = { {{.atomTag = android::util::BATTERY_CYCLE_COUNT}, {.puller = new ResourceHealthManagerPuller(android::util::BATTERY_CYCLE_COUNT)}}, - // temperature - {{.atomTag = android::util::TEMPERATURE}, - {.puller = new StatsCompanionServicePuller(android::util::TEMPERATURE)}}, - - // cooling_device - {{.atomTag = android::util::COOLING_DEVICE}, - {.puller = new StatsCompanionServicePuller(android::util::COOLING_DEVICE)}}, - // binder_calls {{.atomTag = android::util::BINDER_CALLS}, {.additiveFields = {4, 5, 6, 8, 12}, 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 2941d77eb1197..f25f69a3ee77f 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -1274,19 +1274,78 @@ public class StatsPullAtomService extends SystemService { } private void registerTemperature() { - // No op. + int tagId = StatsLog.TEMPERATURE; + mStatsManager.registerPullAtomCallback( + tagId, + null, // use default PullAtomMetadata values + (atomTag, data) -> pullTemperature(atomTag, data), + BackgroundThread.getExecutor() + ); } - private void pullTemperature() { - // No op. + private int pullTemperature(int atomTag, List pulledData) { + IThermalService thermalService = getIThermalService(); + if (thermalService == null) { + return StatsManager.PULL_SKIP; + } + final long callingToken = Binder.clearCallingIdentity(); + try { + List temperatures = thermalService.getCurrentTemperatures(); + for (Temperature temp : temperatures) { + StatsEvent e = StatsEvent.newBuilder() + .setAtomId(atomTag) + .writeInt(temp.getType()) + .writeString(temp.getName()) + .writeInt((int) (temp.getValue() * 10)) + .writeInt(temp.getStatus()) + .build(); + pulledData.add(e); + } + } catch (RemoteException e) { + // Should not happen. + Slog.e(TAG, "Disconnected from thermal service. Cannot pull temperatures."); + return StatsManager.PULL_SKIP; + } finally { + Binder.restoreCallingIdentity(callingToken); + } + return StatsManager.PULL_SUCCESS; } private void registerCoolingDevice() { - // No op. + int tagId = StatsLog.COOLING_DEVICE; + mStatsManager.registerPullAtomCallback( + tagId, + null, // use default PullAtomMetadata values + (atomTag, data) -> pullCooldownDevice(atomTag, data), + BackgroundThread.getExecutor() + ); } - private void pullCooldownDevice() { - // No op. + private int pullCooldownDevice(int atomTag, List pulledData) { + IThermalService thermalService = getIThermalService(); + if (thermalService == null) { + return StatsManager.PULL_SKIP; + } + final long callingToken = Binder.clearCallingIdentity(); + try { + List devices = thermalService.getCurrentCoolingDevices(); + for (CoolingDevice device : devices) { + StatsEvent e = StatsEvent.newBuilder() + .setAtomId(atomTag) + .writeInt(device.getType()) + .writeString(device.getName()) + .writeInt((int) (device.getValue())) + .build(); + pulledData.add(e); + } + } catch (RemoteException e) { + // Should not happen. + Slog.e(TAG, "Disconnected from thermal service. Cannot pull temperatures."); + return StatsManager.PULL_SKIP; + } finally { + Binder.restoreCallingIdentity(callingToken); + } + return StatsManager.PULL_SUCCESS; } private void registerBinderCalls() {