Loading core/java/android/os/BatteryConsumer.java +4 −1 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public abstract class BatteryConsumer { PROCESS_STATE_FOREGROUND, PROCESS_STATE_BACKGROUND, PROCESS_STATE_FOREGROUND_SERVICE, PROCESS_STATE_CACHED, }) @Retention(RetentionPolicy.SOURCE) public @interface ProcessState { Loading @@ -175,8 +176,9 @@ public abstract class BatteryConsumer { public static final int PROCESS_STATE_FOREGROUND = 1; public static final int PROCESS_STATE_BACKGROUND = 2; public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3; public static final int PROCESS_STATE_CACHED = 4; public static final int PROCESS_STATE_COUNT = 4; public static final int PROCESS_STATE_COUNT = 5; private static final String[] sProcessStateNames = new String[PROCESS_STATE_COUNT]; Loading @@ -186,6 +188,7 @@ public abstract class BatteryConsumer { sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg"; sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg"; sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs"; sProcessStateNames[PROCESS_STATE_CACHED] = "cached"; } private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = { Loading core/java/android/os/BatteryStats.java +2 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,8 @@ public abstract class BatteryStats implements Parcelable { return BatteryConsumer.PROCESS_STATE_BACKGROUND; case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE: return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE; case BatteryStats.Uid.PROCESS_STATE_CACHED: return BatteryConsumer.PROCESS_STATE_CACHED; default: return BatteryConsumer.PROCESS_STATE_UNSPECIFIED; } Loading core/java/android/os/PowerComponents.java +4 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,10 @@ class PowerComponents { procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice .FOREGROUND_SERVICE; break; case BatteryConsumer.PROCESS_STATE_CACHED: procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice .CACHED; break; default: throw new IllegalArgumentException("Unknown process state: " + processState); } Loading core/java/android/os/UidBatteryConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,8 @@ public final class UidBatteryConsumer extends BatteryConsumer { skipEmptyComponents); appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE, skipEmptyComponents); appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_CACHED, skipEmptyComponents); pw.print(sb); } Loading core/java/com/android/internal/os/BatteryStatsImpl.java +53 −46 Original line number Diff line number Diff line Loading @@ -1929,20 +1929,28 @@ public class BatteryStatsImpl extends BatteryStats { private final TimeBase mTimeBase; private final LongMultiStateCounter mCounter; private TimeMultiStateCounter(TimeBase timeBase, Parcel in, long timestampMs) { mTimeBase = timeBase; mCounter = LongMultiStateCounter.CREATOR.createFromParcel(in); mCounter.setEnabled(mTimeBase.isRunning(), timestampMs); timeBase.add(this); private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) { this(timeBase, new LongMultiStateCounter(stateCount), timestampMs); } private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) { private TimeMultiStateCounter(TimeBase timeBase, LongMultiStateCounter counter, long timestampMs) { mTimeBase = timeBase; mCounter = new LongMultiStateCounter(stateCount); mCounter = counter; mCounter.setEnabled(mTimeBase.isRunning(), timestampMs); timeBase.add(this); } @Nullable private static TimeMultiStateCounter readFromParcel(Parcel in, TimeBase timeBase, int stateCount, long timestampMs) { LongMultiStateCounter counter = LongMultiStateCounter.CREATOR.createFromParcel(in); if (counter.getStateCount() != stateCount) { return null; } return new TimeMultiStateCounter(timeBase, counter, timestampMs); } private void writeToParcel(Parcel out) { mCounter.writeToParcel(out, 0); } Loading Loading @@ -3510,11 +3518,8 @@ public class BatteryStatsImpl extends BatteryStats { private TimeMultiStateCounter readTimeMultiStateCounter(Parcel in, TimeBase timeBase) { if (in.readBoolean()) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime()); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { return counter; } return TimeMultiStateCounter.readFromParcel(in, timeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); } return null; } Loading @@ -3537,9 +3542,10 @@ public class BatteryStatsImpl extends BatteryStats { // invalid. TimeMultiStateCounter[] counters = new TimeMultiStateCounter[numCounters]; for (int i = 0; i < numCounters; i++) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime()); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { final TimeMultiStateCounter counter = TimeMultiStateCounter.readFromParcel(in, timeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); if (counter != null) { counters[i] = counter; } else { valid = false; Loading Loading @@ -10744,11 +10750,9 @@ public class BatteryStatsImpl extends BatteryStats { = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in); } if (in.readBoolean()) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(mBsi.mOnBatteryTimeBase, in, timestampMs); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { mMobileRadioActiveTime = counter; } mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in, mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, timestampMs); } mMobileRadioActiveCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in); Loading Loading @@ -10794,11 +10798,9 @@ public class BatteryStatsImpl extends BatteryStats { int stateCount = in.readInt(); if (stateCount != 0) { final TimeMultiStateCounter counter = new TimeMultiStateCounter( mBsi.mOnBatteryTimeBase, in, timestampMs); if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) { mCpuActiveTimeMs = counter; } mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in, mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, timestampMs); } mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnBatteryTimeBase, in); Loading Loading @@ -16887,14 +16889,18 @@ public class BatteryStatsImpl extends BatteryStats { mNextMaxDailyDeadlineMs = in.readLong(); mBatteryTimeToFullSeconds = in.readLong(); mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats measuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel(mMeasuredEnergyStatsConfig, in); if (config != null && Arrays.equals(config.getStateNames(), getBatteryConsumerProcessStateNames())) { /** * WARNING: Supported buckets may have changed across boots. Bucket mismatch is handled * later when {@link #initMeasuredEnergyStatsLocked} is called. */ mGlobalMeasuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel( mMeasuredEnergyStatsConfig, in); mMeasuredEnergyStatsConfig = config; mGlobalMeasuredEnergyStats = measuredEnergyStats; } mStartCount++; Loading Loading @@ -16986,7 +16992,6 @@ public class BatteryStatsImpl extends BatteryStats { getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in); } } int NKW = in.readInt(); if (NKW > 10000) { throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW); Loading Loading @@ -17114,11 +17119,9 @@ public class BatteryStatsImpl extends BatteryStats { u.mNetworkPacketActivityCounters[i].readSummaryFromParcelLocked(in); } if (in.readBoolean()) { TimeMultiStateCounter counter = new TimeMultiStateCounter( mOnBatteryTimeBase, in, elapsedRealtimeMs); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { u.mMobileRadioActiveTime = counter; } u.mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in, mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, elapsedRealtimeMs); } u.mMobileRadioActiveCount.readSummaryFromParcelLocked(in); } Loading Loading @@ -17168,11 +17171,9 @@ public class BatteryStatsImpl extends BatteryStats { int stateCount = in.readInt(); if (stateCount != 0) { final TimeMultiStateCounter counter = new TimeMultiStateCounter( mOnBatteryTimeBase, in, mClock.elapsedRealtime()); if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) { u.mCpuActiveTimeMs = counter; } u.mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in, mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); } u.mCpuClusterTimesMs.readSummaryFromParcelLocked(in); Loading Loading @@ -18007,9 +18008,15 @@ public class BatteryStatsImpl extends BatteryStats { mLastWriteTimeMs = in.readLong(); mBatteryTimeToFullSeconds = in.readLong(); mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in); mGlobalMeasuredEnergyStats = final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats measuredEnergyStats = MeasuredEnergyStats.createFromParcel(mMeasuredEnergyStatsConfig, in); if (config != null && Arrays.equals(config.getStateNames(), getBatteryConsumerProcessStateNames())) { mMeasuredEnergyStatsConfig = config; mGlobalMeasuredEnergyStats = measuredEnergyStats; } mRpmStats.clear(); int NRPMS = in.readInt(); Loading
core/java/android/os/BatteryConsumer.java +4 −1 Original line number Diff line number Diff line Loading @@ -165,6 +165,7 @@ public abstract class BatteryConsumer { PROCESS_STATE_FOREGROUND, PROCESS_STATE_BACKGROUND, PROCESS_STATE_FOREGROUND_SERVICE, PROCESS_STATE_CACHED, }) @Retention(RetentionPolicy.SOURCE) public @interface ProcessState { Loading @@ -175,8 +176,9 @@ public abstract class BatteryConsumer { public static final int PROCESS_STATE_FOREGROUND = 1; public static final int PROCESS_STATE_BACKGROUND = 2; public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3; public static final int PROCESS_STATE_CACHED = 4; public static final int PROCESS_STATE_COUNT = 4; public static final int PROCESS_STATE_COUNT = 5; private static final String[] sProcessStateNames = new String[PROCESS_STATE_COUNT]; Loading @@ -186,6 +188,7 @@ public abstract class BatteryConsumer { sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg"; sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg"; sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs"; sProcessStateNames[PROCESS_STATE_CACHED] = "cached"; } private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = { Loading
core/java/android/os/BatteryStats.java +2 −0 Original line number Diff line number Diff line Loading @@ -680,6 +680,8 @@ public abstract class BatteryStats implements Parcelable { return BatteryConsumer.PROCESS_STATE_BACKGROUND; case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE: return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE; case BatteryStats.Uid.PROCESS_STATE_CACHED: return BatteryConsumer.PROCESS_STATE_CACHED; default: return BatteryConsumer.PROCESS_STATE_UNSPECIFIED; } Loading
core/java/android/os/PowerComponents.java +4 −0 Original line number Diff line number Diff line Loading @@ -292,6 +292,10 @@ class PowerComponents { procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice .FOREGROUND_SERVICE; break; case BatteryConsumer.PROCESS_STATE_CACHED: procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice .CACHED; break; default: throw new IllegalArgumentException("Unknown process state: " + processState); } Loading
core/java/android/os/UidBatteryConsumer.java +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,8 @@ public final class UidBatteryConsumer extends BatteryConsumer { skipEmptyComponents); appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE, skipEmptyComponents); appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_CACHED, skipEmptyComponents); pw.print(sb); } Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +53 −46 Original line number Diff line number Diff line Loading @@ -1929,20 +1929,28 @@ public class BatteryStatsImpl extends BatteryStats { private final TimeBase mTimeBase; private final LongMultiStateCounter mCounter; private TimeMultiStateCounter(TimeBase timeBase, Parcel in, long timestampMs) { mTimeBase = timeBase; mCounter = LongMultiStateCounter.CREATOR.createFromParcel(in); mCounter.setEnabled(mTimeBase.isRunning(), timestampMs); timeBase.add(this); private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) { this(timeBase, new LongMultiStateCounter(stateCount), timestampMs); } private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) { private TimeMultiStateCounter(TimeBase timeBase, LongMultiStateCounter counter, long timestampMs) { mTimeBase = timeBase; mCounter = new LongMultiStateCounter(stateCount); mCounter = counter; mCounter.setEnabled(mTimeBase.isRunning(), timestampMs); timeBase.add(this); } @Nullable private static TimeMultiStateCounter readFromParcel(Parcel in, TimeBase timeBase, int stateCount, long timestampMs) { LongMultiStateCounter counter = LongMultiStateCounter.CREATOR.createFromParcel(in); if (counter.getStateCount() != stateCount) { return null; } return new TimeMultiStateCounter(timeBase, counter, timestampMs); } private void writeToParcel(Parcel out) { mCounter.writeToParcel(out, 0); } Loading Loading @@ -3510,11 +3518,8 @@ public class BatteryStatsImpl extends BatteryStats { private TimeMultiStateCounter readTimeMultiStateCounter(Parcel in, TimeBase timeBase) { if (in.readBoolean()) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime()); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { return counter; } return TimeMultiStateCounter.readFromParcel(in, timeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); } return null; } Loading @@ -3537,9 +3542,10 @@ public class BatteryStatsImpl extends BatteryStats { // invalid. TimeMultiStateCounter[] counters = new TimeMultiStateCounter[numCounters]; for (int i = 0; i < numCounters; i++) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime()); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { final TimeMultiStateCounter counter = TimeMultiStateCounter.readFromParcel(in, timeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); if (counter != null) { counters[i] = counter; } else { valid = false; Loading Loading @@ -10744,11 +10750,9 @@ public class BatteryStatsImpl extends BatteryStats { = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in); } if (in.readBoolean()) { final TimeMultiStateCounter counter = new TimeMultiStateCounter(mBsi.mOnBatteryTimeBase, in, timestampMs); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { mMobileRadioActiveTime = counter; } mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in, mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, timestampMs); } mMobileRadioActiveCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in); Loading Loading @@ -10794,11 +10798,9 @@ public class BatteryStatsImpl extends BatteryStats { int stateCount = in.readInt(); if (stateCount != 0) { final TimeMultiStateCounter counter = new TimeMultiStateCounter( mBsi.mOnBatteryTimeBase, in, timestampMs); if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) { mCpuActiveTimeMs = counter; } mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in, mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, timestampMs); } mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnBatteryTimeBase, in); Loading Loading @@ -16887,14 +16889,18 @@ public class BatteryStatsImpl extends BatteryStats { mNextMaxDailyDeadlineMs = in.readLong(); mBatteryTimeToFullSeconds = in.readLong(); mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats measuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel(mMeasuredEnergyStatsConfig, in); if (config != null && Arrays.equals(config.getStateNames(), getBatteryConsumerProcessStateNames())) { /** * WARNING: Supported buckets may have changed across boots. Bucket mismatch is handled * later when {@link #initMeasuredEnergyStatsLocked} is called. */ mGlobalMeasuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel( mMeasuredEnergyStatsConfig, in); mMeasuredEnergyStatsConfig = config; mGlobalMeasuredEnergyStats = measuredEnergyStats; } mStartCount++; Loading Loading @@ -16986,7 +16992,6 @@ public class BatteryStatsImpl extends BatteryStats { getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in); } } int NKW = in.readInt(); if (NKW > 10000) { throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW); Loading Loading @@ -17114,11 +17119,9 @@ public class BatteryStatsImpl extends BatteryStats { u.mNetworkPacketActivityCounters[i].readSummaryFromParcelLocked(in); } if (in.readBoolean()) { TimeMultiStateCounter counter = new TimeMultiStateCounter( mOnBatteryTimeBase, in, elapsedRealtimeMs); if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) { u.mMobileRadioActiveTime = counter; } u.mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in, mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, elapsedRealtimeMs); } u.mMobileRadioActiveCount.readSummaryFromParcelLocked(in); } Loading Loading @@ -17168,11 +17171,9 @@ public class BatteryStatsImpl extends BatteryStats { int stateCount = in.readInt(); if (stateCount != 0) { final TimeMultiStateCounter counter = new TimeMultiStateCounter( mOnBatteryTimeBase, in, mClock.elapsedRealtime()); if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) { u.mCpuActiveTimeMs = counter; } u.mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in, mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime()); } u.mCpuClusterTimesMs.readSummaryFromParcelLocked(in); Loading Loading @@ -18007,9 +18008,15 @@ public class BatteryStatsImpl extends BatteryStats { mLastWriteTimeMs = in.readLong(); mBatteryTimeToFullSeconds = in.readLong(); mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in); mGlobalMeasuredEnergyStats = final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in); final MeasuredEnergyStats measuredEnergyStats = MeasuredEnergyStats.createFromParcel(mMeasuredEnergyStatsConfig, in); if (config != null && Arrays.equals(config.getStateNames(), getBatteryConsumerProcessStateNames())) { mMeasuredEnergyStatsConfig = config; mGlobalMeasuredEnergyStats = measuredEnergyStats; } mRpmStats.clear(); int NRPMS = in.readInt();