summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2018-06-28 21:33:24 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-06-28 21:33:24 +0000
commitf83e814b18af93dba58a8498d085c4dbe1efd587 (patch)
treec003cace2da58f5e010116eea6008e816bab4d27
parent15c1e47e266570fcf1d29204f0ddb25fa0d6bdc1 (diff)
parent97f62bf61db50288d3057127ea184b0937437df9 (diff)
Merge "Fix in Wifi activity updates" into pi-dev
-rw-r--r--services/core/java/com/android/server/am/BatteryExternalStatsWorker.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index 49fa902d161d..9eb22d717850 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -543,14 +543,25 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync {
final long idleTimeMs = latest.mControllerIdleTimeMs - lastIdleMs;
final long scanTimeMs = latest.mControllerScanTimeMs - lastScanMs;
- if (txTimeMs < 0 || rxTimeMs < 0 || scanTimeMs < 0) {
+ if (txTimeMs < 0 || rxTimeMs < 0 || scanTimeMs < 0 || idleTimeMs < 0) {
// The stats were reset by the WiFi system (which is why our delta is negative).
- // Returns the unaltered stats.
- delta.mControllerEnergyUsed = latest.mControllerEnergyUsed;
- delta.mControllerRxTimeMs = latest.mControllerRxTimeMs;
- delta.mControllerTxTimeMs = latest.mControllerTxTimeMs;
- delta.mControllerIdleTimeMs = latest.mControllerIdleTimeMs;
- delta.mControllerScanTimeMs = latest.mControllerScanTimeMs;
+ // Returns the unaltered stats. The total on time should not exceed the time
+ // duartion between reports.
+ final long totalOnTimeMs = latest.mControllerTxTimeMs + latest.mControllerRxTimeMs
+ + latest.mControllerIdleTimeMs;
+ if (totalOnTimeMs <= timePeriodMs + MAX_WIFI_STATS_SAMPLE_ERROR_MILLIS) {
+ delta.mControllerEnergyUsed = latest.mControllerEnergyUsed;
+ delta.mControllerRxTimeMs = latest.mControllerRxTimeMs;
+ delta.mControllerTxTimeMs = latest.mControllerTxTimeMs;
+ delta.mControllerIdleTimeMs = latest.mControllerIdleTimeMs;
+ delta.mControllerScanTimeMs = latest.mControllerScanTimeMs;
+ } else {
+ delta.mControllerEnergyUsed = 0;
+ delta.mControllerRxTimeMs = 0;
+ delta.mControllerTxTimeMs = 0;
+ delta.mControllerIdleTimeMs = 0;
+ delta.mControllerScanTimeMs = 0;
+ }
Slog.v(TAG, "WiFi energy data was reset, new WiFi energy data is " + delta);
} else {
final long totalActiveTimeMs = txTimeMs + rxTimeMs;