Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5f4a5f95 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Add "start time" timestamp to battery stats.

Change-Id: I902269b98b40b2421245bfd8971f34df5ff9214e
parent 31d9989e
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import java.util.Map;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.telephony.SignalStrength;
import android.text.format.DateFormat;
import android.util.Printer;
import android.util.SparseArray;
import android.util.TimeUtils;
@@ -894,6 +895,11 @@ public abstract class BatteryStats implements Parcelable {
    public abstract long getNetworkActivityBytes(int type, int which);
    public abstract long getNetworkActivityPackets(int type, int which);

    /**
     * Return the wall clock time when battery stats data collection started.
     */
    public abstract long getStartClockTime();

    /**
     * Return whether we are currently running on battery.
     */
@@ -1210,7 +1216,8 @@ public abstract class BatteryStats implements Parcelable {
        dumpLine(pw, 0 /* uid */, category, BATTERY_DATA, 
                which == STATS_SINCE_CHARGED ? getStartCount() : "N/A",
                whichBatteryRealtime / 1000, whichBatteryUptime / 1000,
                totalRealtime / 1000, totalUptime / 1000); 
                totalRealtime / 1000, totalUptime / 1000,
                getStartClockTime());
        
        // Calculate wakelock times across all uids.
        long fullWakeLockTimeTotal = 0;
@@ -1587,6 +1594,8 @@ public abstract class BatteryStats implements Parcelable {
                formatTimeMs(sb, totalUptime / 1000);
                sb.append("uptime, ");
        pw.println(sb.toString());
        pw.print("  Start clock time: ");
        pw.println(DateFormat.format("yyyy-MM-dd-HH-mm-ss", getStartClockTime()).toString());

        final long screenOnTime = getScreenOnTime(batteryRealtime, which);
        final long phoneOnTime = getPhoneOnTime(batteryRealtime, which);
+13 −4
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ public final class BatteryStatsImpl extends BatteryStats {
    private static final int MAGIC = 0xBA757475; // 'BATSTATS'

    // Current on-disk Parcel version
    private static final int VERSION = 70 + (USE_OLD_HISTORY ? 1000 : 0);
    private static final int VERSION = 71 + (USE_OLD_HISTORY ? 1000 : 0);

    // Maximum number of items we will record in the history.
    private static final int MAX_HISTORY_ITEMS = 2000;
@@ -209,6 +209,8 @@ public final class BatteryStatsImpl extends BatteryStats {

    int mStartCount;

    long mStartClockTime;

    long mBatteryUptime;
    long mBatteryLastUptime;
    long mBatteryRealtime;
@@ -2842,6 +2844,10 @@ public final class BatteryStatsImpl extends BatteryStats {
        }
    }

    @Override public long getStartClockTime() {
        return mStartClockTime;
    }

    @Override public boolean getIsOnBattery() {
        return mOnBattery;
    }
@@ -4959,6 +4965,7 @@ public final class BatteryStatsImpl extends BatteryStats {
    }

    void initTimes() {
        mStartClockTime = System.currentTimeMillis();
        mBatteryRealtime = mTrackBatteryPastUptime = 0;
        mBatteryUptime = mTrackBatteryPastRealtime = 0;
        mUptimeStart = mTrackBatteryUptimeStart = SystemClock.uptimeMillis() * 1000;
@@ -5832,6 +5839,7 @@ public final class BatteryStatsImpl extends BatteryStats {
        mBatteryRealtime = in.readLong();
        mUptime = in.readLong();
        mRealtime = in.readLong();
        mStartClockTime = in.readLong();
        mDischargeUnplugLevel = in.readInt();
        mDischargeCurrentLevel = in.readInt();
        mLowDischargeAmountSinceCharge = in.readInt();
@@ -6040,9 +6048,7 @@ public final class BatteryStatsImpl extends BatteryStats {
     * @param out the Parcel to be written to.
     */
    public void writeSummaryToParcel(Parcel out) {
        // Need to update with current kernel wake lock counts.
        updateKernelWakelocksLocked();
        updateNetworkActivityLocked();
        pullPendingStateUpdatesLocked();

        final long NOW_SYS = SystemClock.uptimeMillis() * 1000;
        final long NOWREAL_SYS = SystemClock.elapsedRealtime() * 1000;
@@ -6058,6 +6064,7 @@ public final class BatteryStatsImpl extends BatteryStats {
        out.writeLong(computeBatteryRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED));
        out.writeLong(computeUptime(NOW_SYS, STATS_SINCE_CHARGED));
        out.writeLong(computeRealtime(NOWREAL_SYS, STATS_SINCE_CHARGED));
        out.writeLong(mStartClockTime);
        out.writeInt(mDischargeUnplugLevel);
        out.writeInt(mDischargeCurrentLevel);
        out.writeInt(getLowDischargeAmountSinceCharge());
@@ -6293,6 +6300,7 @@ public final class BatteryStatsImpl extends BatteryStats {
        mBatteryLastUptime = 0;
        mBatteryRealtime = in.readLong();
        mBatteryLastRealtime = 0;
        mStartClockTime = in.readLong();
        mScreenOn = false;
        mScreenOnTimer = new StopwatchTimer(null, -1, null, mUnpluggables, in);
        for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
@@ -6408,6 +6416,7 @@ public final class BatteryStatsImpl extends BatteryStats {
        out.writeInt(mStartCount);
        out.writeLong(mBatteryUptime);
        out.writeLong(mBatteryRealtime);
        out.writeLong(mStartClockTime);
        mScreenOnTimer.writeToParcel(out, batteryRealtime);
        for (int i=0; i<NUM_SCREEN_BRIGHTNESS_BINS; i++) {
            mScreenBrightnessTimer[i].writeToParcel(out, batteryRealtime);