diff options
author | Ahmed ElArabawy <arabawy@google.com> | 2020-05-13 05:14:11 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-05-13 05:14:11 +0000 |
commit | fa786b55f344df0beb69bae8d227c59ca6aa41e0 (patch) | |
tree | 25cf907f73c78d32676f4cbb27d1dc2461543258 /service | |
parent | e68b566d2b8c728a481ece9a741ea75af1d9443d (diff) | |
parent | c16ea099626a7afe0d368cf68d1a1a61cff7c3b2 (diff) |
Merge "Include 6GHz band in scanning" into rvc-dev am: e6653aa67e am: c16ea09962
Change-Id: Id798ddb7a77fd77fa4a2076722429b5ea98f4a19
Diffstat (limited to 'service')
9 files changed, 31 insertions, 39 deletions
diff --git a/service/java/com/android/server/wifi/ScanRequestProxy.java b/service/java/com/android/server/wifi/ScanRequestProxy.java index ce6a4a422..c054b90a4 100644 --- a/service/java/com/android/server/wifi/ScanRequestProxy.java +++ b/service/java/com/android/server/wifi/ScanRequestProxy.java @@ -139,7 +139,7 @@ public class ScanRequestProxy { Log.d(TAG, "Received " + scanResults.length + " scan results"); } // Only process full band scan results. - if (scanData.getBandScanned() == WifiScanner.WIFI_BAND_BOTH_WITH_DFS) { + if (WifiScanner.isFullBandScan(scanData.getBandScanned(), false)) { // Store the last scan results & send out the scan completion broadcast. mLastScanResults.clear(); mLastScanResults.addAll(Arrays.asList(scanResults)); @@ -442,7 +442,7 @@ public class ScanRequestProxy { settings.type = WifiScanner.SCAN_TYPE_HIGH_ACCURACY; } // always do full scans - settings.band = WifiScanner.WIFI_BAND_BOTH_WITH_DFS; + settings.band = WifiScanner.WIFI_BAND_ALL; settings.reportEvents = WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN | WifiScanner.REPORT_EVENT_FULL_SCAN_RESULT; if (mScanningForHiddenNetworksEnabled) { diff --git a/service/java/com/android/server/wifi/WakeupController.java b/service/java/com/android/server/wifi/WakeupController.java index 1da8fe58a..b003b74b9 100644 --- a/service/java/com/android/server/wifi/WakeupController.java +++ b/service/java/com/android/server/wifi/WakeupController.java @@ -74,10 +74,8 @@ public class WakeupController { @Override public void onResults(WifiScanner.ScanData[] results) { // We treat any full band scans (with DFS or not) as "full". - boolean isFullBandScanResults = - results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH_WITH_DFS - || results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH; - if (results.length == 1 && isFullBandScanResults) { + if (results.length == 1 + && WifiScanner.isFullBandScan(results[0].getBandScanned(), true)) { handleScanResults(filterDfsScanResults(Arrays.asList(results[0].getResults()))); } } diff --git a/service/java/com/android/server/wifi/WifiConnectivityManager.java b/service/java/com/android/server/wifi/WifiConnectivityManager.java index 975d446ea..ed647cb69 100644 --- a/service/java/com/android/server/wifi/WifiConnectivityManager.java +++ b/service/java/com/android/server/wifi/WifiConnectivityManager.java @@ -492,9 +492,11 @@ public class WifiConnectivityManager { } // We treat any full band scans (with DFS or not) as "full". - boolean isFullBandScanResults = - results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH_WITH_DFS - || results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH; + boolean isFullBandScanResults = false; + if (results != null && results.length > 0) { + isFullBandScanResults = + WifiScanner.isFullBandScan(results[0].getBandScanned(), true); + } // Full band scan results only. if (mWaitForFullBandScanResults) { if (!isFullBandScanResults) { @@ -505,7 +507,7 @@ public class WifiConnectivityManager { mWaitForFullBandScanResults = false; } } - if (results.length > 0) { + if (results != null && results.length > 0) { mWifiMetrics.incrementAvailableNetworksHistograms(mScanDetails, isFullBandScanResults); } @@ -966,7 +968,7 @@ public class WifiConnectivityManager { private int getScanBand(boolean isFullBandScan) { if (isFullBandScan) { - return WifiScanner.WIFI_BAND_BOTH_WITH_DFS; + return WifiScanner.WIFI_BAND_ALL; } else { // Use channel list instead. return WifiScanner.WIFI_BAND_UNSPECIFIED; diff --git a/service/java/com/android/server/wifi/WifiHealthMonitor.java b/service/java/com/android/server/wifi/WifiHealthMonitor.java index 065ef3fd0..27167dccf 100644 --- a/service/java/com/android/server/wifi/WifiHealthMonitor.java +++ b/service/java/com/android/server/wifi/WifiHealthMonitor.java @@ -1046,15 +1046,12 @@ public class WifiHealthMonitor { @Override public void onResults(WifiScanner.ScanData[] results) { - if (!mWifiEnabled) { + if (!mWifiEnabled || results == null || results.length == 0) { clearScanDetails(); return; } - boolean isFullBandScanResults = - results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH_WITH_DFS - || results[0].getBandScanned() == WifiScanner.WIFI_BAND_BOTH; - if (isFullBandScanResults) { + if (WifiScanner.isFullBandScan(results[0].getBandScanned(), true)) { handleScanResults(mScanDetails); } clearScanDetails(); diff --git a/service/java/com/android/server/wifi/WifiNetworkFactory.java b/service/java/com/android/server/wifi/WifiNetworkFactory.java index 52fc0e5a7..b47afc851 100644 --- a/service/java/com/android/server/wifi/WifiNetworkFactory.java +++ b/service/java/com/android/server/wifi/WifiNetworkFactory.java @@ -371,7 +371,7 @@ public class WifiNetworkFactory extends NetworkFactory { // Create the scan settings. mScanSettings = new WifiScanner.ScanSettings(); mScanSettings.type = WifiScanner.SCAN_TYPE_HIGH_ACCURACY; - mScanSettings.band = WifiScanner.WIFI_BAND_BOTH_WITH_DFS; + mScanSettings.band = WifiScanner.WIFI_BAND_ALL; mScanSettings.reportEvents = WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN; mScanListener = new NetworkFactoryScanListener(); mPeriodicScanTimerListener = new PeriodicScanAlarmListener(); diff --git a/service/java/com/android/server/wifi/WifiVendorHal.java b/service/java/com/android/server/wifi/WifiVendorHal.java index d85d535fa..ed6ac7fdd 100644 --- a/service/java/com/android/server/wifi/WifiVendorHal.java +++ b/service/java/com/android/server/wifi/WifiVendorHal.java @@ -747,6 +747,9 @@ public class WifiVendorHal { /** * Makes the Hal flavor of WifiScanner's band indication * + * Note: This method is only used by background scan which does not + * support 6GHz, hence band combinations including 6GHz are considered invalid + * * @param frameworkBand one of WifiScanner.WIFI_BAND_* * @return A WifiBand value * @throws IllegalArgumentException if frameworkBand is not recognized diff --git a/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java b/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java index ec43cde6c..2de70d55e 100644 --- a/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java +++ b/service/java/com/android/server/wifi/scanner/KnownBandsChannelHelper.java @@ -20,12 +20,12 @@ import static android.net.wifi.WifiScanner.WIFI_BAND_24_GHZ; import static android.net.wifi.WifiScanner.WIFI_BAND_5_GHZ; import static android.net.wifi.WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY; import static android.net.wifi.WifiScanner.WIFI_BAND_6_GHZ; +import static android.net.wifi.WifiScanner.WIFI_BAND_ALL; import static android.net.wifi.WifiScanner.WIFI_BAND_COUNT; import static android.net.wifi.WifiScanner.WIFI_BAND_INDEX_24_GHZ; import static android.net.wifi.WifiScanner.WIFI_BAND_INDEX_5_GHZ; import static android.net.wifi.WifiScanner.WIFI_BAND_INDEX_5_GHZ_DFS_ONLY; import static android.net.wifi.WifiScanner.WIFI_BAND_INDEX_6_GHZ; -import static android.net.wifi.WifiScanner.WIFI_BAND_MAX; import static android.net.wifi.WifiScanner.WIFI_BAND_UNSPECIFIED; import android.net.wifi.ScanResult; @@ -106,7 +106,7 @@ public class KnownBandsChannelHelper extends ChannelHelper { @Override public WifiScanner.ChannelSpec[][] getAvailableScanChannels(int band) { - if (band <= WIFI_BAND_UNSPECIFIED || band >= WIFI_BAND_MAX) { + if (band <= WIFI_BAND_UNSPECIFIED || band > WIFI_BAND_ALL) { // Invalid value for band. return null; } @@ -301,7 +301,7 @@ public class KnownBandsChannelHelper extends ChannelHelper { @Override public boolean isAllChannels() { - return containsBand(WIFI_BAND_MAX - 1); + return containsBand(WIFI_BAND_ALL); } @Override @@ -369,7 +369,7 @@ public class KnownBandsChannelHelper extends ChannelHelper { @Override public Set<Integer> getScanFreqs() { - if (mExactBands == WIFI_BAND_MAX - 1) { + if (mExactBands == WIFI_BAND_ALL) { return null; } else { return new ArraySet<Integer>(mChannels); diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java index b81c842e4..716b206c3 100644 --- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java +++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java @@ -920,9 +920,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { } if (validateScanRequest(ci, handler, scanSettings)) { mWifiMetrics.incrementOneshotScanCount(); - if (scanSettings.band == WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY - || scanSettings.band == WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS - || scanSettings.band == WifiScanner.WIFI_BAND_BOTH_WITH_DFS) { + if ((scanSettings.band & WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY) != 0) { mWifiMetrics.incrementOneshotScanWithDfsCount(); } logScanRequest("addSingleScanRequest", ci, handler, workSource, @@ -1283,8 +1281,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { } // Cache full band (with DFS or not) scan results. - if (results.getBandScanned() == WifiScanner.WIFI_BAND_BOTH_WITH_DFS - || results.getBandScanned() == WifiScanner.WIFI_BAND_BOTH) { + if (WifiScanner.isFullBandScan(results.getBandScanned(), true)) { mCachedScanResults.clear(); mCachedScanResults.addAll(Arrays.asList(results.getResults())); } diff --git a/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java b/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java index 287a3e144..4a48ed252 100644 --- a/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java +++ b/service/java/com/android/server/wifi/scanner/WificondScannerImpl.java @@ -20,6 +20,7 @@ import android.app.AlarmManager; import android.content.Context; import android.net.wifi.ScanResult; import android.net.wifi.WifiScanner; +import android.net.wifi.WifiScanner.WifiBandIndex; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -344,20 +345,14 @@ public class WificondScannerImpl extends WifiScannerImpl implements Handler.Call * Return one of the WIFI_BAND_# values that was scanned for in this scan. */ private static int getBandScanned(ChannelCollection channelCollection) { - if (channelCollection.containsBand(WifiScanner.WIFI_BAND_BOTH_WITH_DFS)) { - return WifiScanner.WIFI_BAND_BOTH_WITH_DFS; - } else if (channelCollection.containsBand(WifiScanner.WIFI_BAND_BOTH)) { - return WifiScanner.WIFI_BAND_BOTH; - } else if (channelCollection.containsBand(WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS)) { - return WifiScanner.WIFI_BAND_5_GHZ_WITH_DFS; - } else if (channelCollection.containsBand(WifiScanner.WIFI_BAND_5_GHZ)) { - return WifiScanner.WIFI_BAND_5_GHZ; - } else if (channelCollection.containsBand(WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY)) { - return WifiScanner.WIFI_BAND_5_GHZ_DFS_ONLY; - } else if (channelCollection.containsBand(WifiScanner.WIFI_BAND_24_GHZ)) { - return WifiScanner.WIFI_BAND_24_GHZ; + int bandScanned = WifiScanner.WIFI_BAND_UNSPECIFIED; + + for (@WifiBandIndex int i = 0; i < WifiScanner.WIFI_BAND_COUNT; i++) { + if (channelCollection.containsBand(1 << i)) { + bandScanned |= 1 << i; + } } - return WifiScanner.WIFI_BAND_UNSPECIFIED; + return bandScanned; } private void pollLatestScanData() { |