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

Commit 357b5b36 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov
Browse files

Fix initial collection of WifiActivityEnergyInfo

We should not assume that the initial WifiActivityEnergyInfo
would be empty. The data in that object comes from the
WiFi controller, which may have accumulated stats since
the hardware reset.

Bug: 351648321
Test: atest PowerStatsTests; atest PowerStatsTestsRavenwood
Flag: com.android.server.power.optimization.streamlined_connectivity_battery_stats


Change-Id: If6168457aa72874d61145bc8c39640488f11dfd3
parent 5cc1b5ec
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -86,8 +86,7 @@ public class WifiPowerStatsCollector extends PowerStatsCollector {
    private ConsumedEnergyRetriever mConsumedEnergyRetriever;
    private IntSupplier mVoltageSupplier;
    private int[] mEnergyConsumerIds = new int[0];
    private WifiActivityEnergyInfo mLastWifiActivityInfo =
            new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0);
    private WifiActivityEnergyInfo mLastWifiActivityInfo;
    private NetworkStats mLastNetworkStats;
    private long[] mLastConsumedEnergyUws;
    private int mLastVoltageMv;
@@ -206,14 +205,21 @@ public class WifiPowerStatsCollector extends PowerStatsCollector {
            return null;
        }

        long rxDuration = activityInfo.getControllerRxDurationMillis()
        long rxDuration = 0;
        long txDuration = 0;
        long scanDuration = 0;
        long idleDuration = 0;

        if (mLastWifiActivityInfo != null) {
            rxDuration = activityInfo.getControllerRxDurationMillis()
                    - mLastWifiActivityInfo.getControllerRxDurationMillis();
        long txDuration = activityInfo.getControllerTxDurationMillis()
            txDuration = activityInfo.getControllerTxDurationMillis()
                    - mLastWifiActivityInfo.getControllerTxDurationMillis();
        long scanDuration = activityInfo.getControllerScanDurationMillis()
            scanDuration = activityInfo.getControllerScanDurationMillis()
                    - mLastWifiActivityInfo.getControllerScanDurationMillis();
        long idleDuration = activityInfo.getControllerIdleDurationMillis()
            idleDuration = activityInfo.getControllerIdleDurationMillis()
                    - mLastWifiActivityInfo.getControllerIdleDurationMillis();
        }

        mLayout.setDeviceRxTime(mDeviceStats, rxDuration);
        mLayout.setDeviceTxTime(mDeviceStats, txDuration);
+1 −1
Original line number Diff line number Diff line
@@ -355,7 +355,7 @@ public class WifiPowerStatsCollectorTest {
        assertThat(stats.getNumBytesRx()).isEqualTo(13321);
        assertThat(stats.getNumPacketsTx()).isEqualTo(263);
        assertThat(stats.getNumBytesTx()).isEqualTo(7234);
        assertThat(stats.getScanTimeMillis()).isEqualTo(2200);
        assertThat(stats.getScanTimeMillis()).isEqualTo(200);
        assertThat(stats.getRxTimeMillis()).isEqualTo(6000);
        assertThat(stats.getTxTimeMillis()).isEqualTo(1000);
        assertThat(stats.getIdleTimeMillis()).isEqualTo(300);