summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorMitchell Wills <mwills@google.com>2016-03-14 18:22:52 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-03-14 18:22:52 +0000
commit41bf84fbd38c4a9b5ec1f49ea9057705673d0c3e (patch)
tree315e67411877f47956426de44962923fb1fa2c2f /service
parent25211a6fab0c8c623a0b9d39ac1bebac3d496176 (diff)
parent1e806a7aac77f6f65ba299329e1fc452e0148b8d (diff)
Fix WifiScanner not recovering after Wifi is turned off
am: 1e806a7aac * commit '1e806a7aac77f6f65ba299329e1fc452e0148b8d': Fix WifiScanner not recovering after Wifi is turned off
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/HalWifiScannerImpl.java7
-rw-r--r--service/java/com/android/server/wifi/SupplicantWifiScannerImpl.java19
-rw-r--r--service/java/com/android/server/wifi/WifiScannerImpl.java6
-rw-r--r--service/java/com/android/server/wifi/WifiScanningServiceImpl.java1
4 files changed, 32 insertions, 1 deletions
diff --git a/service/java/com/android/server/wifi/HalWifiScannerImpl.java b/service/java/com/android/server/wifi/HalWifiScannerImpl.java
index c678c7302..ebb5f36ed 100644
--- a/service/java/com/android/server/wifi/HalWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/HalWifiScannerImpl.java
@@ -75,6 +75,7 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
} else {
Log.w(TAG, "Got single scan failed event without an active scan request");
}
+ mWifiNative.resumeBackgroundScan();
break;
case WifiMonitor.SCAN_RESULTS_EVENT:
pollLatestSingleScanData();
@@ -174,6 +175,12 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
}
@Override
+ public void cleanup() {
+ mSingleScanEventHandler = null;
+ mWifiNative.resumeBackgroundScan();
+ }
+
+ @Override
public boolean getScanCapabilities(WifiNative.ScanCapabilities capabilities) {
return mWifiNative.getScanCapabilities(capabilities);
}
diff --git a/service/java/com/android/server/wifi/SupplicantWifiScannerImpl.java b/service/java/com/android/server/wifi/SupplicantWifiScannerImpl.java
index 05f602090..91747808a 100644
--- a/service/java/com/android/server/wifi/SupplicantWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/SupplicantWifiScannerImpl.java
@@ -115,6 +115,19 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
}
@Override
+ public void cleanup() {
+ synchronized (mSettingsLock) {
+ mPendingSingleScanSettings = null;
+ mPendingSingleScanEventHandler = null;
+ stopPnoScan();
+ stopBatchedScan();
+ resetHotlist();
+ untrackSignificantWifiChange();
+ mLastScanSettings = null; // finally clear any active scan
+ }
+ }
+
+ @Override
public boolean getScanCapabilities(WifiNative.ScanCapabilities capabilities) {
capabilities.max_scan_cache_size = Integer.MAX_VALUE;
capabilities.max_scan_buckets = MAX_SCAN_BUCKETS;
@@ -213,6 +226,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
mBackgroundScanPeriodPending = false;
unscheduleScansLocked();
}
+ processPendingScans();
}
@Override
@@ -236,6 +250,7 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
mPendingBackgroundScanEventHandler.onScanPaused(results);
}
}
+ processPendingScans();
}
@Override
@@ -312,7 +327,9 @@ public class SupplicantWifiScannerImpl extends WifiScannerImpl implements Handle
private void unscheduleScansLocked() {
mAlarmManager.cancel(mScanPeriodListener);
- mLastScanSettings = null; // make sure that a running scan is marked as ended
+ if (mLastScanSettings != null) {
+ mLastScanSettings.backgroundScanActive = false;
+ }
}
private void handleScanPeriod() {
diff --git a/service/java/com/android/server/wifi/WifiScannerImpl.java b/service/java/com/android/server/wifi/WifiScannerImpl.java
index 41c356c29..c8d80fde5 100644
--- a/service/java/com/android/server/wifi/WifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/WifiScannerImpl.java
@@ -63,6 +63,12 @@ public abstract class WifiScannerImpl {
};
/**
+ * Cleanup any ongoing operations. This may be called when the driver is unloaded.
+ * There is no expectation that failure events are returned for ongoing operations.
+ */
+ public abstract void cleanup();
+
+ /**
* Get the supported scan capabilities.
*
* @param capabilities Object that will be filled with the supported capabilities if successful
diff --git a/service/java/com/android/server/wifi/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
index 8de44f72f..58ddd579f 100644
--- a/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiScanningServiceImpl.java
@@ -802,6 +802,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
public void exit() {
sendPnoScanFailedToAllAndClear(
WifiScanner.REASON_UNSPECIFIED, "Scan was interrupted");
+ mScannerImpl.cleanup();
}
@Override