diff options
8 files changed, 40 insertions, 75 deletions
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index 3dfd63bf9..7729d6157 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -1385,14 +1385,14 @@ public class WifiNative { /** * Start a scan using wificond for the given parameters. * @param ifaceName Name of the interface. - * @param scanType Type of scan to perform. One of {@link ScanSettings#SCAN_TYPE_LOW_LATENCY}, - * {@link ScanSettings#SCAN_TYPE_LOW_POWER} or {@link ScanSettings#SCAN_TYPE_HIGH_ACCURACY}. + * @param scanType Type of scan to perform. One of {@link WifiScanner#SCAN_TYPE_LOW_LATENCY}, + * {@link WifiScanner#SCAN_TYPE_LOW_POWER} or {@link WifiScanner#SCAN_TYPE_HIGH_ACCURACY}. * @param freqs list of frequencies to scan for, if null scan all supported channels. * @param hiddenNetworkSSIDs List of hidden networks to be scanned for. * @return Returns true on success. */ public boolean scan( - @NonNull String ifaceName, int scanType, Set<Integer> freqs, + @NonNull String ifaceName, @WifiScanner.ScanType int scanType, Set<Integer> freqs, List<String> hiddenNetworkSSIDs) { return mWificondControl.scan(ifaceName, scanType, freqs, hiddenNetworkSSIDs); } @@ -2542,16 +2542,12 @@ public class WifiNative { } } - public static final int SCAN_TYPE_LOW_LATENCY = 0; - public static final int SCAN_TYPE_LOW_POWER = 1; - public static final int SCAN_TYPE_HIGH_ACCURACY = 2; - public static class ScanSettings { /** - * Type of scan to perform. One of {@link ScanSettings#SCAN_TYPE_LOW_LATENCY}, - * {@link ScanSettings#SCAN_TYPE_LOW_POWER} or {@link ScanSettings#SCAN_TYPE_HIGH_ACCURACY}. + * Type of scan to perform. One of {@link WifiScanner#SCAN_TYPE_LOW_LATENCY}, + * {@link WifiScanner#SCAN_TYPE_LOW_POWER} or {@link WifiScanner#SCAN_TYPE_HIGH_ACCURACY}. */ - public int scanType; + public @WifiScanner.ScanType int scanType; public int base_period_ms; public int max_ap_per_scan; public int report_threshold_percent; diff --git a/service/java/com/android/server/wifi/WificondControl.java b/service/java/com/android/server/wifi/WificondControl.java index 7a4e9e698..6141b7b13 100644 --- a/service/java/com/android/server/wifi/WificondControl.java +++ b/service/java/com/android/server/wifi/WificondControl.java @@ -656,13 +656,13 @@ public class WificondControl implements IBinder.DeathRecipient { /** * Return scan type for the parcelable {@link SingleScanSettings} */ - private static int getScanType(int scanType) { + private static int getScanType(@WifiScanner.ScanType int scanType) { switch (scanType) { - case WifiNative.SCAN_TYPE_LOW_LATENCY: + case WifiScanner.SCAN_TYPE_LOW_LATENCY: return IWifiScannerImpl.SCAN_TYPE_LOW_SPAN; - case WifiNative.SCAN_TYPE_LOW_POWER: + case WifiScanner.SCAN_TYPE_LOW_POWER: return IWifiScannerImpl.SCAN_TYPE_LOW_POWER; - case WifiNative.SCAN_TYPE_HIGH_ACCURACY: + case WifiScanner.SCAN_TYPE_HIGH_ACCURACY: return IWifiScannerImpl.SCAN_TYPE_HIGH_ACCURACY; default: throw new IllegalArgumentException("Invalid scan type " + scanType); @@ -677,10 +677,8 @@ public class WificondControl implements IBinder.DeathRecipient { * @param hiddenNetworkSSIDs List of hidden networks to be scanned for. * @return Returns true on success. */ - public boolean scan(@NonNull String ifaceName, - int scanType, - Set<Integer> freqs, - List<String> hiddenNetworkSSIDs) { + public boolean scan(@NonNull String ifaceName, @WifiScanner.ScanType int scanType, + Set<Integer> freqs, List<String> hiddenNetworkSSIDs) { IWifiScannerImpl scannerImpl = getScannerImpl(ifaceName); if (scannerImpl == null) { Log.e(TAG, "No valid wificond scanner interface handler"); diff --git a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java index 6dd2021d7..2388ffdfa 100644 --- a/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java +++ b/service/java/com/android/server/wifi/scanner/WifiScanningServiceImpl.java @@ -1012,10 +1012,10 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { } } - boolean validateScanType(int type) { - return type == WifiScanner.SCAN_TYPE_LOW_LATENCY + boolean validateScanType(@WifiScanner.ScanType int type) { + return (type == WifiScanner.SCAN_TYPE_LOW_LATENCY || type == WifiScanner.SCAN_TYPE_LOW_POWER - || type == WifiScanner.SCAN_TYPE_HIGH_ACCURACY; + || type == WifiScanner.SCAN_TYPE_HIGH_ACCURACY); } boolean validateScanRequest(ClientInfo ci, int handler, ScanSettings settings) { @@ -1050,30 +1050,15 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { return true; } - int getNativeScanType(int type) { - switch(type) { - case WifiScanner.SCAN_TYPE_LOW_LATENCY: - return WifiNative.SCAN_TYPE_LOW_LATENCY; - case WifiScanner.SCAN_TYPE_LOW_POWER: - return WifiNative.SCAN_TYPE_LOW_POWER; - case WifiScanner.SCAN_TYPE_HIGH_ACCURACY: - return WifiNative.SCAN_TYPE_HIGH_ACCURACY; - default: - // This should never happen becuase we've validated the incoming type in - // |validateScanType|. - throw new IllegalArgumentException("Invalid scan type " + type); - } - } - // We can coalesce a LOW_POWER/LOW_LATENCY scan request into an ongoing HIGH_ACCURACY // scan request. But, we can't coalesce a HIGH_ACCURACY scan request into an ongoing // LOW_POWER/LOW_LATENCY scan request. boolean activeScanTypeSatisfies(int requestScanType) { switch(mActiveScanSettings.scanType) { - case WifiNative.SCAN_TYPE_LOW_LATENCY: - case WifiNative.SCAN_TYPE_LOW_POWER: - return requestScanType != WifiNative.SCAN_TYPE_HIGH_ACCURACY; - case WifiNative.SCAN_TYPE_HIGH_ACCURACY: + case WifiScanner.SCAN_TYPE_LOW_LATENCY: + case WifiScanner.SCAN_TYPE_LOW_POWER: + return requestScanType != WifiScanner.SCAN_TYPE_HIGH_ACCURACY; + case WifiScanner.SCAN_TYPE_HIGH_ACCURACY: return true; default: // This should never happen becuase we've validated the incoming type in @@ -1087,10 +1072,10 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { // scan type should be HIGH_ACCURACY. int mergeScanTypes(int existingScanType, int newScanType) { switch(existingScanType) { - case WifiNative.SCAN_TYPE_LOW_LATENCY: - case WifiNative.SCAN_TYPE_LOW_POWER: + case WifiScanner.SCAN_TYPE_LOW_LATENCY: + case WifiScanner.SCAN_TYPE_LOW_POWER: return newScanType; - case WifiNative.SCAN_TYPE_HIGH_ACCURACY: + case WifiScanner.SCAN_TYPE_HIGH_ACCURACY: return existingScanType; default: // This should never happen becuase we've validated the incoming type in @@ -1104,7 +1089,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { return false; } - if (!activeScanTypeSatisfies(getNativeScanType(settings.type))) { + if (!activeScanTypeSatisfies(settings.type)) { return false; } @@ -1177,8 +1162,7 @@ public class WifiScanningServiceImpl extends IWifiScanner.Stub { ChannelCollection channels = mChannelHelper.createChannelCollection(); List<WifiNative.HiddenNetwork> hiddenNetworkList = new ArrayList<>(); for (RequestInfo<ScanSettings> entry : mPendingScans) { - settings.scanType = - mergeScanTypes(settings.scanType, getNativeScanType(entry.settings.type)); + settings.scanType = mergeScanTypes(settings.scanType, entry.settings.type); channels.addChannels(entry.settings); for (ScanSettings.HiddenNetwork srcNetwork : entry.settings.hiddenNetworks) { WifiNative.HiddenNetwork hiddenNetwork = new WifiNative.HiddenNetwork(); diff --git a/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java b/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java index 6f7dfbb0b..5a49da5e3 100644 --- a/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java +++ b/tests/wifitests/src/com/android/server/wifi/ScanTestUtil.java @@ -98,7 +98,7 @@ public class ScanTestUtil { public static class NativeScanSettingsBuilder { private final WifiNative.ScanSettings mSettings = new WifiNative.ScanSettings(); public NativeScanSettingsBuilder() { - mSettings.scanType = WifiNative.SCAN_TYPE_LOW_LATENCY; + mSettings.scanType = WifiScanner.SCAN_TYPE_LOW_LATENCY; mSettings.buckets = new WifiNative.BucketSettings[0]; mSettings.num_buckets = 0; mSettings.report_threshold_percent = 100; @@ -183,20 +183,6 @@ public class ScanTestUtil { } - private static int getNativeScanType(int type) { - switch(type) { - case WifiScanner.SCAN_TYPE_LOW_LATENCY: - return WifiNative.SCAN_TYPE_LOW_LATENCY; - case WifiScanner.SCAN_TYPE_LOW_POWER: - return WifiNative.SCAN_TYPE_LOW_POWER; - case WifiScanner.SCAN_TYPE_HIGH_ACCURACY: - return WifiNative.SCAN_TYPE_HIGH_ACCURACY; - default: - fail(); - return -1; - } - } - /** * Compute the expected native scan settings that are expected for the given * WifiScanner.ScanSettings. @@ -209,7 +195,7 @@ public class ScanTestUtil { .withMaxApPerScan(0) .withMaxPercentToCache(0) .withMaxScansToCache(0) - .withType(getNativeScanType(requestSettings.type)); + .withType(requestSettings.type); if (requestSettings.band == WifiScanner.WIFI_BAND_UNSPECIFIED) { builder.addBucketWithChannels(0, reportEvents, requestSettings.channels); } else { @@ -225,7 +211,7 @@ public class ScanTestUtil { public static WifiNative.ScanSettings createSingleScanNativeSettingsForChannels( int reportEvents, WifiScanner.ChannelSpec... channels) { return createSingleScanNativeSettingsForChannels( - WifiNative.SCAN_TYPE_LOW_LATENCY, reportEvents, channels); + WifiScanner.SCAN_TYPE_LOW_LATENCY, reportEvents, channels); } /** diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNativeTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNativeTest.java index 1660c23cb..95d4d15ef 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNativeTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNativeTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.*; import android.net.MacAddress; import android.net.wifi.WifiConfiguration; +import android.net.wifi.WifiScanner; import android.os.Handler; import android.os.INetworkManagementService; @@ -543,10 +544,10 @@ public class WifiNativeTest extends WifiBaseTest { */ @Test public void testScan() throws Exception { - mWifiNative.scan(WIFI_IFACE_NAME, WifiNative.SCAN_TYPE_HIGH_ACCURACY, SCAN_FREQ_SET, + mWifiNative.scan(WIFI_IFACE_NAME, WifiScanner.SCAN_TYPE_HIGH_ACCURACY, SCAN_FREQ_SET, SCAN_HIDDEN_NETWORK_SSID_SET); verify(mWificondControl).scan( - WIFI_IFACE_NAME, WifiNative.SCAN_TYPE_HIGH_ACCURACY, + WIFI_IFACE_NAME, WifiScanner.SCAN_TYPE_HIGH_ACCURACY, SCAN_FREQ_SET, SCAN_HIDDEN_NETWORK_SSID_SET); } diff --git a/tests/wifitests/src/com/android/server/wifi/WificondControlTest.java b/tests/wifitests/src/com/android/server/wifi/WificondControlTest.java index aa988af11..702003952 100644 --- a/tests/wifitests/src/com/android/server/wifi/WificondControlTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WificondControlTest.java @@ -341,7 +341,7 @@ public class WificondControlTest extends WifiBaseTest { verify(mClientInterface, never()).signalPoll(); assertFalse(mWificondControl.scan( - TEST_INTERFACE_NAME, WifiNative.SCAN_TYPE_LOW_LATENCY, + TEST_INTERFACE_NAME, WifiScanner.SCAN_TYPE_LOW_LATENCY, SCAN_FREQ_SET, SCAN_HIDDEN_NETWORK_SSID_LIST)); verify(mWifiScannerImpl, never()).scan(any()); } @@ -727,7 +727,7 @@ public class WificondControlTest extends WifiBaseTest { public void testScan() throws Exception { when(mWifiScannerImpl.scan(any(SingleScanSettings.class))).thenReturn(true); assertTrue(mWificondControl.scan( - TEST_INTERFACE_NAME, WifiNative.SCAN_TYPE_LOW_POWER, + TEST_INTERFACE_NAME, WifiScanner.SCAN_TYPE_LOW_POWER, SCAN_FREQ_SET, SCAN_HIDDEN_NETWORK_SSID_LIST)); verify(mWifiScannerImpl).scan(argThat(new ScanMatcher( IWifiScannerImpl.SCAN_TYPE_LOW_POWER, @@ -747,7 +747,7 @@ public class WificondControlTest extends WifiBaseTest { hiddenSsidWithDup.get(hiddenSsidWithDup.size() - 1)); // Pass the List with duplicate elements into scan() assertTrue(mWificondControl.scan( - TEST_INTERFACE_NAME, WifiNative.SCAN_TYPE_LOW_POWER, + TEST_INTERFACE_NAME, WifiScanner.SCAN_TYPE_LOW_POWER, SCAN_FREQ_SET, hiddenSsidWithDup)); // But the argument passed down should have the duplicate removed. verify(mWifiScannerImpl).scan(argThat(new ScanMatcher( @@ -762,7 +762,7 @@ public class WificondControlTest extends WifiBaseTest { public void testScanNullParameters() throws Exception { when(mWifiScannerImpl.scan(any(SingleScanSettings.class))).thenReturn(true); assertTrue(mWificondControl.scan( - TEST_INTERFACE_NAME, WifiNative.SCAN_TYPE_HIGH_ACCURACY, null, null)); + TEST_INTERFACE_NAME, WifiScanner.SCAN_TYPE_HIGH_ACCURACY, null, null)); verify(mWifiScannerImpl).scan(argThat(new ScanMatcher( IWifiScannerImpl.SCAN_TYPE_HIGH_ACCURACY, null, null))); } @@ -774,7 +774,7 @@ public class WificondControlTest extends WifiBaseTest { public void testScanFailure() throws Exception { when(mWifiScannerImpl.scan(any(SingleScanSettings.class))).thenReturn(false); assertFalse(mWificondControl.scan( - TEST_INTERFACE_NAME, WifiNative.SCAN_TYPE_LOW_LATENCY, + TEST_INTERFACE_NAME, WifiScanner.SCAN_TYPE_LOW_LATENCY, SCAN_FREQ_SET, SCAN_HIDDEN_NETWORK_SSID_LIST)); verify(mWifiScannerImpl).scan(any(SingleScanSettings.class)); } diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java index 9b24b14a4..10f475c96 100644 --- a/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/scanner/BaseWifiScannerImplTest.java @@ -142,7 +142,7 @@ public abstract class BaseWifiScannerImplTest extends WifiBaseTest { @Test public void singleScanSuccessWithChannelsAndHighAccuracyType() { WifiNative.ScanSettings settings = new NativeScanSettingsBuilder() - .withType(WifiNative.SCAN_TYPE_HIGH_ACCURACY) + .withType(WifiScanner.SCAN_TYPE_HIGH_ACCURACY) .withBasePeriod(10000) .withMaxApPerScan(10) .addBucketWithChannels(20000, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, 5650) @@ -368,7 +368,7 @@ public abstract class BaseWifiScannerImplTest extends WifiBaseTest { WifiScanner.WIFI_BAND_24_GHZ) .build(); WifiNative.ScanSettings settings2 = new NativeScanSettingsBuilder() - .withType(WifiNative.SCAN_TYPE_LOW_POWER) + .withType(WifiScanner.SCAN_TYPE_LOW_POWER) .withBasePeriod(10000) .withMaxApPerScan(10) .addBucketWithBand(10000, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, @@ -384,7 +384,7 @@ public abstract class BaseWifiScannerImplTest extends WifiBaseTest { // start first scan assertTrue(mScanner.startSingleScan(settings, eventHandler)); - expectSuccessfulSingleScan(order, WifiNative.SCAN_TYPE_LOW_LATENCY, eventHandler, + expectSuccessfulSingleScan(order, WifiScanner.SCAN_TYPE_LOW_LATENCY, eventHandler, expectedBandScanFreqs(WifiScanner.WIFI_BAND_24_GHZ), new ArrayList<String>(), ScanResults.create(0, WifiScanner.WIFI_BAND_24_GHZ, @@ -393,7 +393,7 @@ public abstract class BaseWifiScannerImplTest extends WifiBaseTest { // start second scan assertTrue(mScanner.startSingleScan(settings2, eventHandler)); - expectSuccessfulSingleScan(order, WifiNative.SCAN_TYPE_LOW_POWER, eventHandler, + expectSuccessfulSingleScan(order, WifiScanner.SCAN_TYPE_LOW_POWER, eventHandler, expectedBandScanFreqs(WifiScanner.WIFI_BAND_BOTH_WITH_DFS), new ArrayList<String>(), ScanResults.create(0, WifiScanner.WIFI_BAND_BOTH_WITH_DFS, diff --git a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java index 2aa364168..89b1e8bac 100644 --- a/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java +++ b/tests/wifitests/src/com/android/server/wifi/scanner/WifiScanningServiceTest.java @@ -1423,7 +1423,7 @@ public class WifiScanningServiceTest extends WifiBaseTest { ScanResults.create(0, WifiScanner.WIFI_BAND_UNSPECIFIED, 5150, 5150, 5150, 5150); WifiNative.ScanSettings nativeSettings2and3 = createSingleScanNativeSettingsForChannels( - WifiNative.SCAN_TYPE_HIGH_ACCURACY, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, + WifiScanner.SCAN_TYPE_HIGH_ACCURACY, WifiScanner.REPORT_EVENT_AFTER_EACH_SCAN, channelsToSpec(2450, 5175, 5150)); ScanResults results2and3 = ScanResults.merge(WifiScanner.WIFI_BAND_UNSPECIFIED, results2, results3); |