summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/WifiService.java
diff options
context:
space:
mode:
Diffstat (limited to 'services/java/com/android/server/WifiService.java')
-rw-r--r--services/java/com/android/server/WifiService.java35
1 files changed, 34 insertions, 1 deletions
diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java
index aef3426..5208785 100644
--- a/services/java/com/android/server/WifiService.java
+++ b/services/java/com/android/server/WifiService.java
@@ -61,6 +61,7 @@ import android.text.TextUtils;
import android.util.Slog;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@@ -112,6 +113,10 @@ public class WifiService extends IWifiManager.Stub {
private int mScanLocksAcquired;
private int mScanLocksReleased;
+ /* A mapping from UID to scan count */
+ private HashMap<Integer, Integer> mScanCount =
+ new HashMap<Integer, Integer>();
+
private final List<Multicaster> mMulticasters =
new ArrayList<Multicaster>();
private int mMulticastEnabled;
@@ -527,6 +532,15 @@ public class WifiService extends IWifiManager.Stub {
*/
public void startScan(boolean forceActive) {
enforceChangePermission();
+
+ int uid = Binder.getCallingUid();
+ int count = 0;
+ synchronized (mScanCount) {
+ if (mScanCount.containsKey(uid)) {
+ count = mScanCount.get(uid);
+ }
+ mScanCount.put(uid, ++count);
+ }
mWifiStateMachine.startScan(forceActive);
}
@@ -676,7 +690,12 @@ public class WifiService extends IWifiManager.Stub {
*/
public List<WifiConfiguration> getConfiguredNetworks() {
enforceAccessPermission();
- return mWifiStateMachine.syncGetConfiguredNetworks();
+ if (mWifiStateMachineChannel != null) {
+ return mWifiStateMachine.syncGetConfiguredNetworks(mWifiStateMachineChannel);
+ } else {
+ Slog.e(TAG, "mWifiStateMachineChannel is not initialized");
+ return null;
+ }
}
/**
@@ -985,6 +1004,13 @@ public class WifiService extends IWifiManager.Stub {
}
mAlarmManager.set(AlarmManager.RTC_WAKEUP, triggerTime, mIdleIntent);
}
+
+ //Start scan stats tracking when device unplugged
+ if (pluggedType == 0) {
+ synchronized (mScanCount) {
+ mScanCount.clear();
+ }
+ }
mPluggedType = pluggedType;
} else if (action.equals(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED)) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_CONNECTION_STATE,
@@ -1175,6 +1201,13 @@ public class WifiService extends IWifiManager.Stub {
pw.println("Locks held:");
mLocks.dump(pw);
+ pw.println("Scan count since last plugged in");
+ synchronized (mScanCount) {
+ for(int sc : mScanCount.keySet()) {
+ pw.println("UID: " + sc + " Scan count: " + mScanCount.get(sc));
+ }
+ }
+
pw.println();
pw.println("WifiWatchdogStateMachine dump");
mWifiWatchdogStateMachine.dump(pw);