summaryrefslogtreecommitdiffstats
path: root/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
diff options
context:
space:
mode:
authorMitchell Wills <mwills@google.com>2016-06-27 18:28:37 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-06-27 18:28:37 +0000
commit251a38bb7fcac510ad8b0264a0346573e724519d (patch)
tree5996000762795f180928d2f1d16e6e1689d45ebd /service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
parentbef58daefbccf81df1a6b7a9a2d103cee7819d69 (diff)
parentf12262368afe3219b28dbac3bf86939239709abe (diff)
downloadandroid_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.java32
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);