summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorNingyuan Wang <nywang@google.com>2017-07-25 13:30:48 -0700
committerNingyuan Wang <nywang@google.com>2017-07-28 10:00:24 -0700
commitc6e7fd8b76398114980a43c5d90197939c1ddfeb (patch)
treed4857f212cd2e06acb62184444b619160eeefcb3 /service
parentcbd123b9385eb4319676567051d92947fc911d78 (diff)
Dump latest unfiltered scan result
Bug: 63810310 Test: compile, unit tests, manual test Change-Id: I090aaacb00c3a774edd5c353037f2265f3bf138f
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java8
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScannerImpl.java4
-rw-r--r--service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java3
-rw-r--r--service/java/com/android/server/wifi/scanner/WificondScannerImpl.java56
4 files changed, 60 insertions, 11 deletions
diff --git a/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
index 211e62a0d..0fadd804b 100644
--- a/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/HalWifiScannerImpl.java
@@ -27,6 +27,9 @@ import com.android.server.wifi.Clock;
import com.android.server.wifi.WifiMonitor;
import com.android.server.wifi.WifiNative;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+
/**
* WifiScanner implementation that takes advantage of the gscan HAL API
* The gscan API is used to perform background scans and wificond is used for oneshot scans.
@@ -151,4 +154,9 @@ public class HalWifiScannerImpl extends WifiScannerImpl implements Handler.Callb
return mWificondScannerDelegate.shouldScheduleBackgroundScanForHwPno();
}
}
+
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ mWificondScannerDelegate.dump(fd, pw, args);
+ }
}
diff --git a/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java b/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
index e0fb535dd..5281b3abe 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScannerImpl.java
@@ -26,6 +26,8 @@ import com.android.server.wifi.WifiInjector;
import com.android.server.wifi.WifiMonitor;
import com.android.server.wifi.WifiNative;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.Comparator;
/**
@@ -158,4 +160,6 @@ public abstract class WifiScannerImpl {
* @return true if background scan needs to be started, false otherwise.
*/
public abstract boolean shouldScheduleBackgroundScanForHwPno();
+
+ protected abstract void dump(FileDescriptor fd, PrintWriter pw, String[] args);
}
diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
index af874b9e2..ab2a5dca3 100644
--- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java
@@ -2156,6 +2156,9 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub {
}
pw.println();
}
+ if (mScannerImpl != null) {
+ mScannerImpl.dump(fd, pw, args);
+ }
}
void logScanRequest(String request, ClientInfo ci, int id, WorkSource workSource,
diff --git a/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java b/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java
index fd7fddb73..84105ee61 100644
--- a/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java
+++ b/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java
@@ -32,6 +32,8 @@ import com.android.server.wifi.WifiMonitor;
import com.android.server.wifi.WifiNative;
import com.android.server.wifi.scanner.ChannelHelper.ChannelCollection;
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
@@ -81,6 +83,7 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call
private boolean mBackgroundScanPaused = false;
private ScanBuffer mBackgroundScanBuffer = new ScanBuffer(SCAN_BUFFER_CAPACITY);
+ private ArrayList<ScanDetail> mNativeScanResults;
private WifiScanner.ScanData mLatestSingleScanResult =
new WifiScanner.ScanData(0, 0, new ScanResult[0]);
@@ -535,11 +538,11 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call
// got a scan before we started scanning or after scan was canceled
return;
}
- ArrayList<ScanDetail> nativeResults = mWifiNative.getScanResults();
+ mNativeScanResults = mWifiNative.getScanResults();
List<ScanResult> hwPnoScanResults = new ArrayList<>();
int numFilteredScanResults = 0;
- for (int i = 0; i < nativeResults.size(); ++i) {
- ScanResult result = nativeResults.get(i).getScanResult();
+ for (int i = 0; i < mNativeScanResults.size(); ++i) {
+ ScanResult result = mNativeScanResults.get(i).getScanResult();
long timestamp_ms = result.timestamp / 1000; // convert us -> ms
if (timestamp_ms > mLastScanSettings.startTime) {
if (mLastScanSettings.hwPnoScanActive) {
@@ -556,11 +559,8 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call
if (mLastScanSettings.hwPnoScanActive
&& mLastScanSettings.pnoScanEventHandler != null) {
- ScanResult[] pnoScanResultsArray = new ScanResult[hwPnoScanResults.size()];
- for (int i = 0; i < pnoScanResultsArray.length; ++i) {
- ScanResult result = nativeResults.get(i).getScanResult();
- pnoScanResultsArray[i] = hwPnoScanResults.get(i);
- }
+ ScanResult[] pnoScanResultsArray =
+ hwPnoScanResults.toArray(new ScanResult[hwPnoScanResults.size()]);
mLastScanSettings.pnoScanEventHandler.onPnoNetworkFound(pnoScanResultsArray);
}
// On pno scan result event, we are expecting a mLastScanSettings for pno scan.
@@ -598,12 +598,12 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call
}
if (DBG) Log.d(TAG, "Polling scan data for scan: " + mLastScanSettings.scanId);
- ArrayList<ScanDetail> nativeResults = mWifiNative.getScanResults();
+ mNativeScanResults = mWifiNative.getScanResults();
List<ScanResult> singleScanResults = new ArrayList<>();
List<ScanResult> backgroundScanResults = new ArrayList<>();
int numFilteredScanResults = 0;
- for (int i = 0; i < nativeResults.size(); ++i) {
- ScanResult result = nativeResults.get(i).getScanResult();
+ for (int i = 0; i < mNativeScanResults.size(); ++i) {
+ ScanResult result = mNativeScanResults.get(i).getScanResult();
long timestamp_ms = result.timestamp / 1000; // convert us -> ms
if (timestamp_ms > mLastScanSettings.startTime) {
if (mLastScanSettings.backgroundScanActive) {
@@ -772,6 +772,40 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call
return false;
}
+ @Override
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ synchronized (mSettingsLock) {
+ pw.println("Latest native scan results:");
+ if (mNativeScanResults != null && mNativeScanResults.size() != 0) {
+ long nowMs = mClock.getElapsedSinceBootMillis();
+ pw.println(" BSSID Frequency RSSI Age(sec) SSID "
+ + " Flags");
+ for (ScanDetail scanDetail : mNativeScanResults) {
+ ScanResult r = scanDetail.getScanResult();
+ long timeStampMs = r.timestamp / 1000;
+ String age;
+ if (timeStampMs <= 0) {
+ age = "___?___";
+ } else if (nowMs < timeStampMs) {
+ age = " 0.000";
+ } else if (timeStampMs < nowMs - 1000000) {
+ age = ">1000.0";
+ } else {
+ age = String.format("%3.3f", (nowMs - timeStampMs) / 1000.0);
+ }
+ String ssid = r.SSID == null ? "" : r.SSID;
+ pw.printf(" %17s %9d %5d %7s %-32s %s\n",
+ r.BSSID,
+ r.frequency,
+ r.level,
+ age,
+ String.format("%1.32s", ssid),
+ r.capabilities);
+ }
+ }
+ }
+ }
+
private static class LastScanSettings {
public long startTime;