From f68fa9e364ec4e8c9d18ccaab516c2e5c60aa702 Mon Sep 17 00:00:00 2001 From: Blake Kragten Date: Tue, 16 Apr 2019 10:23:11 -0700 Subject: [PATCH] Update Rail Data Collection Frequency Fixed the frequency of the rail updates by updating the rails when either the wifi or radio activity info is updated. Test: Compiled onto phone, ran wifi and modem test cases and collected bug report. Viewed a more accurate frequency of rail energy data. Bug: 130174319 Change-Id: I4d79e58dfcc90e1c30253f524c85f26a8299f8d6 --- .../com/android/internal/os/BatteryStatsImpl.java | 4 +--- .../server/am/BatteryExternalStatsWorker.java | 14 ++++++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 1fc76351254be..72f6c122fe3ae 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -609,9 +609,7 @@ public class BatteryStatsImpl extends BatteryStats { int UPDATE_RADIO = 0x04; int UPDATE_BT = 0x08; int UPDATE_RPM = 0x10; // 16 - int UPDATE_RAIL = 0x20; // 32 - int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT | UPDATE_RPM - | UPDATE_RAIL; + int UPDATE_ALL = UPDATE_CPU | UPDATE_WIFI | UPDATE_RADIO | UPDATE_BT | UPDATE_RPM; Future scheduleSync(String reason, int flags); Future scheduleCpuSyncDueToRemovedUid(int uid); diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java index 236797b575567..525531635df69 100644 --- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java +++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java @@ -407,6 +407,7 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { SynchronousResultReceiver wifiReceiver = null; SynchronousResultReceiver bluetoothReceiver = null; SynchronousResultReceiver modemReceiver = null; + boolean railUpdated = false; if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_WIFI) != 0) { // We were asked to fetch WiFi data. @@ -426,6 +427,10 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { // Oh well. } } + synchronized (mStats) { + mStats.updateRailStatsLocked(); + } + railUpdated = true; } if ((updateFlags & BatteryStatsImpl.ExternalStatsSync.UPDATE_BT) != 0) { @@ -447,6 +452,11 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { modemReceiver = new SynchronousResultReceiver("telephony"); mTelephony.requestModemActivityInfo(modemReceiver); } + if (!railUpdated) { + synchronized (mStats) { + mStats.updateRailStatsLocked(); + } + } } final WifiActivityEnergyInfo wifiInfo = awaitControllerInfo(wifiReceiver); @@ -477,10 +487,6 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { mStats.updateRpmStatsLocked(); } - if ((updateFlags & UPDATE_RAIL) != 0) { - mStats.updateRailStatsLocked(); - } - if (bluetoothInfo != null) { if (bluetoothInfo.isValid()) { mStats.updateBluetoothStateLocked(bluetoothInfo);