summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2010-07-26 12:24:16 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-07-26 12:24:16 -0700
commit443d884e16fad2e01a97aa788d4b30de53c94048 (patch)
treeab0dfed4cea4f16bd2456905380fef48481fc016 /core/java
parentfed3c364e6fc6acc5e5836bd1370c3c278f8a248 (diff)
parent3bee5af8162c177f8c8f4199489a401058ab26a9 (diff)
downloadframeworks_base-443d884e16fad2e01a97aa788d4b30de53c94048.zip
frameworks_base-443d884e16fad2e01a97aa788d4b30de53c94048.tar.gz
frameworks_base-443d884e16fad2e01a97aa788d4b30de53c94048.tar.bz2
am 3bee5af8: Battery stats: start removing last stats, keep total discharge.
Merge commit '3bee5af8162c177f8c8f4199489a401058ab26a9' into gingerbread-plus-aosp * commit '3bee5af8162c177f8c8f4199489a401058ab26a9': Battery stats: start removing last stats, keep total discharge.
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/BatteryStats.java22
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java214
2 files changed, 135 insertions, 101 deletions
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 0afd6cd..a699388 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -106,7 +106,7 @@ public abstract class BatteryStats implements Parcelable {
// NOTE: Update this list if you add/change any stats above.
// These characters are supposed to represent "total", "last", "current",
- // and "unplugged". They were shortened for effeciency sake.
+ // and "unplugged". They were shortened for efficiency sake.
private static final String[] STAT_NAMES = { "t", "l", "c", "u" };
/**
@@ -395,19 +395,23 @@ public abstract class BatteryStats implements Parcelable {
public char batteryTemperature;
public char batteryVoltage;
+ // Constants from SCREEN_BRIGHTNESS_*
public static final int STATE_BRIGHTNESS_MASK = 0x000000f;
public static final int STATE_BRIGHTNESS_SHIFT = 0;
+ // Constants from SIGNAL_STRENGTH_*
public static final int STATE_SIGNAL_STRENGTH_MASK = 0x00000f0;
public static final int STATE_SIGNAL_STRENGTH_SHIFT = 4;
+ // Constants from ServiceState.STATE_*
public static final int STATE_PHONE_STATE_MASK = 0x0000f00;
public static final int STATE_PHONE_STATE_SHIFT = 8;
+ // Constants from DATA_CONNECTION_*
public static final int STATE_DATA_CONNECTION_MASK = 0x000f000;
public static final int STATE_DATA_CONNECTION_SHIFT = 12;
public static final int STATE_BATTERY_PLUGGED_FLAG = 1<<30;
public static final int STATE_SCREEN_ON_FLAG = 1<<29;
public static final int STATE_GPS_ON_FLAG = 1<<28;
- public static final int STATE_PHONE_ON_FLAG = 1<<27;
+ public static final int STATE_PHONE_IN_CALL_FLAG = 1<<27;
public static final int STATE_PHONE_SCANNING_FLAG = 1<<26;
public static final int STATE_WIFI_ON_FLAG = 1<<25;
public static final int STATE_WIFI_RUNNING_FLAG = 1<<24;
@@ -619,7 +623,7 @@ public abstract class BatteryStats implements Parcelable {
new BitDescription(HistoryItem.STATE_BATTERY_PLUGGED_FLAG, "plugged"),
new BitDescription(HistoryItem.STATE_SCREEN_ON_FLAG, "screen"),
new BitDescription(HistoryItem.STATE_GPS_ON_FLAG, "gps"),
- new BitDescription(HistoryItem.STATE_PHONE_ON_FLAG, "phone"),
+ new BitDescription(HistoryItem.STATE_PHONE_IN_CALL_FLAG, "phone_in_call"),
new BitDescription(HistoryItem.STATE_PHONE_SCANNING_FLAG, "phone_scanning"),
new BitDescription(HistoryItem.STATE_WIFI_ON_FLAG, "wifi"),
new BitDescription(HistoryItem.STATE_WIFI_RUNNING_FLAG, "wifi_running"),
@@ -717,6 +721,18 @@ public abstract class BatteryStats implements Parcelable {
public abstract int getDischargeCurrentLevel();
/**
+ * Get the amount the battery has discharged since the stats were
+ * last reset after charging, as a lower-end approximation.
+ */
+ public abstract int getLowDischargeAmountSinceCharge();
+
+ /**
+ * Get the amount the battery has discharged since the stats were
+ * last reset after charging, as an upper-end approximation.
+ */
+ public abstract int getHighDischargeAmountSinceCharge();
+
+ /**
* Returns the total, last, or current battery uptime in microseconds.
*
* @param curTime the elapsed realtime in microseconds.
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 642c313..b3323e9 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -63,7 +63,7 @@ public final class BatteryStatsImpl extends BatteryStats {
private static final int MAGIC = 0xBA757475; // 'BATSTATS'
// Current on-disk Parcel version
- private static final int VERSION = 48;
+ private static final int VERSION = 49;
// Maximum number of items we will record in the history.
private static final int MAX_HISTORY_ITEMS = 1000;
@@ -184,6 +184,8 @@ public final class BatteryStatsImpl extends BatteryStats {
int mDischargeStartLevel;
int mDischargeUnplugLevel;
int mDischargeCurrentLevel;
+ int mLowDischargeAmountSinceCharge;
+ int mHighDischargeAmountSinceCharge;
long mLastWriteTime = 0; // Milliseconds
@@ -260,7 +262,7 @@ public final class BatteryStatsImpl extends BatteryStats {
mPluggedCount = in.readInt();
mCount.set(mPluggedCount);
mLoadedCount = in.readInt();
- mLastCount = in.readInt();
+ mLastCount = 0;
mUnpluggedCount = in.readInt();
unpluggables.add(this);
}
@@ -273,7 +275,6 @@ public final class BatteryStatsImpl extends BatteryStats {
public void writeToParcel(Parcel out) {
out.writeInt(mCount.get());
out.writeInt(mLoadedCount);
- out.writeInt(mLastCount);
out.writeInt(mUnpluggedCount);
}
@@ -348,13 +349,12 @@ public final class BatteryStatsImpl extends BatteryStats {
void writeSummaryFromParcelLocked(Parcel out) {
int count = mCount.get();
out.writeInt(count);
- out.writeInt(count - mLoadedCount);
}
void readSummaryFromParcelLocked(Parcel in) {
mLoadedCount = in.readInt();
mCount.set(mLoadedCount);
- mLastCount = in.readInt();
+ mLastCount = 0;
mUnpluggedCount = mPluggedCount = mLoadedCount;
}
}
@@ -428,11 +428,11 @@ public final class BatteryStatsImpl extends BatteryStats {
mCount = in.readInt();
mLoadedCount = in.readInt();
- mLastCount = in.readInt();
+ mLastCount = 0;
mUnpluggedCount = in.readInt();
mTotalTime = in.readLong();
mLoadedTime = in.readLong();
- mLastTime = in.readLong();
+ mLastTime = 0;
mUnpluggedTime = in.readLong();
unpluggables.add(this);
}
@@ -467,11 +467,9 @@ public final class BatteryStatsImpl extends BatteryStats {
public void writeToParcel(Parcel out, long batteryRealtime) {
out.writeInt(mCount);
out.writeInt(mLoadedCount);
- out.writeInt(mLastCount);
out.writeInt(mUnpluggedCount);
out.writeLong(computeRunTimeLocked(batteryRealtime));
out.writeLong(mLoadedTime);
- out.writeLong(mLastTime);
out.writeLong(mUnpluggedTime);
}
@@ -569,18 +567,16 @@ public final class BatteryStatsImpl extends BatteryStats {
long runTime = computeRunTimeLocked(batteryRealtime);
// Divide by 1000 for backwards compatibility
out.writeLong((runTime + 500) / 1000);
- out.writeLong(((runTime - mLoadedTime) + 500) / 1000);
out.writeInt(mCount);
- out.writeInt(mCount - mLoadedCount);
}
void readSummaryFromParcelLocked(Parcel in) {
// Multiply by 1000 for backwards compatibility
mTotalTime = mLoadedTime = in.readLong() * 1000;
- mLastTime = in.readLong() * 1000;
+ mLastTime = 0;
mUnpluggedTime = mTotalTime;
mCount = mLoadedCount = in.readInt();
- mLastCount = in.readInt();
+ mLastCount = 0;
mUnpluggedCount = mCount;
}
}
@@ -1243,7 +1239,6 @@ public final class BatteryStatsImpl extends BatteryStats {
if (DEBUG_HISTORY) Slog.v(TAG, "Screen on to: "
+ Integer.toHexString(mHistoryCur.states));
addHistoryRecordLocked(SystemClock.elapsedRealtime());
- mGpsNesting++;
mScreenOn = true;
mScreenOnTimer.startRunningLocked(this);
if (mScreenBrightnessBin >= 0) {
@@ -1297,7 +1292,7 @@ public final class BatteryStatsImpl extends BatteryStats {
public void notePhoneOnLocked() {
if (!mPhoneOn) {
- mHistoryCur.states |= HistoryItem.STATE_PHONE_ON_FLAG;
+ mHistoryCur.states |= HistoryItem.STATE_PHONE_IN_CALL_FLAG;
if (DEBUG_HISTORY) Slog.v(TAG, "Phone on to: "
+ Integer.toHexString(mHistoryCur.states));
addHistoryRecordLocked(SystemClock.elapsedRealtime());
@@ -1308,7 +1303,7 @@ public final class BatteryStatsImpl extends BatteryStats {
public void notePhoneOffLocked() {
if (mPhoneOn) {
- mHistoryCur.states &= ~HistoryItem.STATE_PHONE_ON_FLAG;
+ mHistoryCur.states &= ~HistoryItem.STATE_PHONE_IN_CALL_FLAG;
if (DEBUG_HISTORY) Slog.v(TAG, "Phone off to: "
+ Integer.toHexString(mHistoryCur.states));
addHistoryRecordLocked(SystemClock.elapsedRealtime());
@@ -1317,38 +1312,43 @@ public final class BatteryStatsImpl extends BatteryStats {
}
}
+ void stopAllSignalStrengthTimersLocked(int except) {
+ for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) {
+ if (i == except) {
+ continue;
+ }
+ while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) {
+ mPhoneSignalStrengthsTimer[i].stopRunningLocked(this);
+ }
+ }
+ }
+
/**
* Telephony stack updates the phone state.
* @param state phone state from ServiceState.getState()
*/
public void notePhoneStateLocked(int state) {
+ boolean scanning = false;
+
int bin = mPhoneSignalStrengthBin;
- boolean isAirplaneMode = state == ServiceState.STATE_POWER_OFF;
- // Stop all timers
- if (isAirplaneMode || state == ServiceState.STATE_OUT_OF_SERVICE) {
- for (int i = 0; i < NUM_SIGNAL_STRENGTH_BINS; i++) {
- while (mPhoneSignalStrengthsTimer[i].isRunningLocked()) {
- mPhoneSignalStrengthsTimer[i].stopRunningLocked(this);
- }
- }
- }
- // Stop Signal Scanning timer, in case we're going into service
- if (mPhoneSignalScanningTimer.isRunningLocked()) {
- mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG;
- if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: "
- + Integer.toHexString(mHistoryCur.states));
- addHistoryRecordLocked(SystemClock.elapsedRealtime());
- mPhoneSignalScanningTimer.stopRunningLocked(this);
- }
+
+ // If the phone is powered off, stop all timers.
+ if (state == ServiceState.STATE_POWER_OFF) {
+ stopAllSignalStrengthTimersLocked(-1);
// If we're back in service or continuing in service, restart the old timer.
- if (state == ServiceState.STATE_IN_SERVICE) {
+ } if (state == ServiceState.STATE_IN_SERVICE) {
if (bin == -1) bin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
if (!mPhoneSignalStrengthsTimer[bin].isRunningLocked()) {
mPhoneSignalStrengthsTimer[bin].startRunningLocked(this);
}
+
+ // If we're out of service, we are in the lowest signal strength
+ // bin and have the scanning bit set.
} else if (state == ServiceState.STATE_OUT_OF_SERVICE) {
+ scanning = true;
mPhoneSignalStrengthBin = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
+ stopAllSignalStrengthTimersLocked(mPhoneSignalStrengthBin);
if (!mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].isRunningLocked()) {
mPhoneSignalStrengthsTimer[mPhoneSignalStrengthBin].startRunningLocked(this);
}
@@ -1361,6 +1361,17 @@ public final class BatteryStatsImpl extends BatteryStats {
}
}
+ if (!scanning) {
+ // If we are no longer scanning, then stop the scanning timer.
+ if (mPhoneSignalScanningTimer.isRunningLocked()) {
+ mHistoryCur.states &= ~HistoryItem.STATE_PHONE_SCANNING_FLAG;
+ if (DEBUG_HISTORY) Slog.v(TAG, "Phone stopped scanning to: "
+ + Integer.toHexString(mHistoryCur.states));
+ addHistoryRecordLocked(SystemClock.elapsedRealtime());
+ mPhoneSignalScanningTimer.stopRunningLocked(this);
+ }
+ }
+
if (mPhoneServiceState != state) {
mHistoryCur.states = (mHistoryCur.states&~HistoryItem.STATE_PHONE_STATE_MASK)
| (state << HistoryItem.STATE_PHONE_STATE_SHIFT);
@@ -2622,10 +2633,6 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeLong(mLoadedSystemTime);
out.writeLong(mLoadedForegroundTime);
out.writeInt(mLoadedStarts);
- out.writeLong(mLastUserTime);
- out.writeLong(mLastSystemTime);
- out.writeLong(mLastForegroundTime);
- out.writeInt(mLastStarts);
out.writeLong(mUnpluggedUserTime);
out.writeLong(mUnpluggedSystemTime);
out.writeLong(mUnpluggedForegroundTime);
@@ -2652,10 +2659,10 @@ public final class BatteryStatsImpl extends BatteryStats {
mLoadedSystemTime = in.readLong();
mLoadedForegroundTime = in.readLong();
mLoadedStarts = in.readInt();
- mLastUserTime = in.readLong();
- mLastSystemTime = in.readLong();
- mLastForegroundTime = in.readLong();
- mLastStarts = in.readInt();
+ mLastUserTime = 0;
+ mLastSystemTime = 0;
+ mLastForegroundTime = 0;
+ mLastStarts = 0;
mUnpluggedUserTime = in.readLong();
mUnpluggedSystemTime = in.readLong();
mUnpluggedForegroundTime = in.readLong();
@@ -2828,7 +2835,7 @@ public final class BatteryStatsImpl extends BatteryStats {
void readFromParcelLocked(Parcel in) {
mWakeups = in.readInt();
mLoadedWakeups = in.readInt();
- mLastWakeups = in.readInt();
+ mLastWakeups = 0;
mUnpluggedWakeups = in.readInt();
int numServs = in.readInt();
@@ -2845,7 +2852,6 @@ public final class BatteryStatsImpl extends BatteryStats {
void writeToParcelLocked(Parcel out) {
out.writeInt(mWakeups);
out.writeInt(mLoadedWakeups);
- out.writeInt(mLastWakeups);
out.writeInt(mUnpluggedWakeups);
out.writeInt(mServiceStats.size());
@@ -3002,9 +3008,9 @@ public final class BatteryStatsImpl extends BatteryStats {
mLoadedStartTime = in.readLong();
mLoadedStarts = in.readInt();
mLoadedLaunches = in.readInt();
- mLastStartTime = in.readLong();
- mLastStarts = in.readInt();
- mLastLaunches = in.readInt();
+ mLastStartTime = 0;
+ mLastStarts = 0;
+ mLastLaunches = 0;
mUnpluggedStartTime = in.readLong();
mUnpluggedStarts = in.readInt();
mUnpluggedLaunches = in.readInt();
@@ -3022,9 +3028,6 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeLong(mLoadedStartTime);
out.writeInt(mLoadedStarts);
out.writeInt(mLoadedLaunches);
- out.writeLong(mLastStartTime);
- out.writeInt(mLastStarts);
- out.writeInt(mLastLaunches);
out.writeLong(mUnpluggedStartTime);
out.writeInt(mUnpluggedStarts);
out.writeInt(mUnpluggedLaunches);
@@ -3336,6 +3339,8 @@ public final class BatteryStatsImpl extends BatteryStats {
mDischargeStartLevel = 0;
mDischargeUnplugLevel = 0;
mDischargeCurrentLevel = 0;
+ mLowDischargeAmountSinceCharge = 0;
+ mHighDischargeAmountSinceCharge = 0;
}
public BatteryStatsImpl(Parcel p) {
@@ -3434,6 +3439,8 @@ public final class BatteryStatsImpl extends BatteryStats {
doWrite = true;
resetAllStatsLocked();
mDischargeStartLevel = level;
+ mLowDischargeAmountSinceCharge = 0;
+ mHighDischargeAmountSinceCharge = 0;
}
updateKernelWakelocksLocked();
mHistoryCur.batteryLevel = (byte)level;
@@ -3457,6 +3464,10 @@ public final class BatteryStatsImpl extends BatteryStats {
mTrackBatteryPastUptime += uptime - mTrackBatteryUptimeStart;
mTrackBatteryPastRealtime += realtime - mTrackBatteryRealtimeStart;
mDischargeCurrentLevel = level;
+ if (level < mDischargeUnplugLevel) {
+ mLowDischargeAmountSinceCharge = mDischargeUnplugLevel-level-1;
+ mHighDischargeAmountSinceCharge = mDischargeUnplugLevel-level;
+ }
doPlugLocked(getBatteryUptimeLocked(uptime), getBatteryRealtimeLocked(realtime));
}
if (doWrite || (mLastWriteTime + (60 * 1000)) < mSecRealtime) {
@@ -3723,6 +3734,20 @@ public final class BatteryStatsImpl extends BatteryStats {
}
@Override
+ public int getLowDischargeAmountSinceCharge() {
+ synchronized(this) {
+ return mLowDischargeAmountSinceCharge;
+ }
+ }
+
+ @Override
+ public int getHighDischargeAmountSinceCharge() {
+ synchronized(this) {
+ return mHighDischargeAmountSinceCharge;
+ }
+ }
+
+ @Override
public int getCpuSpeedSteps() {
return sNumSpeedSteps;
}
@@ -3926,15 +3951,13 @@ public final class BatteryStatsImpl extends BatteryStats {
mStartCount = in.readInt();
mBatteryUptime = in.readLong();
- mBatteryLastUptime = in.readLong();
mBatteryRealtime = in.readLong();
- mBatteryLastRealtime = in.readLong();
mUptime = in.readLong();
- mLastUptime = in.readLong();
mRealtime = in.readLong();
- mLastRealtime = in.readLong();
mDischargeUnplugLevel = in.readInt();
mDischargeCurrentLevel = in.readInt();
+ mLowDischargeAmountSinceCharge = in.readInt();
+ mHighDischargeAmountSinceCharge = in.readInt();
mStartCount++;
@@ -4058,11 +4081,8 @@ public final class BatteryStatsImpl extends BatteryStats {
String procName = in.readString();
Uid.Proc p = u.getProcessStatsLocked(procName);
p.mUserTime = p.mLoadedUserTime = in.readLong();
- p.mLastUserTime = in.readLong();
p.mSystemTime = p.mLoadedSystemTime = in.readLong();
- p.mLastSystemTime = in.readLong();
p.mStarts = p.mLoadedStarts = in.readInt();
- p.mLastStarts = in.readInt();
}
NP = in.readInt();
@@ -4074,17 +4094,13 @@ public final class BatteryStatsImpl extends BatteryStats {
String pkgName = in.readString();
Uid.Pkg p = u.getPackageStatsLocked(pkgName);
p.mWakeups = p.mLoadedWakeups = in.readInt();
- p.mLastWakeups = in.readInt();
final int NS = in.readInt();
for (int is = 0; is < NS; is++) {
String servName = in.readString();
Uid.Pkg.Serv s = u.getServiceStatsLocked(pkgName, servName);
s.mStartTime = s.mLoadedStartTime = in.readLong();
- s.mLastStartTime = in.readLong();
s.mStarts = s.mLoadedStarts = in.readInt();
- s.mLastStarts = in.readInt();
s.mLaunches = s.mLoadedLaunches = in.readInt();
- s.mLastLaunches = in.readInt();
}
}
@@ -4111,16 +4127,13 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeInt(mStartCount);
out.writeLong(computeBatteryUptime(NOW_SYS, STATS_SINCE_CHARGED));
- out.writeLong(computeBatteryUptime(NOW_SYS, STATS_CURRENT));
out.writeLong(computeBatteryRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED));
- out.writeLong(computeBatteryRealtime(NOWREAL_SYS, STATS_CURRENT));
out.writeLong(computeUptime(NOW_SYS, STATS_SINCE_CHARGED));
- out.writeLong(computeUptime(NOW_SYS, STATS_CURRENT));
out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED));
- out.writeLong(computeRealtime(NOWREAL_SYS, STATS_CURRENT));
out.writeInt(mDischargeUnplugLevel);
out.writeInt(mDischargeCurrentLevel);
-
+ out.writeInt(mLowDischargeAmountSinceCharge);
+ out.writeInt(mHighDischargeAmountSinceCharge);
mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL);
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
@@ -4256,11 +4269,8 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeString(ent.getKey());
Uid.Proc ps = ent.getValue();
out.writeLong(ps.mUserTime);
- out.writeLong(ps.mUserTime - ps.mLoadedUserTime);
out.writeLong(ps.mSystemTime);
- out.writeLong(ps.mSystemTime - ps.mLoadedSystemTime);
out.writeInt(ps.mStarts);
- out.writeInt(ps.mStarts - ps.mLoadedStarts);
}
}
@@ -4272,7 +4282,6 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeString(ent.getKey());
Uid.Pkg ps = ent.getValue();
out.writeInt(ps.mWakeups);
- out.writeInt(ps.mWakeups - ps.mLoadedWakeups);
final int NS = ps.mServiceStats.size();
out.writeInt(NS);
if (NS > 0) {
@@ -4282,11 +4291,8 @@ public final class BatteryStatsImpl extends BatteryStats {
BatteryStatsImpl.Uid.Pkg.Serv ss = sent.getValue();
long time = ss.getStartTimeToNowLocked(NOW);
out.writeLong(time);
- out.writeLong(time - ss.mLoadedStartTime);
out.writeInt(ss.mStarts);
- out.writeInt(ss.mStarts - ss.mLoadedStarts);
out.writeInt(ss.mLaunches);
- out.writeInt(ss.mLaunches - ss.mLoadedLaunches);
}
}
}
@@ -4311,9 +4317,9 @@ public final class BatteryStatsImpl extends BatteryStats {
mStartCount = in.readInt();
mBatteryUptime = in.readLong();
- mBatteryLastUptime = in.readLong();
+ mBatteryLastUptime = 0;
mBatteryRealtime = in.readLong();
- mBatteryLastRealtime = in.readLong();
+ mBatteryLastRealtime = 0;
mScreenOn = false;
mScreenOnTimer = new StopwatchTimer(-1, null, mUnpluggables, in);
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
@@ -4337,10 +4343,10 @@ public final class BatteryStatsImpl extends BatteryStats {
mBluetoothOnTimer = new StopwatchTimer(-2, null, mUnpluggables, in);
mUptime = in.readLong();
mUptimeStart = in.readLong();
- mLastUptime = in.readLong();
+ mLastUptime = 0;
mRealtime = in.readLong();
mRealtimeStart = in.readLong();
- mLastRealtime = in.readLong();
+ mLastRealtime = 0;
mOnBattery = in.readInt() != 0;
mOnBatteryInternal = false; // we are no longer really running.
mTrackBatteryPastUptime = in.readLong();
@@ -4351,6 +4357,8 @@ public final class BatteryStatsImpl extends BatteryStats {
mUnpluggedBatteryRealtime = in.readLong();
mDischargeUnplugLevel = in.readInt();
mDischargeCurrentLevel = in.readInt();
+ mLowDischargeAmountSinceCharge = in.readInt();
+ mHighDischargeAmountSinceCharge = in.readInt();
mLastWriteTime = in.readLong();
mMobileDataRx[STATS_LAST] = in.readLong();
@@ -4396,11 +4404,15 @@ public final class BatteryStatsImpl extends BatteryStats {
}
public void writeToParcel(Parcel out, int flags) {
- writeToParcelLocked(out, flags);
+ writeToParcelLocked(out, true, flags);
+ }
+
+ public void writeToParcelWithoutUids(Parcel out, int flags) {
+ writeToParcelLocked(out, false, flags);
}
@SuppressWarnings("unused")
- void writeToParcelLocked(Parcel out, int flags) {
+ void writeToParcelLocked(Parcel out, boolean inclUids, int flags) {
final long uSecUptime = SystemClock.uptimeMillis() * 1000;
final long uSecRealtime = SystemClock.elapsedRealtime() * 1000;
final long batteryUptime = getBatteryUptimeLocked(uSecUptime);
@@ -4412,9 +4424,7 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeInt(mStartCount);
out.writeLong(mBatteryUptime);
- out.writeLong(mBatteryLastUptime);
out.writeLong(mBatteryRealtime);
- out.writeLong(mBatteryLastRealtime);
mScreenOnTimer.writeToParcel(out, batteryRealtime);
for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
mScreenBrightnessTimer[i].writeToParcel(out, batteryRealtime);
@@ -4433,10 +4443,8 @@ public final class BatteryStatsImpl extends BatteryStats {
mBluetoothOnTimer.writeToParcel(out, batteryRealtime);
out.writeLong(mUptime);
out.writeLong(mUptimeStart);
- out.writeLong(mLastUptime);
out.writeLong(mRealtime);
out.writeLong(mRealtimeStart);
- out.writeLong(mLastRealtime);
out.writeInt(mOnBattery ? 1 : 0);
out.writeLong(batteryUptime);
out.writeLong(mTrackBatteryUptimeStart);
@@ -4446,6 +4454,8 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeLong(mUnpluggedBatteryRealtime);
out.writeInt(mDischargeUnplugLevel);
out.writeInt(mDischargeCurrentLevel);
+ out.writeInt(mLowDischargeAmountSinceCharge);
+ out.writeInt(mHighDischargeAmountSinceCharge);
out.writeLong(mLastWriteTime);
out.writeLong(getMobileTcpBytesReceived(STATS_SINCE_UNPLUGGED));
@@ -4458,27 +4468,35 @@ public final class BatteryStatsImpl extends BatteryStats {
out.writeInt(getBluetoothPingCount());
- out.writeInt(mKernelWakelockStats.size());
- for (Map.Entry<String, SamplingTimer> ent : mKernelWakelockStats.entrySet()) {
- SamplingTimer kwlt = ent.getValue();
- if (kwlt != null) {
- out.writeInt(1);
- out.writeString(ent.getKey());
- Timer.writeTimerToParcel(out, kwlt, batteryRealtime);
- } else {
- out.writeInt(0);
+ if (inclUids) {
+ out.writeInt(mKernelWakelockStats.size());
+ for (Map.Entry<String, SamplingTimer> ent : mKernelWakelockStats.entrySet()) {
+ SamplingTimer kwlt = ent.getValue();
+ if (kwlt != null) {
+ out.writeInt(1);
+ out.writeString(ent.getKey());
+ Timer.writeTimerToParcel(out, kwlt, batteryRealtime);
+ } else {
+ out.writeInt(0);
+ }
}
+ } else {
+ out.writeInt(0);
}
out.writeInt(sNumSpeedSteps);
- int size = mUidStats.size();
- out.writeInt(size);
- for (int i = 0; i < size; i++) {
- out.writeInt(mUidStats.keyAt(i));
- Uid uid = mUidStats.valueAt(i);
+ if (inclUids) {
+ int size = mUidStats.size();
+ out.writeInt(size);
+ for (int i = 0; i < size; i++) {
+ out.writeInt(mUidStats.keyAt(i));
+ Uid uid = mUidStats.valueAt(i);
- uid.writeToParcelLocked(out, batteryRealtime);
+ uid.writeToParcelLocked(out, batteryRealtime);
+ }
+ } else {
+ out.writeInt(0);
}
}