Loading core/java/android/os/BatteryStats.java +45 −3 Original line number Diff line number Diff line Loading @@ -222,8 +222,10 @@ public abstract class BatteryStats implements Parcelable { * - Resource power manager (rpm) states [but screenOffRpm is disabled from working properly] * New in version 27: * - Always On Display (screen doze mode) time and power * New in version 28: * - Light/Deep Doze power */ static final int CHECKIN_VERSION = 27; static final int CHECKIN_VERSION = 28; /** * Old version, we hit 9 and ran out of room, need to remove. Loading Loading @@ -2695,6 +2697,18 @@ public abstract class BatteryStats implements Parcelable { */ public abstract long getUahDischarge(int which); /** * @return the amount of battery discharge while the device is in light idle mode, measured in * micro-Ampere-hours. */ public abstract long getUahDischargeLightDoze(int which); /** * @return the amount of battery discharge while the device is in deep idle mode, measured in * micro-Ampere-hours. */ public abstract long getUahDischargeDeepDoze(int which); /** * Returns the estimated real battery capacity, which may be less than the capacity * declared by the PowerProfile. Loading Loading @@ -3327,6 +3341,8 @@ public abstract class BatteryStats implements Parcelable { final long dischargeCount = getUahDischarge(which); final long dischargeScreenOffCount = getUahDischargeScreenOff(which); final long dischargeScreenDozeCount = getUahDischargeScreenDoze(which); final long dischargeLightDozeCount = getUahDischargeLightDoze(which); final long dischargeDeepDozeCount = getUahDischargeDeepDoze(which); final StringBuilder sb = new StringBuilder(128); Loading Loading @@ -3497,14 +3513,16 @@ public abstract class BatteryStats implements Parcelable { getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff(), dischargeCount / 1000, dischargeScreenOffCount / 1000, getDischargeAmountScreenDoze(), dischargeScreenDozeCount / 1000); getDischargeAmountScreenDoze(), dischargeScreenDozeCount / 1000, dischargeLightDozeCount / 1000, dischargeDeepDozeCount / 1000); } else { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getLowDischargeAmountSinceCharge(), getHighDischargeAmountSinceCharge(), getDischargeAmountScreenOnSinceCharge(), getDischargeAmountScreenOffSinceCharge(), dischargeCount / 1000, dischargeScreenOffCount / 1000, getDischargeAmountScreenDozeSinceCharge(), dischargeScreenDozeCount / 1000); getDischargeAmountScreenDozeSinceCharge(), dischargeScreenDozeCount / 1000, dischargeLightDozeCount / 1000, dischargeDeepDozeCount / 1000); } if (reqUid < 0) { Loading Loading @@ -4169,6 +4187,26 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } final long dischargeLightDozeCount = getUahDischargeLightDoze(which); if (dischargeLightDozeCount >= 0) { sb.setLength(0); sb.append(prefix); sb.append(" Device light doze discharge: "); sb.append(BatteryStatsHelper.makemAh(dischargeLightDozeCount / 1000.0)); sb.append(" mAh"); pw.println(sb.toString()); } final long dischargeDeepDozeCount = getUahDischargeDeepDoze(which); if (dischargeDeepDozeCount >= 0) { sb.setLength(0); sb.append(prefix); sb.append(" Device deep doze discharge: "); sb.append(BatteryStatsHelper.makemAh(dischargeDeepDozeCount / 1000.0)); sb.append(" mAh"); pw.println(sb.toString()); } pw.print(" Start clock time: "); pw.println(DateFormat.format("yyyy-MM-dd-HH-mm-ss", getStartClockTime()).toString()); Loading Loading @@ -7131,6 +7169,10 @@ public abstract class BatteryStats implements Parcelable { getUahDischargeScreenOff(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_SCREEN_DOZE, getUahDischargeScreenDoze(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_LIGHT_DOZE, getUahDischargeLightDoze(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_DEEP_DOZE, getUahDischargeDeepDoze(which) / 1000); proto.end(bdToken); // Time remaining Loading core/java/com/android/internal/os/BatteryStatsImpl.java +35 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version private static final int VERSION = 168 + (USE_OLD_HISTORY ? 1000 : 0); private static final int VERSION = 169 + (USE_OLD_HISTORY ? 1000 : 0); // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS; Loading Loading @@ -599,6 +599,8 @@ public class BatteryStatsImpl extends BatteryStats { private LongSamplingCounter mDischargeScreenOffCounter; private LongSamplingCounter mDischargeScreenDozeCounter; private LongSamplingCounter mDischargeCounter; private LongSamplingCounter mDischargeLightDozeCounter; private LongSamplingCounter mDischargeDeepDozeCounter; static final int MAX_LEVEL_STEPS = 200; Loading Loading @@ -696,6 +698,16 @@ public class BatteryStatsImpl extends BatteryStats { return mDischargeScreenDozeCounter.getCountLocked(which); } @Override public long getUahDischargeLightDoze(int which) { return mDischargeLightDozeCounter.getCountLocked(which); } @Override public long getUahDischargeDeepDoze(int which) { return mDischargeDeepDozeCounter.getCountLocked(which); } @Override public int getEstimatedBatteryCapacity() { return mEstimatedBatteryCapacity; Loading Loading @@ -9085,6 +9097,8 @@ public class BatteryStatsImpl extends BatteryStats { mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase); mDischargeScreenOffCounter = new LongSamplingCounter(mOnBatteryScreenOffTimeBase); mDischargeScreenDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mOnBattery = mOnBatteryInternal = false; long uptime = mClocks.uptimeMillis() * 1000; Loading Loading @@ -9664,6 +9678,8 @@ public class BatteryStatsImpl extends BatteryStats { mChargeStepTracker.init(); mDischargeScreenOffCounter.reset(false); mDischargeScreenDozeCounter.reset(false); mDischargeLightDozeCounter.reset(false); mDischargeDeepDozeCounter.reset(false); mDischargeCounter.reset(false); } Loading Loading @@ -11263,6 +11279,11 @@ public class BatteryStatsImpl extends BatteryStats { if (isScreenDoze(mScreenState)) { mDischargeScreenDozeCounter.addCountLocked(chargeDiff); } if (mDeviceIdleMode == DEVICE_IDLE_MODE_LIGHT) { mDischargeLightDozeCounter.addCountLocked(chargeDiff); } else if (mDeviceIdleMode == DEVICE_IDLE_MODE_DEEP) { mDischargeDeepDozeCounter.addCountLocked(chargeDiff); } } mHistoryCur.batteryChargeUAh = chargeUAh; setOnBatteryLocked(elapsedRealtime, uptime, onBattery, oldStatus, level, chargeUAh); Loading Loading @@ -11308,6 +11329,11 @@ public class BatteryStatsImpl extends BatteryStats { if (isScreenDoze(mScreenState)) { mDischargeScreenDozeCounter.addCountLocked(chargeDiff); } if (mDeviceIdleMode == DEVICE_IDLE_MODE_LIGHT) { mDischargeLightDozeCounter.addCountLocked(chargeDiff); } else if (mDeviceIdleMode == DEVICE_IDLE_MODE_DEEP) { mDischargeDeepDozeCounter.addCountLocked(chargeDiff); } } mHistoryCur.batteryChargeUAh = chargeUAh; changed = true; Loading Loading @@ -12069,6 +12095,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.readSummaryFromParcelLocked(in); mDischargeScreenOffCounter.readSummaryFromParcelLocked(in); mDischargeScreenDozeCounter.readSummaryFromParcelLocked(in); mDischargeLightDozeCounter.readSummaryFromParcelLocked(in); mDischargeDeepDozeCounter.readSummaryFromParcelLocked(in); int NPKG = in.readInt(); if (NPKG > 0) { mDailyPackageChanges = new ArrayList<>(NPKG); Loading Loading @@ -12493,6 +12521,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.writeSummaryFromParcelLocked(out); mDischargeScreenOffCounter.writeSummaryFromParcelLocked(out); mDischargeScreenDozeCounter.writeSummaryFromParcelLocked(out); mDischargeLightDozeCounter.writeSummaryFromParcelLocked(out); mDischargeDeepDozeCounter.writeSummaryFromParcelLocked(out); if (mDailyPackageChanges != null) { final int NPKG = mDailyPackageChanges.size(); out.writeInt(NPKG); Loading Loading @@ -13044,6 +13074,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeScreenOffCounter = new LongSamplingCounter(mOnBatteryScreenOffTimeBase, in); mDischargeScreenDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mLastWriteTime = in.readLong(); mRpmStats.clear(); Loading Loading @@ -13230,6 +13262,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.writeToParcel(out); mDischargeScreenOffCounter.writeToParcel(out); mDischargeScreenDozeCounter.writeToParcel(out); mDischargeLightDozeCounter.writeToParcel(out); mDischargeDeepDozeCounter.writeToParcel(out); out.writeLong(mLastWriteTime); out.writeInt(mRpmStats.size()); core/proto/android/os/batterystats.proto +8 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,14 @@ message SystemProto { // via a coulomb counter. For historical reasons, total_mah_screen_doze is // a subset of total_mah_screen_off. optional int64 total_mah_screen_doze = 8; // Total amount of battery discharged in mAh while the device was in light doze mode. // This will only be non-zero for devices that report battery discharge // via a coulomb counter. optional int64 total_mah_light_doze = 9; // Total amount of battery discharged in mAh while the device was in deep doze mode. // This will only be non-zero for devices that report battery discharge // via a coulomb counter. optional int64 total_mah_deep_doze = 10; }; optional BatteryDischarge battery_discharge = 2; Loading Loading
core/java/android/os/BatteryStats.java +45 −3 Original line number Diff line number Diff line Loading @@ -222,8 +222,10 @@ public abstract class BatteryStats implements Parcelable { * - Resource power manager (rpm) states [but screenOffRpm is disabled from working properly] * New in version 27: * - Always On Display (screen doze mode) time and power * New in version 28: * - Light/Deep Doze power */ static final int CHECKIN_VERSION = 27; static final int CHECKIN_VERSION = 28; /** * Old version, we hit 9 and ran out of room, need to remove. Loading Loading @@ -2695,6 +2697,18 @@ public abstract class BatteryStats implements Parcelable { */ public abstract long getUahDischarge(int which); /** * @return the amount of battery discharge while the device is in light idle mode, measured in * micro-Ampere-hours. */ public abstract long getUahDischargeLightDoze(int which); /** * @return the amount of battery discharge while the device is in deep idle mode, measured in * micro-Ampere-hours. */ public abstract long getUahDischargeDeepDoze(int which); /** * Returns the estimated real battery capacity, which may be less than the capacity * declared by the PowerProfile. Loading Loading @@ -3327,6 +3341,8 @@ public abstract class BatteryStats implements Parcelable { final long dischargeCount = getUahDischarge(which); final long dischargeScreenOffCount = getUahDischargeScreenOff(which); final long dischargeScreenDozeCount = getUahDischargeScreenDoze(which); final long dischargeLightDozeCount = getUahDischargeLightDoze(which); final long dischargeDeepDozeCount = getUahDischargeDeepDoze(which); final StringBuilder sb = new StringBuilder(128); Loading Loading @@ -3497,14 +3513,16 @@ public abstract class BatteryStats implements Parcelable { getDischargeStartLevel()-getDischargeCurrentLevel(), getDischargeAmountScreenOn(), getDischargeAmountScreenOff(), dischargeCount / 1000, dischargeScreenOffCount / 1000, getDischargeAmountScreenDoze(), dischargeScreenDozeCount / 1000); getDischargeAmountScreenDoze(), dischargeScreenDozeCount / 1000, dischargeLightDozeCount / 1000, dischargeDeepDozeCount / 1000); } else { dumpLine(pw, 0 /* uid */, category, BATTERY_DISCHARGE_DATA, getLowDischargeAmountSinceCharge(), getHighDischargeAmountSinceCharge(), getDischargeAmountScreenOnSinceCharge(), getDischargeAmountScreenOffSinceCharge(), dischargeCount / 1000, dischargeScreenOffCount / 1000, getDischargeAmountScreenDozeSinceCharge(), dischargeScreenDozeCount / 1000); getDischargeAmountScreenDozeSinceCharge(), dischargeScreenDozeCount / 1000, dischargeLightDozeCount / 1000, dischargeDeepDozeCount / 1000); } if (reqUid < 0) { Loading Loading @@ -4169,6 +4187,26 @@ public abstract class BatteryStats implements Parcelable { pw.println(sb.toString()); } final long dischargeLightDozeCount = getUahDischargeLightDoze(which); if (dischargeLightDozeCount >= 0) { sb.setLength(0); sb.append(prefix); sb.append(" Device light doze discharge: "); sb.append(BatteryStatsHelper.makemAh(dischargeLightDozeCount / 1000.0)); sb.append(" mAh"); pw.println(sb.toString()); } final long dischargeDeepDozeCount = getUahDischargeDeepDoze(which); if (dischargeDeepDozeCount >= 0) { sb.setLength(0); sb.append(prefix); sb.append(" Device deep doze discharge: "); sb.append(BatteryStatsHelper.makemAh(dischargeDeepDozeCount / 1000.0)); sb.append(" mAh"); pw.println(sb.toString()); } pw.print(" Start clock time: "); pw.println(DateFormat.format("yyyy-MM-dd-HH-mm-ss", getStartClockTime()).toString()); Loading Loading @@ -7131,6 +7169,10 @@ public abstract class BatteryStats implements Parcelable { getUahDischargeScreenOff(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_SCREEN_DOZE, getUahDischargeScreenDoze(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_LIGHT_DOZE, getUahDischargeLightDoze(which) / 1000); proto.write(SystemProto.BatteryDischarge.TOTAL_MAH_DEEP_DOZE, getUahDischargeDeepDoze(which) / 1000); proto.end(bdToken); // Time remaining Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +35 −1 Original line number Diff line number Diff line Loading @@ -120,7 +120,7 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version private static final int VERSION = 168 + (USE_OLD_HISTORY ? 1000 : 0); private static final int VERSION = 169 + (USE_OLD_HISTORY ? 1000 : 0); // Maximum number of items we will record in the history. private static final int MAX_HISTORY_ITEMS; Loading Loading @@ -599,6 +599,8 @@ public class BatteryStatsImpl extends BatteryStats { private LongSamplingCounter mDischargeScreenOffCounter; private LongSamplingCounter mDischargeScreenDozeCounter; private LongSamplingCounter mDischargeCounter; private LongSamplingCounter mDischargeLightDozeCounter; private LongSamplingCounter mDischargeDeepDozeCounter; static final int MAX_LEVEL_STEPS = 200; Loading Loading @@ -696,6 +698,16 @@ public class BatteryStatsImpl extends BatteryStats { return mDischargeScreenDozeCounter.getCountLocked(which); } @Override public long getUahDischargeLightDoze(int which) { return mDischargeLightDozeCounter.getCountLocked(which); } @Override public long getUahDischargeDeepDoze(int which) { return mDischargeDeepDozeCounter.getCountLocked(which); } @Override public int getEstimatedBatteryCapacity() { return mEstimatedBatteryCapacity; Loading Loading @@ -9085,6 +9097,8 @@ public class BatteryStatsImpl extends BatteryStats { mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase); mDischargeScreenOffCounter = new LongSamplingCounter(mOnBatteryScreenOffTimeBase); mDischargeScreenDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mDischargeCounter = new LongSamplingCounter(mOnBatteryTimeBase); mOnBattery = mOnBatteryInternal = false; long uptime = mClocks.uptimeMillis() * 1000; Loading Loading @@ -9664,6 +9678,8 @@ public class BatteryStatsImpl extends BatteryStats { mChargeStepTracker.init(); mDischargeScreenOffCounter.reset(false); mDischargeScreenDozeCounter.reset(false); mDischargeLightDozeCounter.reset(false); mDischargeDeepDozeCounter.reset(false); mDischargeCounter.reset(false); } Loading Loading @@ -11263,6 +11279,11 @@ public class BatteryStatsImpl extends BatteryStats { if (isScreenDoze(mScreenState)) { mDischargeScreenDozeCounter.addCountLocked(chargeDiff); } if (mDeviceIdleMode == DEVICE_IDLE_MODE_LIGHT) { mDischargeLightDozeCounter.addCountLocked(chargeDiff); } else if (mDeviceIdleMode == DEVICE_IDLE_MODE_DEEP) { mDischargeDeepDozeCounter.addCountLocked(chargeDiff); } } mHistoryCur.batteryChargeUAh = chargeUAh; setOnBatteryLocked(elapsedRealtime, uptime, onBattery, oldStatus, level, chargeUAh); Loading Loading @@ -11308,6 +11329,11 @@ public class BatteryStatsImpl extends BatteryStats { if (isScreenDoze(mScreenState)) { mDischargeScreenDozeCounter.addCountLocked(chargeDiff); } if (mDeviceIdleMode == DEVICE_IDLE_MODE_LIGHT) { mDischargeLightDozeCounter.addCountLocked(chargeDiff); } else if (mDeviceIdleMode == DEVICE_IDLE_MODE_DEEP) { mDischargeDeepDozeCounter.addCountLocked(chargeDiff); } } mHistoryCur.batteryChargeUAh = chargeUAh; changed = true; Loading Loading @@ -12069,6 +12095,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.readSummaryFromParcelLocked(in); mDischargeScreenOffCounter.readSummaryFromParcelLocked(in); mDischargeScreenDozeCounter.readSummaryFromParcelLocked(in); mDischargeLightDozeCounter.readSummaryFromParcelLocked(in); mDischargeDeepDozeCounter.readSummaryFromParcelLocked(in); int NPKG = in.readInt(); if (NPKG > 0) { mDailyPackageChanges = new ArrayList<>(NPKG); Loading Loading @@ -12493,6 +12521,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.writeSummaryFromParcelLocked(out); mDischargeScreenOffCounter.writeSummaryFromParcelLocked(out); mDischargeScreenDozeCounter.writeSummaryFromParcelLocked(out); mDischargeLightDozeCounter.writeSummaryFromParcelLocked(out); mDischargeDeepDozeCounter.writeSummaryFromParcelLocked(out); if (mDailyPackageChanges != null) { final int NPKG = mDailyPackageChanges.size(); out.writeInt(NPKG); Loading Loading @@ -13044,6 +13074,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeScreenOffCounter = new LongSamplingCounter(mOnBatteryScreenOffTimeBase, in); mDischargeScreenDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mLastWriteTime = in.readLong(); mRpmStats.clear(); Loading Loading @@ -13230,6 +13262,8 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeCounter.writeToParcel(out); mDischargeScreenOffCounter.writeToParcel(out); mDischargeScreenDozeCounter.writeToParcel(out); mDischargeLightDozeCounter.writeToParcel(out); mDischargeDeepDozeCounter.writeToParcel(out); out.writeLong(mLastWriteTime); out.writeInt(mRpmStats.size());
core/proto/android/os/batterystats.proto +8 −0 Original line number Diff line number Diff line Loading @@ -120,6 +120,14 @@ message SystemProto { // via a coulomb counter. For historical reasons, total_mah_screen_doze is // a subset of total_mah_screen_off. optional int64 total_mah_screen_doze = 8; // Total amount of battery discharged in mAh while the device was in light doze mode. // This will only be non-zero for devices that report battery discharge // via a coulomb counter. optional int64 total_mah_light_doze = 9; // Total amount of battery discharged in mAh while the device was in deep doze mode. // This will only be non-zero for devices that report battery discharge // via a coulomb counter. optional int64 total_mah_deep_doze = 10; }; optional BatteryDischarge battery_discharge = 2; Loading