Loading core/java/android/os/BatteryStats.java +16 −16 Original line number Diff line number Diff line Loading @@ -56,9 +56,9 @@ public abstract class BatteryStats implements Parcelable { public static final int SENSOR = 3; /** * A constant indicating a a wifi turn on timer * A constant indicating a a wifi running timer */ public static final int WIFI_TURNED_ON = 4; public static final int WIFI_RUNNING = 4; /** * A constant indicating a full wifi lock timer Loading Loading @@ -249,8 +249,8 @@ public abstract class BatteryStats implements Parcelable { */ public abstract long getTcpBytesSent(int which); public abstract void noteWifiTurnedOnLocked(); public abstract void noteWifiTurnedOffLocked(); public abstract void noteWifiRunningLocked(); public abstract void noteWifiStoppedLocked(); public abstract void noteFullWifiLockAcquiredLocked(); public abstract void noteFullWifiLockReleasedLocked(); public abstract void noteScanWifiLockAcquiredLocked(); Loading @@ -261,7 +261,7 @@ public abstract class BatteryStats implements Parcelable { public abstract void noteAudioTurnedOffLocked(); public abstract void noteVideoTurnedOnLocked(); public abstract void noteVideoTurnedOffLocked(); public abstract long getWifiTurnedOnTime(long batteryRealtime, int which); public abstract long getWifiRunningTime(long batteryRealtime, int which); public abstract long getFullWifiLockTime(long batteryRealtime, int which); public abstract long getScanWifiLockTime(long batteryRealtime, int which); public abstract long getWifiMulticastTime(long batteryRealtime, Loading Loading @@ -701,7 +701,7 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract long getWifiRunningTime(long batteryRealtime, int which); public abstract long getGlobalWifiRunningTime(long batteryRealtime, int which); /** * Returns the time in microseconds that bluetooth has been on while the device was Loading Loading @@ -977,7 +977,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long wifiRunningTime = getGlobalWifiRunningTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); StringBuilder sb = new StringBuilder(128); Loading Loading @@ -1091,14 +1091,14 @@ public abstract class BatteryStats implements Parcelable { long tx = u.getTcpBytesSent(which); long fullWifiLockOnTime = u.getFullWifiLockTime(batteryRealtime, which); long scanWifiLockOnTime = u.getScanWifiLockTime(batteryRealtime, which); long wifiTurnedOnTime = u.getWifiTurnedOnTime(batteryRealtime, which); long uidWifiRunningTime = u.getWifiRunningTime(batteryRealtime, which); if (rx > 0 || tx > 0) dumpLine(pw, uid, category, NETWORK_DATA, rx, tx); if (fullWifiLockOnTime != 0 || scanWifiLockOnTime != 0 || wifiTurnedOnTime != 0) { || uidWifiRunningTime != 0) { dumpLine(pw, uid, category, WIFI_LOCK_DATA, fullWifiLockOnTime, scanWifiLockOnTime, wifiTurnedOnTime); fullWifiLockOnTime, scanWifiLockOnTime, uidWifiRunningTime); } if (u.hasUserActivity()) { Loading Loading @@ -1240,7 +1240,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long wifiRunningTime = getGlobalWifiRunningTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); sb.setLength(0); Loading Loading @@ -1449,7 +1449,7 @@ public abstract class BatteryStats implements Parcelable { long tcpSent = u.getTcpBytesSent(which); long fullWifiLockOnTime = u.getFullWifiLockTime(batteryRealtime, which); long scanWifiLockOnTime = u.getScanWifiLockTime(batteryRealtime, which); long wifiTurnedOnTime = u.getWifiTurnedOnTime(batteryRealtime, which); long uidWifiRunningTime = u.getWifiRunningTime(batteryRealtime, which); if (tcpReceived != 0 || tcpSent != 0) { pw.print(prefix); pw.print(" Network: "); Loading Loading @@ -1480,11 +1480,11 @@ public abstract class BatteryStats implements Parcelable { } if (fullWifiLockOnTime != 0 || scanWifiLockOnTime != 0 || wifiTurnedOnTime != 0) { || uidWifiRunningTime != 0) { sb.setLength(0); sb.append(prefix); sb.append(" Turned Wifi On: "); formatTimeMs(sb, wifiTurnedOnTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiTurnedOnTime, sb.append(prefix); sb.append(" Wifi Running: "); formatTimeMs(sb, uidWifiRunningTime / 1000); sb.append("("); sb.append(formatRatioLocked(uidWifiRunningTime, whichBatteryRealtime)); sb.append(")\n"); sb.append(prefix); sb.append(" Full Wifi Lock: "); formatTimeMs(sb, fullWifiLockOnTime / 1000); Loading core/java/com/android/internal/app/IBatteryStats.aidl +5 −4 Original line number Diff line number Diff line Loading @@ -49,10 +49,11 @@ interface IBatteryStats { void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneDataConnectionState(int dataType, boolean hasData); void notePhoneState(int phoneState); void noteWifiOn(int uid); void noteWifiOff(int uid); void noteWifiRunning(); void noteWifiStopped(); void noteWifiOn(); void noteWifiOff(); void noteWifiRunning(in WorkSource ws); void noteWifiRunningChanged(in WorkSource oldWs, in WorkSource newWs); void noteWifiStopped(in WorkSource ws); void noteBluetoothOn(); void noteBluetoothOff(); void noteFullWifiLockAcquired(int uid); Loading core/java/com/android/internal/os/BatteryStatsImpl.java +171 −74 File changed.Preview size limit exceeded, changes collapsed. Show changes services/java/com/android/server/WifiService.java +37 −5 Original line number Diff line number Diff line Loading @@ -189,6 +189,12 @@ public class WifiService extends IWifiManager.Stub { private static final int SCAN_RESULT_BUFFER_SIZE = 512; private boolean mNeedReconfig; /** * Temporary for computing UIDS that are responsible for starting WIFI. * Protected by mWifiStateTracker lock. */ private final WorkSource mTmpWorkSource = new WorkSource(); /* * Last UID that asked to enable WIFI. */ Loading Loading @@ -529,9 +535,9 @@ public class WifiService extends IWifiManager.Stub { long ident = Binder.clearCallingIdentity(); try { if (wifiState == WIFI_STATE_ENABLED) { mBatteryStats.noteWifiOn(uid); mBatteryStats.noteWifiOn(); } else if (wifiState == WIFI_STATE_DISABLED) { mBatteryStats.noteWifiOff(uid); mBatteryStats.noteWifiOff(); } } catch (RemoteException e) { } finally { Loading Loading @@ -788,9 +794,9 @@ public class WifiService extends IWifiManager.Stub { long ident = Binder.clearCallingIdentity(); try { if (wifiAPState == WIFI_AP_STATE_ENABLED) { mBatteryStats.noteWifiOn(uid); mBatteryStats.noteWifiOn(); } else if (wifiAPState == WIFI_AP_STATE_DISABLED) { mBatteryStats.noteWifiOff(uid); mBatteryStats.noteWifiOff(); } } catch (RemoteException e) { } finally { Loading Loading @@ -1664,6 +1670,9 @@ public class WifiService extends IWifiManager.Stub { mAlarmManager.cancel(mIdleIntent); mDeviceIdle = false; mScreenOff = false; // Once the screen is on, we are not keeping WIFI running // because of any locks so clear that tracking immediately. reportStartWorkSource(); mWifiStateTracker.enableRssiPolling(true); /* DHCP or other temporary failures in the past can prevent * a disabled network from being connected to, enable on screen on Loading Loading @@ -1705,6 +1714,7 @@ public class WifiService extends IWifiManager.Stub { } else if (action.equals(ACTION_DEVICE_IDLE)) { Slog.d(TAG, "got ACTION_DEVICE_IDLE"); mDeviceIdle = true; reportStartWorkSource(); } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { /* * Set a timer to put Wi-Fi to sleep, but only if the screen is off Loading Loading @@ -1806,6 +1816,18 @@ public class WifiService extends IWifiManager.Stub { Message.obtain(mWifiHandler, MESSAGE_ENABLE_NETWORKS).sendToTarget(); } private void reportStartWorkSource() { synchronized (mWifiStateTracker) { mTmpWorkSource.clear(); if (mDeviceIdle) { for (int i=0; i<mLocks.mList.size(); i++) { mTmpWorkSource.add(mLocks.mList.get(i).mWorkSource); } } mWifiStateTracker.updateBatteryWorkSourceLocked(mTmpWorkSource); } } private void updateWifiState() { // send a message so it's all serialized Message.obtain(mWifiHandler, MESSAGE_UPDATE_STATE, 0, 0).sendToTarget(); Loading @@ -1814,7 +1836,12 @@ public class WifiService extends IWifiManager.Stub { private void doUpdateWifiState() { boolean wifiEnabled = getPersistedWifiEnabled(); boolean airplaneMode = isAirplaneModeOn() && !mAirplaneModeOverwridden; boolean lockHeld = mLocks.hasLocks(); boolean lockHeld; synchronized (mLocks) { lockHeld = mLocks.hasLocks(); } int strongestLockMode = WifiManager.WIFI_MODE_FULL; boolean wifiShouldBeEnabled = wifiEnabled && !airplaneMode; boolean wifiShouldBeStarted = !mDeviceIdle || lockHeld; Loading Loading @@ -1922,6 +1949,7 @@ public class WifiService extends IWifiManager.Stub { break; case MESSAGE_START_WIFI: reportStartWorkSource(); mWifiStateTracker.setScanOnlyMode(msg.arg1 == WifiManager.WIFI_MODE_SCAN_ONLY); mWifiStateTracker.restart(); mWifiStateTracker.setHighPerfMode(msg.arg1 == Loading Loading @@ -2198,6 +2226,10 @@ public class WifiService extends IWifiManager.Stub { Binder.restoreCallingIdentity(ident); } // Be aggressive about adding new locks into the accounted state... // we want to over-report rather than under-report. reportStartWorkSource(); updateWifiState(); return true; } Loading services/java/com/android/server/am/BatteryStatsService.java +15 −8 Original line number Diff line number Diff line Loading @@ -218,17 +218,17 @@ public final class BatteryStatsService extends IBatteryStats.Stub { } } public void noteWifiOn(int uid) { public void noteWifiOn() { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiOnLocked(uid); mStats.noteWifiOnLocked(); } } public void noteWifiOff(int uid) { public void noteWifiOff() { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiOffLocked(uid); mStats.noteWifiOffLocked(); } } Loading Loading @@ -260,17 +260,24 @@ public final class BatteryStatsService extends IBatteryStats.Stub { } } public void noteWifiRunning() { public void noteWifiRunning(WorkSource ws) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiRunningLocked(); mStats.noteWifiRunningLocked(ws); } } public void noteWifiStopped() { public void noteWifiRunningChanged(WorkSource oldWs, WorkSource newWs) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiStoppedLocked(); mStats.noteWifiRunningChangedLocked(oldWs, newWs); } } public void noteWifiStopped(WorkSource ws) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiStoppedLocked(ws); } } Loading Loading
core/java/android/os/BatteryStats.java +16 −16 Original line number Diff line number Diff line Loading @@ -56,9 +56,9 @@ public abstract class BatteryStats implements Parcelable { public static final int SENSOR = 3; /** * A constant indicating a a wifi turn on timer * A constant indicating a a wifi running timer */ public static final int WIFI_TURNED_ON = 4; public static final int WIFI_RUNNING = 4; /** * A constant indicating a full wifi lock timer Loading Loading @@ -249,8 +249,8 @@ public abstract class BatteryStats implements Parcelable { */ public abstract long getTcpBytesSent(int which); public abstract void noteWifiTurnedOnLocked(); public abstract void noteWifiTurnedOffLocked(); public abstract void noteWifiRunningLocked(); public abstract void noteWifiStoppedLocked(); public abstract void noteFullWifiLockAcquiredLocked(); public abstract void noteFullWifiLockReleasedLocked(); public abstract void noteScanWifiLockAcquiredLocked(); Loading @@ -261,7 +261,7 @@ public abstract class BatteryStats implements Parcelable { public abstract void noteAudioTurnedOffLocked(); public abstract void noteVideoTurnedOnLocked(); public abstract void noteVideoTurnedOffLocked(); public abstract long getWifiTurnedOnTime(long batteryRealtime, int which); public abstract long getWifiRunningTime(long batteryRealtime, int which); public abstract long getFullWifiLockTime(long batteryRealtime, int which); public abstract long getScanWifiLockTime(long batteryRealtime, int which); public abstract long getWifiMulticastTime(long batteryRealtime, Loading Loading @@ -701,7 +701,7 @@ public abstract class BatteryStats implements Parcelable { * * {@hide} */ public abstract long getWifiRunningTime(long batteryRealtime, int which); public abstract long getGlobalWifiRunningTime(long batteryRealtime, int which); /** * Returns the time in microseconds that bluetooth has been on while the device was Loading Loading @@ -977,7 +977,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long wifiRunningTime = getGlobalWifiRunningTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); StringBuilder sb = new StringBuilder(128); Loading Loading @@ -1091,14 +1091,14 @@ public abstract class BatteryStats implements Parcelable { long tx = u.getTcpBytesSent(which); long fullWifiLockOnTime = u.getFullWifiLockTime(batteryRealtime, which); long scanWifiLockOnTime = u.getScanWifiLockTime(batteryRealtime, which); long wifiTurnedOnTime = u.getWifiTurnedOnTime(batteryRealtime, which); long uidWifiRunningTime = u.getWifiRunningTime(batteryRealtime, which); if (rx > 0 || tx > 0) dumpLine(pw, uid, category, NETWORK_DATA, rx, tx); if (fullWifiLockOnTime != 0 || scanWifiLockOnTime != 0 || wifiTurnedOnTime != 0) { || uidWifiRunningTime != 0) { dumpLine(pw, uid, category, WIFI_LOCK_DATA, fullWifiLockOnTime, scanWifiLockOnTime, wifiTurnedOnTime); fullWifiLockOnTime, scanWifiLockOnTime, uidWifiRunningTime); } if (u.hasUserActivity()) { Loading Loading @@ -1240,7 +1240,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long wifiRunningTime = getGlobalWifiRunningTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); sb.setLength(0); Loading Loading @@ -1449,7 +1449,7 @@ public abstract class BatteryStats implements Parcelable { long tcpSent = u.getTcpBytesSent(which); long fullWifiLockOnTime = u.getFullWifiLockTime(batteryRealtime, which); long scanWifiLockOnTime = u.getScanWifiLockTime(batteryRealtime, which); long wifiTurnedOnTime = u.getWifiTurnedOnTime(batteryRealtime, which); long uidWifiRunningTime = u.getWifiRunningTime(batteryRealtime, which); if (tcpReceived != 0 || tcpSent != 0) { pw.print(prefix); pw.print(" Network: "); Loading Loading @@ -1480,11 +1480,11 @@ public abstract class BatteryStats implements Parcelable { } if (fullWifiLockOnTime != 0 || scanWifiLockOnTime != 0 || wifiTurnedOnTime != 0) { || uidWifiRunningTime != 0) { sb.setLength(0); sb.append(prefix); sb.append(" Turned Wifi On: "); formatTimeMs(sb, wifiTurnedOnTime / 1000); sb.append("("); sb.append(formatRatioLocked(wifiTurnedOnTime, sb.append(prefix); sb.append(" Wifi Running: "); formatTimeMs(sb, uidWifiRunningTime / 1000); sb.append("("); sb.append(formatRatioLocked(uidWifiRunningTime, whichBatteryRealtime)); sb.append(")\n"); sb.append(prefix); sb.append(" Full Wifi Lock: "); formatTimeMs(sb, fullWifiLockOnTime / 1000); Loading
core/java/com/android/internal/app/IBatteryStats.aidl +5 −4 Original line number Diff line number Diff line Loading @@ -49,10 +49,11 @@ interface IBatteryStats { void notePhoneSignalStrength(in SignalStrength signalStrength); void notePhoneDataConnectionState(int dataType, boolean hasData); void notePhoneState(int phoneState); void noteWifiOn(int uid); void noteWifiOff(int uid); void noteWifiRunning(); void noteWifiStopped(); void noteWifiOn(); void noteWifiOff(); void noteWifiRunning(in WorkSource ws); void noteWifiRunningChanged(in WorkSource oldWs, in WorkSource newWs); void noteWifiStopped(in WorkSource ws); void noteBluetoothOn(); void noteBluetoothOff(); void noteFullWifiLockAcquired(int uid); Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +171 −74 File changed.Preview size limit exceeded, changes collapsed. Show changes
services/java/com/android/server/WifiService.java +37 −5 Original line number Diff line number Diff line Loading @@ -189,6 +189,12 @@ public class WifiService extends IWifiManager.Stub { private static final int SCAN_RESULT_BUFFER_SIZE = 512; private boolean mNeedReconfig; /** * Temporary for computing UIDS that are responsible for starting WIFI. * Protected by mWifiStateTracker lock. */ private final WorkSource mTmpWorkSource = new WorkSource(); /* * Last UID that asked to enable WIFI. */ Loading Loading @@ -529,9 +535,9 @@ public class WifiService extends IWifiManager.Stub { long ident = Binder.clearCallingIdentity(); try { if (wifiState == WIFI_STATE_ENABLED) { mBatteryStats.noteWifiOn(uid); mBatteryStats.noteWifiOn(); } else if (wifiState == WIFI_STATE_DISABLED) { mBatteryStats.noteWifiOff(uid); mBatteryStats.noteWifiOff(); } } catch (RemoteException e) { } finally { Loading Loading @@ -788,9 +794,9 @@ public class WifiService extends IWifiManager.Stub { long ident = Binder.clearCallingIdentity(); try { if (wifiAPState == WIFI_AP_STATE_ENABLED) { mBatteryStats.noteWifiOn(uid); mBatteryStats.noteWifiOn(); } else if (wifiAPState == WIFI_AP_STATE_DISABLED) { mBatteryStats.noteWifiOff(uid); mBatteryStats.noteWifiOff(); } } catch (RemoteException e) { } finally { Loading Loading @@ -1664,6 +1670,9 @@ public class WifiService extends IWifiManager.Stub { mAlarmManager.cancel(mIdleIntent); mDeviceIdle = false; mScreenOff = false; // Once the screen is on, we are not keeping WIFI running // because of any locks so clear that tracking immediately. reportStartWorkSource(); mWifiStateTracker.enableRssiPolling(true); /* DHCP or other temporary failures in the past can prevent * a disabled network from being connected to, enable on screen on Loading Loading @@ -1705,6 +1714,7 @@ public class WifiService extends IWifiManager.Stub { } else if (action.equals(ACTION_DEVICE_IDLE)) { Slog.d(TAG, "got ACTION_DEVICE_IDLE"); mDeviceIdle = true; reportStartWorkSource(); } else if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { /* * Set a timer to put Wi-Fi to sleep, but only if the screen is off Loading Loading @@ -1806,6 +1816,18 @@ public class WifiService extends IWifiManager.Stub { Message.obtain(mWifiHandler, MESSAGE_ENABLE_NETWORKS).sendToTarget(); } private void reportStartWorkSource() { synchronized (mWifiStateTracker) { mTmpWorkSource.clear(); if (mDeviceIdle) { for (int i=0; i<mLocks.mList.size(); i++) { mTmpWorkSource.add(mLocks.mList.get(i).mWorkSource); } } mWifiStateTracker.updateBatteryWorkSourceLocked(mTmpWorkSource); } } private void updateWifiState() { // send a message so it's all serialized Message.obtain(mWifiHandler, MESSAGE_UPDATE_STATE, 0, 0).sendToTarget(); Loading @@ -1814,7 +1836,12 @@ public class WifiService extends IWifiManager.Stub { private void doUpdateWifiState() { boolean wifiEnabled = getPersistedWifiEnabled(); boolean airplaneMode = isAirplaneModeOn() && !mAirplaneModeOverwridden; boolean lockHeld = mLocks.hasLocks(); boolean lockHeld; synchronized (mLocks) { lockHeld = mLocks.hasLocks(); } int strongestLockMode = WifiManager.WIFI_MODE_FULL; boolean wifiShouldBeEnabled = wifiEnabled && !airplaneMode; boolean wifiShouldBeStarted = !mDeviceIdle || lockHeld; Loading Loading @@ -1922,6 +1949,7 @@ public class WifiService extends IWifiManager.Stub { break; case MESSAGE_START_WIFI: reportStartWorkSource(); mWifiStateTracker.setScanOnlyMode(msg.arg1 == WifiManager.WIFI_MODE_SCAN_ONLY); mWifiStateTracker.restart(); mWifiStateTracker.setHighPerfMode(msg.arg1 == Loading Loading @@ -2198,6 +2226,10 @@ public class WifiService extends IWifiManager.Stub { Binder.restoreCallingIdentity(ident); } // Be aggressive about adding new locks into the accounted state... // we want to over-report rather than under-report. reportStartWorkSource(); updateWifiState(); return true; } Loading
services/java/com/android/server/am/BatteryStatsService.java +15 −8 Original line number Diff line number Diff line Loading @@ -218,17 +218,17 @@ public final class BatteryStatsService extends IBatteryStats.Stub { } } public void noteWifiOn(int uid) { public void noteWifiOn() { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiOnLocked(uid); mStats.noteWifiOnLocked(); } } public void noteWifiOff(int uid) { public void noteWifiOff() { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiOffLocked(uid); mStats.noteWifiOffLocked(); } } Loading Loading @@ -260,17 +260,24 @@ public final class BatteryStatsService extends IBatteryStats.Stub { } } public void noteWifiRunning() { public void noteWifiRunning(WorkSource ws) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiRunningLocked(); mStats.noteWifiRunningLocked(ws); } } public void noteWifiStopped() { public void noteWifiRunningChanged(WorkSource oldWs, WorkSource newWs) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiStoppedLocked(); mStats.noteWifiRunningChangedLocked(oldWs, newWs); } } public void noteWifiStopped(WorkSource ws) { enforceCallingPermission(); synchronized (mStats) { mStats.noteWifiStoppedLocked(ws); } } Loading