Loading services/core/java/com/android/server/am/BatteryStatsService.java +24 −22 Original line number Diff line number Diff line Loading @@ -488,8 +488,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new CpuPowerStatsProcessor(mPowerProfile, mCpuScalingPolicies)); .setProcessorSupplier( () -> new CpuPowerStatsProcessor(mPowerProfile, mCpuScalingPolicies)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_SCREEN) .trackDeviceStates( Loading @@ -498,12 +498,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .setProcessor( new ScreenPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new ScreenPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY, BatteryConsumer.POWER_COMPONENT_SCREEN) .setProcessor(new AmbientDisplayPowerStatsProcessor()); .setProcessorSupplier(AmbientDisplayPowerStatsProcessor::new); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO) .trackDeviceStates( Loading @@ -513,12 +513,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new MobileRadioPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new MobileRadioPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_PHONE, BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO) .setProcessor(new PhoneCallPowerStatsProcessor()); .setProcessorSupplier(PhoneCallPowerStatsProcessor::new); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_WIFI) .trackDeviceStates( Loading @@ -528,8 +528,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new WifiPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new WifiPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_BLUETOOTH) .trackDeviceStates( Loading @@ -539,8 +539,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new BluetoothPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new BluetoothPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AUDIO) .trackDeviceStates( Loading @@ -550,8 +550,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_VIDEO) .trackDeviceStates( Loading @@ -561,7 +561,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor(new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT) .trackDeviceStates( Loading @@ -571,8 +572,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_CAMERA) .trackDeviceStates( Loading @@ -582,8 +584,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new CameraPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new CameraPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_GNSS) .trackDeviceStates( Loading @@ -593,8 +595,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new GnssPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new GnssPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_SENSORS) .trackDeviceStates( Loading @@ -604,7 +606,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor(new SensorPowerStatsProcessor( .setProcessorSupplier(() -> new SensorPowerStatsProcessor( () -> mContext.getSystemService(SensorManager.class))); config.trackCustomPowerComponents(CustomEnergyConsumerPowerStatsProcessor::new) Loading services/core/java/com/android/server/power/stats/AggregatedPowerStats.java +5 −7 Original line number Diff line number Diff line Loading @@ -174,8 +174,7 @@ class AggregatedPowerStats { void start(long timestampMs) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats component = mPowerComponentStats.valueAt(i); component.getConfig().getProcessor().start(component, timestampMs); mPowerComponentStats.valueAt(i).start(timestampMs); } } Loading Loading @@ -211,24 +210,23 @@ class AggregatedPowerStats { stats = new PowerComponentAggregatedPowerStats(this, powerComponent); stats.setPowerStatsDescriptor(powerStats.descriptor); stats.copyStatesFrom(mGenericPowerComponent); stats.start(time); mPowerComponentStats.put(powerComponentId, stats); } PowerStatsProcessor processor = stats.getConfig().getProcessor(); processor.addPowerStats(stats, powerStats, time); stats.addPowerStats(powerStats, time); } public void noteStateChange(BatteryStats.HistoryItem item) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats stats = mPowerComponentStats.valueAt(i); stats.getConfig().getProcessor().noteStateChange(stats, item); mPowerComponentStats.valueAt(i).noteStateChange(item); } } void finish(long timestampMs) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats component = mPowerComponentStats.valueAt(i); component.getConfig().getProcessor().finish(component, timestampMs); component.finish(timestampMs); } } Loading services/core/java/com/android/server/power/stats/AggregatedPowerStatsConfig.java +13 −9 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class AggregatedPowerStatsConfig { private final int mPowerComponentId; private @TrackedState int[] mTrackedDeviceStates; private @TrackedState int[] mTrackedUidStates; private PowerStatsProcessor mProcessor = NO_OP_PROCESSOR; private Supplier<PowerStatsProcessor> mProcessorSupplier; PowerComponent(int powerComponentId) { this.mPowerComponentId = powerComponentId; Loading Loading @@ -103,12 +103,13 @@ public class AggregatedPowerStatsConfig { } /** * Takes an object that should be invoked for every aggregated stats span * before giving the aggregates stats to consumers. The processor can complete the * aggregation process, for example by computing estimated power usage. * A PowerStatsProcessor takes an object that should be invoked for every aggregated * stats span before giving the aggregates stats to consumers. The processor can complete * the aggregation process, for example by computing estimated power usage. */ public PowerComponent setProcessor(@NonNull PowerStatsProcessor processor) { mProcessor = processor; public PowerComponent setProcessorSupplier( @NonNull Supplier<PowerStatsProcessor> processorSupplier) { mProcessorSupplier = processorSupplier; return this; } Loading Loading @@ -142,8 +143,11 @@ public class AggregatedPowerStatsConfig { } @NonNull PowerStatsProcessor getProcessor() { return mProcessor; PowerStatsProcessor createProcessor() { if (mProcessorSupplier == null) { return NO_OP_PROCESSOR; } return mProcessorSupplier.get(); } private boolean isTracked(int[] trackedStates, int state) { Loading Loading @@ -236,7 +240,7 @@ public class AggregatedPowerStatsConfig { powerComponent.trackUidStates(mCustomPowerComponent.mTrackedUidStates); if (mCustomPowerStatsProcessorFactory != null) { powerComponent.setProcessor(mCustomPowerStatsProcessorFactory.get()); powerComponent.setProcessorSupplier(mCustomPowerStatsProcessorFactory); } return powerComponent; Loading services/core/java/com/android/server/power/stats/BinaryStatePowerStatsProcessor.java +1 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ abstract class BinaryStatePowerStatsProcessor extends PowerStatsProcessor { private void flushPowerStats(PowerComponentAggregatedPowerStats stats, long timestamp) { mPowerStats.durationMs = timestamp - mLastUpdateTimestamp; stats.addPowerStats(mPowerStats, timestamp); stats.addProcessedPowerStats(mPowerStats, timestamp); Arrays.fill(mPowerStats.stats, 0); mPowerStats.uidStats.clear(); Loading services/core/java/com/android/server/power/stats/PowerComponentAggregatedPowerStats.java +25 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.server.power.stats.MultiStateStats.STATE_DOES_NOT_EXIS import android.annotation.NonNull; import android.annotation.Nullable; import android.os.BatteryStats; import android.os.UserHandle; import android.util.IndentingPrintWriter; import android.util.Slog; Loading Loading @@ -64,6 +65,7 @@ class PowerComponentAggregatedPowerStats { private final MultiStateStats.States[] mUidStateConfig; private final int[] mDeviceStates; private PowerStatsProcessor mProcessor; private MultiStateStats.Factory mStatsFactory; private MultiStateStats.Factory mStateStatsFactory; private MultiStateStats.Factory mUidStatsFactory; Loading Loading @@ -110,6 +112,21 @@ class PowerComponentAggregatedPowerStats { mPowerStatsDescriptor = powerStatsDescriptor; } void start(long timestampMs) { if (mProcessor == null) { mProcessor = mConfig.createProcessor(); } mProcessor.start(this, timestampMs); } void finish(long timestampMs) { mProcessor.finish(this, timestampMs); } void noteStateChange(BatteryStats.HistoryItem item) { mProcessor.noteStateChange(this, item); } void setState(@AggregatedPowerStatsConfig.TrackedState int stateId, int state, long timestampMs) { if (mDeviceStats == null) { Loading Loading @@ -183,6 +200,14 @@ class PowerComponentAggregatedPowerStats { } void addPowerStats(PowerStats powerStats, long timestampMs) { // Should call powerStats.addProcessedPowerStats mProcessor.addPowerStats(this, powerStats, timestampMs); } /** * Should be called ONLY by PowerStatsProcessor.processPowerStats. */ void addProcessedPowerStats(PowerStats powerStats, long timestampMs) { mPowerStatsDescriptor = powerStats.descriptor; if (mDeviceStats == null) { Loading Loading
services/core/java/com/android/server/am/BatteryStatsService.java +24 −22 Original line number Diff line number Diff line Loading @@ -488,8 +488,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new CpuPowerStatsProcessor(mPowerProfile, mCpuScalingPolicies)); .setProcessorSupplier( () -> new CpuPowerStatsProcessor(mPowerProfile, mCpuScalingPolicies)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_SCREEN) .trackDeviceStates( Loading @@ -498,12 +498,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub .trackUidStates( AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN) .setProcessor( new ScreenPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new ScreenPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AMBIENT_DISPLAY, BatteryConsumer.POWER_COMPONENT_SCREEN) .setProcessor(new AmbientDisplayPowerStatsProcessor()); .setProcessorSupplier(AmbientDisplayPowerStatsProcessor::new); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO) .trackDeviceStates( Loading @@ -513,12 +513,12 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new MobileRadioPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new MobileRadioPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_PHONE, BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO) .setProcessor(new PhoneCallPowerStatsProcessor()); .setProcessorSupplier(PhoneCallPowerStatsProcessor::new); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_WIFI) .trackDeviceStates( Loading @@ -528,8 +528,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new WifiPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new WifiPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_BLUETOOTH) .trackDeviceStates( Loading @@ -539,8 +539,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new BluetoothPowerStatsProcessor(mPowerProfile)); .setProcessorSupplier( () -> new BluetoothPowerStatsProcessor(mPowerProfile)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_AUDIO) .trackDeviceStates( Loading @@ -550,8 +550,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new AudioPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_VIDEO) .trackDeviceStates( Loading @@ -561,7 +561,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor(new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new VideoPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT) .trackDeviceStates( Loading @@ -571,8 +572,9 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new FlashlightPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_CAMERA) .trackDeviceStates( Loading @@ -582,8 +584,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new CameraPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new CameraPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_GNSS) .trackDeviceStates( Loading @@ -593,8 +595,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor( new GnssPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); .setProcessorSupplier( () -> new GnssPowerStatsProcessor(mPowerProfile, mPowerStatsUidResolver)); config.trackPowerComponent(BatteryConsumer.POWER_COMPONENT_SENSORS) .trackDeviceStates( Loading @@ -604,7 +606,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub AggregatedPowerStatsConfig.STATE_POWER, AggregatedPowerStatsConfig.STATE_SCREEN, AggregatedPowerStatsConfig.STATE_PROCESS_STATE) .setProcessor(new SensorPowerStatsProcessor( .setProcessorSupplier(() -> new SensorPowerStatsProcessor( () -> mContext.getSystemService(SensorManager.class))); config.trackCustomPowerComponents(CustomEnergyConsumerPowerStatsProcessor::new) Loading
services/core/java/com/android/server/power/stats/AggregatedPowerStats.java +5 −7 Original line number Diff line number Diff line Loading @@ -174,8 +174,7 @@ class AggregatedPowerStats { void start(long timestampMs) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats component = mPowerComponentStats.valueAt(i); component.getConfig().getProcessor().start(component, timestampMs); mPowerComponentStats.valueAt(i).start(timestampMs); } } Loading Loading @@ -211,24 +210,23 @@ class AggregatedPowerStats { stats = new PowerComponentAggregatedPowerStats(this, powerComponent); stats.setPowerStatsDescriptor(powerStats.descriptor); stats.copyStatesFrom(mGenericPowerComponent); stats.start(time); mPowerComponentStats.put(powerComponentId, stats); } PowerStatsProcessor processor = stats.getConfig().getProcessor(); processor.addPowerStats(stats, powerStats, time); stats.addPowerStats(powerStats, time); } public void noteStateChange(BatteryStats.HistoryItem item) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats stats = mPowerComponentStats.valueAt(i); stats.getConfig().getProcessor().noteStateChange(stats, item); mPowerComponentStats.valueAt(i).noteStateChange(item); } } void finish(long timestampMs) { for (int i = 0; i < mPowerComponentStats.size(); i++) { PowerComponentAggregatedPowerStats component = mPowerComponentStats.valueAt(i); component.getConfig().getProcessor().finish(component, timestampMs); component.finish(timestampMs); } } Loading
services/core/java/com/android/server/power/stats/AggregatedPowerStatsConfig.java +13 −9 Original line number Diff line number Diff line Loading @@ -74,7 +74,7 @@ public class AggregatedPowerStatsConfig { private final int mPowerComponentId; private @TrackedState int[] mTrackedDeviceStates; private @TrackedState int[] mTrackedUidStates; private PowerStatsProcessor mProcessor = NO_OP_PROCESSOR; private Supplier<PowerStatsProcessor> mProcessorSupplier; PowerComponent(int powerComponentId) { this.mPowerComponentId = powerComponentId; Loading Loading @@ -103,12 +103,13 @@ public class AggregatedPowerStatsConfig { } /** * Takes an object that should be invoked for every aggregated stats span * before giving the aggregates stats to consumers. The processor can complete the * aggregation process, for example by computing estimated power usage. * A PowerStatsProcessor takes an object that should be invoked for every aggregated * stats span before giving the aggregates stats to consumers. The processor can complete * the aggregation process, for example by computing estimated power usage. */ public PowerComponent setProcessor(@NonNull PowerStatsProcessor processor) { mProcessor = processor; public PowerComponent setProcessorSupplier( @NonNull Supplier<PowerStatsProcessor> processorSupplier) { mProcessorSupplier = processorSupplier; return this; } Loading Loading @@ -142,8 +143,11 @@ public class AggregatedPowerStatsConfig { } @NonNull PowerStatsProcessor getProcessor() { return mProcessor; PowerStatsProcessor createProcessor() { if (mProcessorSupplier == null) { return NO_OP_PROCESSOR; } return mProcessorSupplier.get(); } private boolean isTracked(int[] trackedStates, int state) { Loading Loading @@ -236,7 +240,7 @@ public class AggregatedPowerStatsConfig { powerComponent.trackUidStates(mCustomPowerComponent.mTrackedUidStates); if (mCustomPowerStatsProcessorFactory != null) { powerComponent.setProcessor(mCustomPowerStatsProcessorFactory.get()); powerComponent.setProcessorSupplier(mCustomPowerStatsProcessorFactory); } return powerComponent; Loading
services/core/java/com/android/server/power/stats/BinaryStatePowerStatsProcessor.java +1 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ abstract class BinaryStatePowerStatsProcessor extends PowerStatsProcessor { private void flushPowerStats(PowerComponentAggregatedPowerStats stats, long timestamp) { mPowerStats.durationMs = timestamp - mLastUpdateTimestamp; stats.addPowerStats(mPowerStats, timestamp); stats.addProcessedPowerStats(mPowerStats, timestamp); Arrays.fill(mPowerStats.stats, 0); mPowerStats.uidStats.clear(); Loading
services/core/java/com/android/server/power/stats/PowerComponentAggregatedPowerStats.java +25 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static com.android.server.power.stats.MultiStateStats.STATE_DOES_NOT_EXIS import android.annotation.NonNull; import android.annotation.Nullable; import android.os.BatteryStats; import android.os.UserHandle; import android.util.IndentingPrintWriter; import android.util.Slog; Loading Loading @@ -64,6 +65,7 @@ class PowerComponentAggregatedPowerStats { private final MultiStateStats.States[] mUidStateConfig; private final int[] mDeviceStates; private PowerStatsProcessor mProcessor; private MultiStateStats.Factory mStatsFactory; private MultiStateStats.Factory mStateStatsFactory; private MultiStateStats.Factory mUidStatsFactory; Loading Loading @@ -110,6 +112,21 @@ class PowerComponentAggregatedPowerStats { mPowerStatsDescriptor = powerStatsDescriptor; } void start(long timestampMs) { if (mProcessor == null) { mProcessor = mConfig.createProcessor(); } mProcessor.start(this, timestampMs); } void finish(long timestampMs) { mProcessor.finish(this, timestampMs); } void noteStateChange(BatteryStats.HistoryItem item) { mProcessor.noteStateChange(this, item); } void setState(@AggregatedPowerStatsConfig.TrackedState int stateId, int state, long timestampMs) { if (mDeviceStats == null) { Loading Loading @@ -183,6 +200,14 @@ class PowerComponentAggregatedPowerStats { } void addPowerStats(PowerStats powerStats, long timestampMs) { // Should call powerStats.addProcessedPowerStats mProcessor.addPowerStats(this, powerStats, timestampMs); } /** * Should be called ONLY by PowerStatsProcessor.processPowerStats. */ void addProcessedPowerStats(PowerStats powerStats, long timestampMs) { mPowerStatsDescriptor = powerStats.descriptor; if (mDeviceStats == null) { Loading