am 7bc28ed7: am e6345a19: am 9233fc00: Revert "Revert "wifi: Get full scan results""

* commit '7bc28ed76b9a6591bdda37b472c3f7dc1ffae987':
  Revert "Revert "wifi: Get full scan results""
This commit is contained in:
Iliyan Malchev
2013-06-20 20:16:51 -07:00
committed by Android Git Automerger
2 changed files with 40 additions and 7 deletions

View File

@@ -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() {

View File

@@ -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;
if (scanResults == null) {
return;
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;
}
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;