public long getSeen() { long seen = 0; for (ScanResult result : mScanResultCache.snapshot().values()) { if (result.timestamp > seen) { seen = result.timestamp; } } return seen; }
public int getRssi() { int rssi = Integer.MIN_VALUE; for (ScanResult result : mScanResultCache.snapshot().values()) { if (result.level > rssi) { rssi = result.level; } } return rssi; }
public void saveWifiState(Bundle savedState) { if (ssid != null) savedState.putString(KEY_SSID, getSsidStr()); savedState.putInt(KEY_SECURITY, security); savedState.putInt(KEY_PSKTYPE, pskType); if (mConfig != null) savedState.putParcelable(KEY_CONFIG, mConfig); savedState.putParcelable(KEY_WIFIINFO, mInfo); savedState.putParcelableArrayList( KEY_SCANRESULTCACHE, new ArrayList<ScanResult>(mScanResultCache.snapshot().values())); if (mNetworkInfo != null) { savedState.putParcelable(KEY_NETWORKINFO, mNetworkInfo); } }
protected Map<String, Cursor> getSnapshot() { return mLruCache.snapshot(); }
/** * Returns the visibility status of the WifiConfiguration. * * @return autojoin debugging information TODO: use a string formatter ["rssi 5Ghz", "num results * on 5GHz" / "rssi 5Ghz", "num results on 5GHz"] For instance [-40,5/-30,2] */ private String getVisibilityStatus() { StringBuilder visibility = new StringBuilder(); StringBuilder scans24GHz = null; StringBuilder scans5GHz = null; String bssid = null; long now = System.currentTimeMillis(); if (mInfo != null) { bssid = mInfo.getBSSID(); if (bssid != null) { visibility.append(" ").append(bssid); } visibility.append(" rssi=").append(mInfo.getRssi()); visibility.append(" "); visibility.append(" score=").append(mInfo.score); visibility.append(String.format(" tx=%.1f,", mInfo.txSuccessRate)); visibility.append(String.format("%.1f,", mInfo.txRetriesRate)); visibility.append(String.format("%.1f ", mInfo.txBadRate)); visibility.append(String.format("rx=%.1f", mInfo.rxSuccessRate)); } int rssi5 = WifiConfiguration.INVALID_RSSI; int rssi24 = WifiConfiguration.INVALID_RSSI; int num5 = 0; int num24 = 0; int numBlackListed = 0; int n24 = 0; // Number scan results we included in the string int n5 = 0; // Number scan results we included in the string Map<String, ScanResult> list = mScanResultCache.snapshot(); // TODO: sort list by RSSI or age for (ScanResult result : list.values()) { if (result.seen == 0) continue; if (result.autoJoinStatus != ScanResult.ENABLED) numBlackListed++; if (result.frequency >= LOWER_FREQ_5GHZ && result.frequency <= HIGHER_FREQ_5GHZ) { // Strictly speaking: [4915, 5825] // number of known BSSID on 5GHz band num5 = num5 + 1; } else if (result.frequency >= LOWER_FREQ_24GHZ && result.frequency <= HIGHER_FREQ_24GHZ) { // Strictly speaking: [2412, 2482] // number of known BSSID on 2.4Ghz band num24 = num24 + 1; } // Ignore results seen, older than 20 seconds if (now - result.seen > VISIBILITY_OUTDATED_AGE_IN_MILLI) continue; if (result.frequency >= LOWER_FREQ_5GHZ && result.frequency <= HIGHER_FREQ_5GHZ) { if (result.level > rssi5) { rssi5 = result.level; } if (n5 < 4) { if (scans5GHz == null) scans5GHz = new StringBuilder(); scans5GHz.append(" \n{").append(result.BSSID); if (bssid != null && result.BSSID.equals(bssid)) scans5GHz.append("*"); scans5GHz.append("=").append(result.frequency); scans5GHz.append(",").append(result.level); if (result.autoJoinStatus != 0) { scans5GHz.append(",st=").append(result.autoJoinStatus); } if (result.numIpConfigFailures != 0) { scans5GHz.append(",ipf=").append(result.numIpConfigFailures); } scans5GHz.append("}"); n5++; } } else if (result.frequency >= LOWER_FREQ_24GHZ && result.frequency <= HIGHER_FREQ_24GHZ) { if (result.level > rssi24) { rssi24 = result.level; } if (n24 < 4) { if (scans24GHz == null) scans24GHz = new StringBuilder(); scans24GHz.append(" \n{").append(result.BSSID); if (bssid != null && result.BSSID.equals(bssid)) scans24GHz.append("*"); scans24GHz.append("=").append(result.frequency); scans24GHz.append(",").append(result.level); if (result.autoJoinStatus != 0) { scans24GHz.append(",st=").append(result.autoJoinStatus); } if (result.numIpConfigFailures != 0) { scans24GHz.append(",ipf=").append(result.numIpConfigFailures); } scans24GHz.append("}"); n24++; } } } visibility.append(" ["); if (num24 > 0) { visibility.append("(").append(num24).append(")"); if (n24 <= 4) { if (scans24GHz != null) { visibility.append(scans24GHz.toString()); } } else { visibility.append("max=").append(rssi24); if (scans24GHz != null) { visibility.append(",").append(scans24GHz.toString()); } } } visibility.append(";"); if (num5 > 0) { visibility.append("(").append(num5).append(")"); if (n5 <= 4) { if (scans5GHz != null) { visibility.append(scans5GHz.toString()); } } else { visibility.append("max=").append(rssi5); if (scans5GHz != null) { visibility.append(",").append(scans5GHz.toString()); } } } if (numBlackListed > 0) visibility.append("!").append(numBlackListed); visibility.append("]"); return visibility.toString(); }