summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorMitchell Wills <mwills@google.com>2016-03-04 15:05:03 -0800
committerMitchell Wills <mwills@google.com>2016-03-07 13:41:53 -0800
commit2e0b845b65b2e2151cddbdafb90bd0f744b10654 (patch)
treec0157bf06f49098aaaf162c47ef9c7c0094da919 /service
parent15ed48d023d623a4eeb8fd3a54b9c275874362f5 (diff)
Correctly filter results by time from supplicant in Hal scan impl
Bug: 27358828 Change-Id: Ic9ddfa02a0e3c282871ddfa3347312a5917dbec0
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/HalWifiScannerImpl.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/service/java/com/android/server/wifi/HalWifiScannerImpl.java b/service/java/com/android/server/wifi/HalWifiScannerImpl.java
index 3da4010ea..8e220cab9 100644
--- a/service/java/com/android/server/wifi/HalWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/HalWifiScannerImpl.java
@@ -21,13 +21,15 @@ import android.net.wifi.WifiScanner;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.os.SystemClock;
import android.util.Log;
import com.android.server.wifi.scanner.ChannelHelper;
import com.android.server.wifi.scanner.ChannelHelper.ChannelCollection;
import com.android.server.wifi.scanner.HalChannelHelper;
-import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -44,6 +46,7 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
private final Handler mEventHandler;
private final ChannelHelper mChannelHelper;
private boolean mReportSingleScanFullResults = false;
+ private long mSingleScanStartTime = 0;
private WifiNative.ScanEventHandler mSingleScanEventHandler = null;
private WifiScanner.ScanData mLatestSingleScanResult =
new WifiScanner.ScanData(0, 0, new ScanResult[0]);
@@ -113,6 +116,7 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
mSingleScanEventHandler = eventHandler;
Set<Integer> freqs = scanChannels.getSupplicantScanFreqs();
+ mSingleScanStartTime = SystemClock.elapsedRealtime();
// TODO(rpius): Need to plumb in the hiddessid network list via Scanner.
if (!mWifiNative.scan(freqs, null)) {
Log.e(TAG, "Failed to start scan, freqs=" + freqs);
@@ -138,21 +142,26 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
private void pollLatestSingleScanData() {
// convert ScanDetail from supplicant to ScanResults
List<ScanDetail> nativeResults = mWifiNative.getScanResults();
- ScanResult[] results = new ScanResult[nativeResults.size()];
- for (int i = 0; i < results.length; ++i) {
- results[i] = nativeResults.get(i).getScanResult();
+ List<ScanResult> results = new ArrayList<>();
+ for (int i = 0; i < nativeResults.size(); ++i) {
+ ScanResult result = nativeResults.get(i).getScanResult();
+ long timestamp_ms = result.timestamp / 1000; // convert us -> ms
+ if (timestamp_ms > mSingleScanStartTime) {
+ results.add(result);
+ }
}
// Dispatch full results
if (mSingleScanEventHandler != null && mReportSingleScanFullResults) {
- for (int i = 0; i < results.length; ++i) {
- mSingleScanEventHandler.onFullScanResult(results[i]);
+ for (int i = 0; i < results.size(); ++i) {
+ mSingleScanEventHandler.onFullScanResult(results.get(i));
}
}
// Sort final results and dispatch event
- Arrays.sort(results, SCAN_RESULT_SORT_COMPARATOR);
- mLatestSingleScanResult = new WifiScanner.ScanData(0, 0, results);
+ Collections.sort(results, SCAN_RESULT_SORT_COMPARATOR);
+ mLatestSingleScanResult = new WifiScanner.ScanData(0, 0,
+ results.toArray(new ScanResult[results.size()]));
if (mSingleScanEventHandler != null) {
mSingleScanEventHandler.onScanStatus(WifiNative.WIFI_SCAN_RESULTS_AVAILABLE);
mSingleScanEventHandler = null;