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

Commit f0cda79a authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix WifiAcitvityEnergyInfo handling in BatteryStats" into main

parents a509d52d 6e70fdcb
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -149,8 +149,7 @@ public class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStat
    // WiFi keeps an accumulated total of stats. Keep the last WiFi stats so we can compute a delta.
    // (This is unlike Bluetooth, where BatteryStatsImpl is left responsible for taking the delta.)
    @GuardedBy("mWorkerLock")
    private WifiActivityEnergyInfo mLastWifiInfo =
            new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0);
    private WifiActivityEnergyInfo mLastWifiInfo = null;

    /**
     * Maps an {@link EnergyConsumerType} to it's corresponding {@link EnergyConsumer#id}s,
@@ -827,8 +826,18 @@ public class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStat
        return null;
    }

    /**
     * Return a delta WifiActivityEnergyInfo from the last WifiActivityEnergyInfo passed to the
     * method.
     */
    @VisibleForTesting
    @GuardedBy("mWorkerLock")
    private WifiActivityEnergyInfo extractDeltaLocked(WifiActivityEnergyInfo latest) {
    public WifiActivityEnergyInfo extractDeltaLocked(WifiActivityEnergyInfo latest) {
        if (mLastWifiInfo == null) {
            // This is the first time WifiActivityEnergyInfo has been collected since system boot.
            // Use this first WifiActivityEnergyInfo as the starting point for all accumulations.
            mLastWifiInfo = latest;
        }
        final long timePeriodMs = latest.getTimeSinceBootMillis()
                - mLastWifiInfo.getTimeSinceBootMillis();
        final long lastScanMs = mLastWifiInfo.getControllerScanDurationMillis();
+2 −1
Original line number Diff line number Diff line
@@ -15487,7 +15487,8 @@ public class BatteryStatsImpl extends BatteryStats {
        final long txTimeMs = counter.getTxTimeCounters()[0].getCountLocked(which);
        final long totalControllerActivityTimeMs =
                computeBatteryRealtime(mClock.elapsedRealtime() * 1000, which) / 1000;
        final long sleepTimeMs = totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + txTimeMs);
        final long sleepTimeMs = Math.max(0,
                totalControllerActivityTimeMs - (idleTimeMs + rxTimeMs + txTimeMs));
        final long energyConsumedMaMs = counter.getPowerCounter().getCountLocked(which);
        final long monitoredRailChargeConsumedMaMs =
                counter.getMonitoredRailChargeConsumedMaMs().getCountLocked(which);
+28 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import android.hardware.power.stats.PowerEntity;
import android.hardware.power.stats.StateResidencyResult;
import android.os.Handler;
import android.os.Looper;
import android.os.connectivity.WifiActivityEnergyInfo;
import android.platform.test.ravenwood.RavenwoodRule;
import android.power.PowerStatsInternal;
import android.util.IntArray;
@@ -87,6 +88,33 @@ public class BatteryExternalStatsWorkerTest {
                new BatteryExternalStatsWorker(new TestInjector(context), batteryStats);
    }

    @Test
    public void testUpdateWifiState() {
        WifiActivityEnergyInfo firstInfo = new WifiActivityEnergyInfo(1111,
                WifiActivityEnergyInfo.STACK_STATE_STATE_ACTIVE, 11, 22, 33, 44);

        WifiActivityEnergyInfo delta = mBatteryExternalStatsWorker.extractDeltaLocked(firstInfo);

        assertEquals(1111, delta.getTimeSinceBootMillis());
        assertEquals(WifiActivityEnergyInfo.STACK_STATE_STATE_ACTIVE, delta.getStackState());
        assertEquals(0, delta.getControllerTxDurationMillis());
        assertEquals(0, delta.getControllerRxDurationMillis());
        assertEquals(0, delta.getControllerScanDurationMillis());
        assertEquals(0, delta.getControllerIdleDurationMillis());

        WifiActivityEnergyInfo secondInfo = new WifiActivityEnergyInfo(91111,
                WifiActivityEnergyInfo.STACK_STATE_STATE_IDLE, 811, 722, 633, 544);

        delta = mBatteryExternalStatsWorker.extractDeltaLocked(secondInfo);

        assertEquals(91111, delta.getTimeSinceBootMillis());
        assertEquals(WifiActivityEnergyInfo.STACK_STATE_STATE_IDLE, delta.getStackState());
        assertEquals(800, delta.getControllerTxDurationMillis());
        assertEquals(700, delta.getControllerRxDurationMillis());
        assertEquals(600, delta.getControllerScanDurationMillis());
        assertEquals(500, delta.getControllerIdleDurationMillis());
    }

    @Test
    public void testTargetedEnergyConsumerQuerying() {
        final int numCpuClusters = 4;