diff options
| author | 2024-07-10 11:08:57 -0700 | |
|---|---|---|
| committer | 2024-07-10 21:28:35 +0000 | |
| commit | 357b5b365bede83d2e30f11a7d50ba2cb1c3a6ac (patch) | |
| tree | 114b55c8277bec853a0282ceb3977b31ce93fda0 | |
| parent | 5cc1b5ec2e3a60bc4c47b9a7c72799f698d3f6fc (diff) | |
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
2 files changed, 17 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java b/services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java index 6d519ee200c2..90981ada7c31 100644 --- a/services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java +++ b/services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java @@ -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() - - mLastWifiActivityInfo.getControllerRxDurationMillis(); - long txDuration = activityInfo.getControllerTxDurationMillis() - - mLastWifiActivityInfo.getControllerTxDurationMillis(); - long scanDuration = activityInfo.getControllerScanDurationMillis() - - mLastWifiActivityInfo.getControllerScanDurationMillis(); - long idleDuration = activityInfo.getControllerIdleDurationMillis() - - mLastWifiActivityInfo.getControllerIdleDurationMillis(); + long rxDuration = 0; + long txDuration = 0; + long scanDuration = 0; + long idleDuration = 0; + + if (mLastWifiActivityInfo != null) { + rxDuration = activityInfo.getControllerRxDurationMillis() + - mLastWifiActivityInfo.getControllerRxDurationMillis(); + txDuration = activityInfo.getControllerTxDurationMillis() + - mLastWifiActivityInfo.getControllerTxDurationMillis(); + scanDuration = activityInfo.getControllerScanDurationMillis() + - mLastWifiActivityInfo.getControllerScanDurationMillis(); + idleDuration = activityInfo.getControllerIdleDurationMillis() + - mLastWifiActivityInfo.getControllerIdleDurationMillis(); + } mLayout.setDeviceRxTime(mDeviceStats, rxDuration); mLayout.setDeviceTxTime(mDeviceStats, txDuration); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/WifiPowerStatsCollectorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/WifiPowerStatsCollectorTest.java index 362607b91763..b13fc530399b 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/WifiPowerStatsCollectorTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/WifiPowerStatsCollectorTest.java @@ -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); |