summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dmitri Plotnikov <dplotnikov@google.com> 2024-07-10 11:08:57 -0700
committer Dmitri Plotnikov <dplotnikov@google.com> 2024-07-10 21:28:35 +0000
commit357b5b365bede83d2e30f11a7d50ba2cb1c3a6ac (patch)
tree114b55c8277bec853a0282ceb3977b31ce93fda0
parent5cc1b5ec2e3a60bc4c47b9a7c72799f698d3f6fc (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
-rw-r--r--services/core/java/com/android/server/power/stats/WifiPowerStatsCollector.java26
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/WifiPowerStatsCollectorTest.java2
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);