diff options
author | Mitchell Wills <mwills@google.com> | 2016-06-27 18:28:37 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-06-27 18:28:37 +0000 |
commit | 251a38bb7fcac510ad8b0264a0346573e724519d (patch) | |
tree | 5996000762795f180928d2f1d16e6e1689d45ebd /service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java | |
parent | bef58daefbccf81df1a6b7a9a2d103cee7819d69 (diff) | |
parent | f12262368afe3219b28dbac3bf86939239709abe (diff) | |
download | android_frameworks_opt_net_wifi-251a38bb7fcac510ad8b0264a0346573e724519d.tar.gz android_frameworks_opt_net_wifi-251a38bb7fcac510ad8b0264a0346573e724519d.tar.bz2 android_frameworks_opt_net_wifi-251a38bb7fcac510ad8b0264a0346573e724519d.zip |
Merge \\"Add a WifiScanner API to listen for ongoing scans\\" into nyc-mr1-dev am: 450fee26a2
am: f12262368a
Change-Id: I159d7a82a9cf965b90284174c635090ee8704c26
Diffstat (limited to 'service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java')
-rw-r--r-- | service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java index 2912aee5e..8df1dc87d 100644 --- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java +++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java @@ -214,6 +214,15 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { case WifiScanner.CMD_STOP_TRACKING_CHANGE: mWifiChangeStateMachine.sendMessage(Message.obtain(msg)); break; + case WifiScanner.CMD_REGISTER_SCAN_LISTENER: + logScanRequest("registerScanListener", ci, msg.arg2, null, null, null); + mSingleScanListeners.addRequest(ci, msg.arg2, null, null); + replySucceeded(msg); + break; + case WifiScanner.CMD_DEREGISTER_SCAN_LISTENER: + logScanRequest("deregisterScanListener", ci, msg.arg2, null, null, null); + mSingleScanListeners.removeRequest(ci, msg.arg2); + break; default: replyFailed(msg, WifiScanner.REASON_INVALID_REQUEST, "Invalid request"); break; @@ -242,6 +251,8 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { private final WifiScannerImpl.WifiScannerImplFactory mScannerImplFactory; private final ArrayMap<Messenger, ClientInfo> mClients; + private final RequestList<Void> mSingleScanListeners = new RequestList<>(); + private ChannelHelper mChannelHelper; private BackgroundScanScheduler mBackgroundScheduler; private WifiNative.ScanSettings mPreviousSchedule; @@ -795,6 +806,10 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { entry.reportEvent(WifiScanner.CMD_FULL_SCAN_RESULT, 0, result); } } + + for (RequestInfo<Void> entry : mSingleScanListeners) { + entry.reportEvent(WifiScanner.CMD_FULL_SCAN_RESULT, 0, result); + } } void reportScanResults(ScanData results) { @@ -805,18 +820,26 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { mWifiMetrics.incrementEmptyScanResultCount(); } } + ScanData[] allResults = new ScanData[] {results}; for (RequestInfo<ScanSettings> entry : mActiveScans) { - ScanData[] resultsArray = new ScanData[] {results}; ScanData[] resultsToDeliver = ScanScheduleUtil.filterResultsForSettings( - mChannelHelper, resultsArray, entry.settings, -1); - WifiScanner.ParcelableScanData parcelableScanData = + mChannelHelper, allResults, entry.settings, -1); + WifiScanner.ParcelableScanData parcelableResultsToDeliver = new WifiScanner.ParcelableScanData(resultsToDeliver); logCallback("singleScanResults", entry.clientInfo, entry.handlerId, describeForLog(resultsToDeliver)); - entry.reportEvent(WifiScanner.CMD_SCAN_RESULT, 0, parcelableScanData); + entry.reportEvent(WifiScanner.CMD_SCAN_RESULT, 0, parcelableResultsToDeliver); // make sure the handler is removed entry.reportEvent(WifiScanner.CMD_SINGLE_SCAN_COMPLETED, 0, null); } + + WifiScanner.ParcelableScanData parcelableAllResults = + new WifiScanner.ParcelableScanData(allResults); + for (RequestInfo<Void> entry : mSingleScanListeners) { + logCallback("singleScanResults", entry.clientInfo, entry.handlerId, + describeForLog(allResults)); + entry.reportEvent(WifiScanner.CMD_SCAN_RESULT, 0, parcelableAllResults); + } } } @@ -1870,6 +1893,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { } public void cleanup() { + mSingleScanListeners.removeAllForClient(this); mSingleScanStateMachine.removeSingleScanRequests(this); mBackgroundScanStateMachine.removeBackgroundScanSettings(this); mBackgroundScanStateMachine.removeHotlistSettings(this); |