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

Commit ed754705 authored by Siddharth Ray's avatar Siddharth Ray
Browse files

Fix sleep time in Cellular

Sleep time for cellular is based on information sent by the modem.

Sleep time added to ControllerActivityCounterImpl. This field applies
to Cellular, Wifi, BT. This change is for cellular only.

BUG:72177330

Test: Manual
Change-Id: Ia2b35204094edd3972abb43cc16889116ddedabc
parent a54e54dc
Loading
Loading
Loading
Loading
+31 −12
Original line number Diff line number Diff line
@@ -421,6 +421,11 @@ public abstract class BatteryStats implements Parcelable {
         */
        public abstract LongCounter getScanTimeCounter();

        /**
         * @return a non-null {@link LongCounter} representing time spent (milliseconds) in the
         * sleep state.
         */
        public abstract LongCounter getSleepTimeCounter();

        /**
         * @return a non-null {@link LongCounter} representing time spent (milliseconds) in the
@@ -3368,8 +3373,6 @@ public abstract class BatteryStats implements Parcelable {
        for (LongCounter txState : counter.getTxTimeCounters()) {
            totalTxTimeMs += txState.getCountLocked(which);
        }
        final long sleepTimeMs
            = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + totalTxTimeMs);

        if (controllerName.equals(WIFI_CONTROLLER_NAME)) {
            final long scanTimeMs = counter.getScanTimeCounter().getCountLocked(which);
@@ -3383,8 +3386,23 @@ public abstract class BatteryStats implements Parcelable {
            sb.append(formatRatioLocked(scanTimeMs, totalControllerActivityTimeMs));
            sb.append(")");
            pw.println(sb.toString());

            final long sleepTimeMs
                = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + totalTxTimeMs);
            sb.setLength(0);
            sb.append(prefix);
            sb.append("     ");
            sb.append(controllerName);
            sb.append(" Sleep time:  ");
            formatTimeMs(sb, sleepTimeMs);
            sb.append("(");
            sb.append(formatRatioLocked(sleepTimeMs, totalControllerActivityTimeMs));
            sb.append(")");
            pw.println(sb.toString());
        }

        if (controllerName.equals(CELLULAR_CONTROLLER_NAME)) {
            final long sleepTimeMs = counter.getSleepTimeCounter().getCountLocked(which);
            sb.setLength(0);
            sb.append(prefix);
            sb.append("     ");
@@ -3395,6 +3413,7 @@ public abstract class BatteryStats implements Parcelable {
            sb.append(formatRatioLocked(sleepTimeMs, totalControllerActivityTimeMs));
            sb.append(")");
            pw.println(sb.toString());
        }

        sb.setLength(0);
        sb.append(prefix);
+20 −4
Original line number Diff line number Diff line
@@ -2793,6 +2793,7 @@ public class BatteryStatsImpl extends BatteryStats {
            implements Parcelable {
        private final LongSamplingCounter mIdleTimeMillis;
        private final LongSamplingCounter mScanTimeMillis;
        private final LongSamplingCounter mSleepTimeMillis;
        private final LongSamplingCounter mRxTimeMillis;
        private final LongSamplingCounter[] mTxTimeMillis;
        private final LongSamplingCounter mPowerDrainMaMs;
@@ -2800,6 +2801,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public ControllerActivityCounterImpl(TimeBase timeBase, int numTxStates) {
            mIdleTimeMillis = new LongSamplingCounter(timeBase);
            mScanTimeMillis = new LongSamplingCounter(timeBase);
            mSleepTimeMillis = new LongSamplingCounter(timeBase);
            mRxTimeMillis = new LongSamplingCounter(timeBase);
            mTxTimeMillis = new LongSamplingCounter[numTxStates];
            for (int i = 0; i < numTxStates; i++) {
@@ -2811,6 +2813,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public ControllerActivityCounterImpl(TimeBase timeBase, int numTxStates, Parcel in) {
            mIdleTimeMillis = new LongSamplingCounter(timeBase, in);
            mScanTimeMillis = new LongSamplingCounter(timeBase, in);
            mSleepTimeMillis = new LongSamplingCounter(timeBase, in);
            mRxTimeMillis = new LongSamplingCounter(timeBase, in);
            final int recordedTxStates = in.readInt();
            if (recordedTxStates != numTxStates) {
@@ -2827,6 +2830,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public void readSummaryFromParcel(Parcel in) {
            mIdleTimeMillis.readSummaryFromParcelLocked(in);
            mScanTimeMillis.readSummaryFromParcelLocked(in);
            mSleepTimeMillis.readSummaryFromParcelLocked(in);
            mRxTimeMillis.readSummaryFromParcelLocked(in);
            final int recordedTxStates = in.readInt();
            if (recordedTxStates != mTxTimeMillis.length) {
@@ -2846,6 +2850,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public void writeSummaryToParcel(Parcel dest) {
            mIdleTimeMillis.writeSummaryFromParcelLocked(dest);
            mScanTimeMillis.writeSummaryFromParcelLocked(dest);
            mSleepTimeMillis.writeSummaryFromParcelLocked(dest);
            mRxTimeMillis.writeSummaryFromParcelLocked(dest);
            dest.writeInt(mTxTimeMillis.length);
            for (LongSamplingCounter counter : mTxTimeMillis) {
@@ -2858,6 +2863,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public void writeToParcel(Parcel dest, int flags) {
            mIdleTimeMillis.writeToParcel(dest);
            mScanTimeMillis.writeToParcel(dest);
            mSleepTimeMillis.writeToParcel(dest);
            mRxTimeMillis.writeToParcel(dest);
            dest.writeInt(mTxTimeMillis.length);
            for (LongSamplingCounter counter : mTxTimeMillis) {
@@ -2869,6 +2875,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public void reset(boolean detachIfReset) {
            mIdleTimeMillis.reset(detachIfReset);
            mScanTimeMillis.reset(detachIfReset);
            mSleepTimeMillis.reset(detachIfReset);
            mRxTimeMillis.reset(detachIfReset);
            for (LongSamplingCounter counter : mTxTimeMillis) {
                counter.reset(detachIfReset);
@@ -2879,6 +2886,7 @@ public class BatteryStatsImpl extends BatteryStats {
        public void detach() {
            mIdleTimeMillis.detach();
            mScanTimeMillis.detach();
            mSleepTimeMillis.detach();
            mRxTimeMillis.detach();
            for (LongSamplingCounter counter : mTxTimeMillis) {
                counter.detach();
@@ -2904,6 +2912,15 @@ public class BatteryStatsImpl extends BatteryStats {
            return mScanTimeMillis;
        }
        /**
         * @return a LongSamplingCounter, measuring time spent in the sleep state in
         * milliseconds.
         */
        @Override
        public LongSamplingCounter getSleepTimeCounter() {
            return mSleepTimeMillis;
        }
        /**
         * @return a LongSamplingCounter, measuring time spent in the receive state in
         * milliseconds.
@@ -11275,6 +11292,8 @@ public class BatteryStatsImpl extends BatteryStats {
                mHasModemReporting = true;
                mModemActivity.getIdleTimeCounter().addCountLocked(
                        deltaInfo.getIdleTimeMillis());
                mModemActivity.getSleepTimeCounter().addCountLocked(
                        deltaInfo.getSleepTimeMillis());
                mModemActivity.getRxTimeCounter().addCountLocked(deltaInfo.getRxTimeMillis());
                for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) {
                    mModemActivity.getTxTimeCounters()[lvl]
@@ -12782,6 +12801,7 @@ public class BatteryStatsImpl extends BatteryStats {
        final int which = STATS_SINCE_CHARGED;
        final long rawRealTime = SystemClock.elapsedRealtime() * 1000;
        final ControllerActivityCounter counter = getModemControllerActivity();
        final long sleepTimeMs = counter.getSleepTimeCounter().getCountLocked(which);
        final long idleTimeMs = counter.getIdleTimeCounter().getCountLocked(which);
        final long rxTimeMs = counter.getRxTimeCounter().getCountLocked(which);
        final long energyConsumedMaMs = counter.getPowerCounter().getCountLocked(which);
@@ -12801,10 +12821,6 @@ public class BatteryStatsImpl extends BatteryStats {
            txTimeMs[i] = counter.getTxTimeCounters()[i].getCountLocked(which);
            totalTxTimeMs += txTimeMs[i];
        }
        final long totalControllerActivityTimeMs
            = computeBatteryRealtime(SystemClock.elapsedRealtime() * 1000, which) / 1000;
        final long sleepTimeMs
            = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + totalTxTimeMs);
        s.setLoggingDurationMs(computeBatteryRealtime(rawRealTime, which) / 1000);
        s.setKernelActiveTimeMs(getMobileRadioActiveTime(rawRealTime, which) / 1000);
        s.setNumPacketsTx(getNetworkActivityPackets(NETWORK_MOBILE_TX_DATA, which));