diff options
author | Mitchell Wills <mwills@google.com> | 2016-03-14 18:22:52 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-03-14 18:22:52 +0000 |
commit | 41bf84fbd38c4a9b5ec1f49ea9057705673d0c3e (patch) | |
tree | 315e67411877f47956426de44962923fb1fa2c2f /service | |
parent | 25211a6fab0c8c623a0b9d39ac1bebac3d496176 (diff) | |
parent | 1e806a7aac77f6f65ba299329e1fc452e0148b8d (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')
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 |