diff options
author | Iliyan Malchev <malchev@google.com> | 2013-06-20 20:16:51 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-06-20 20:16:51 -0700 |
commit | e36b93575f14239ff38ea8b71e39e41b0312326b (patch) | |
tree | a623cac4ba6a79e0cb69271c676b092e8125fe37 | |
parent | d485ef27c795648c4a05c4c089e8c5a15712fd36 (diff) | |
parent | 7bc28ed76b9a6591bdda37b472c3f7dc1ffae987 (diff) | |
download | frameworks_base-e36b93575f14239ff38ea8b71e39e41b0312326b.zip frameworks_base-e36b93575f14239ff38ea8b71e39e41b0312326b.tar.gz frameworks_base-e36b93575f14239ff38ea8b71e39e41b0312326b.tar.bz2 |
am 7bc28ed7: am e6345a19: am 9233fc00: Revert "Revert "wifi: Get full scan results""
* commit '7bc28ed76b9a6591bdda37b472c3f7dc1ffae987':
Revert "Revert "wifi: Get full scan results""
-rw-r--r-- | wifi/java/android/net/wifi/WifiNative.java | 6 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 41 |
2 files changed, 40 insertions, 7 deletions
diff --git a/wifi/java/android/net/wifi/WifiNative.java b/wifi/java/android/net/wifi/WifiNative.java index 1fbed3d..375a160 100644 --- a/wifi/java/android/net/wifi/WifiNative.java +++ b/wifi/java/android/net/wifi/WifiNative.java @@ -198,6 +198,7 @@ public class WifiNative { /** * Format of results: * ================= + * id=1 * bssid=68:7f:74:d7:1b:6e * freq=2412 * level=-43 @@ -208,10 +209,11 @@ public class WifiNative { * ==== * * RANGE=ALL gets all scan results + * RANGE=ID- gets results from ID * MASK=<N> see wpa_supplicant/src/common/wpa_ctrl.h for details */ - public String scanResults() { - return doStringCommand("BSS RANGE=ALL MASK=0x21987"); + public String scanResults(int sid) { + return doStringCommand("BSS RANGE=" + sid + "- MASK=0x21987"); } public boolean startDriver() { diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 946bbad..1040ab1 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -68,8 +68,8 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.os.WorkSource; import android.provider.Settings; -import android.text.TextUtils; import android.util.LruCache; +import android.text.TextUtils; import com.android.internal.R; import com.android.internal.app.IBatteryStats; @@ -1339,6 +1339,7 @@ public class WifiStateMachine extends StateMachine { mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL); } + private static final String ID_STR = "id="; private static final String BSSID_STR = "bssid="; private static final String FREQ_STR = "freq="; private static final String LEVEL_STR = "level="; @@ -1350,6 +1351,8 @@ public class WifiStateMachine extends StateMachine { /** * Format: + * + * id=1 * bssid=68:7f:76:d7:1a:6e * freq=2412 * level=-44 @@ -1357,6 +1360,7 @@ public class WifiStateMachine extends StateMachine { * flags=[WPA2-PSK-CCMP][WPS][ESS] * ssid=zfdy * ==== + * id=2 * bssid=68:5f:74:d7:1a:6f * freq=5180 * level=-73 @@ -1365,16 +1369,43 @@ public class WifiStateMachine extends StateMachine { * ssid=zuby * ==== */ - private void setScanResults(String scanResults) { + private void setScanResults() { String bssid = ""; int level = 0; int freq = 0; long tsf = 0; String flags = ""; WifiSsid wifiSsid = null; + String scanResults; + String tmpResults; + StringBuffer scanResultsBuf = new StringBuffer(); + int sid = 0; + + while (true) { + tmpResults = mWifiNative.scanResults(sid); + if (TextUtils.isEmpty(tmpResults)) break; + scanResultsBuf.append(tmpResults); + scanResultsBuf.append("\n"); + String[] lines = tmpResults.split("\n"); + sid = -1; + for (int i=lines.length - 1; i >= 0; i--) { + if (lines[i].startsWith(END_STR)) { + break; + } else if (lines[i].startsWith(ID_STR)) { + try { + sid = Integer.parseInt(lines[i].substring(ID_STR.length())) + 1; + } catch (NumberFormatException e) { + // Nothing to do + } + break; + } + } + if (sid == -1) break; + } - if (scanResults == null) { - return; + scanResults = scanResultsBuf.toString(); + if (TextUtils.isEmpty(scanResults)) { + return; } synchronized(mScanResultCache) { @@ -2201,7 +2232,7 @@ public class WifiStateMachine extends StateMachine { sendMessageDelayed(CMD_START_SUPPLICANT, SUPPLICANT_RESTART_INTERVAL_MSECS); break; case WifiMonitor.SCAN_RESULTS_EVENT: - setScanResults(mWifiNative.scanResults()); + setScanResults(); sendScanResultsAvailableBroadcast(); mScanResultIsPending = false; break; |