diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 20 | ||||
-rw-r--r-- | service/res/values/config.xml | 10 | ||||
-rw-r--r-- | service/res/values/overlayable.xml | 1 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java | 49 |
4 files changed, 66 insertions, 14 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 9d12aa000..52fb61fdb 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -1448,12 +1448,20 @@ public class WifiServiceImpl extends BaseWifiService { @GuardedBy("mLocalOnlyHotspotRequests") private void startForFirstRequestLocked(LocalOnlyHotspotRequestInfo request) { - boolean is5Ghz = hasAutomotiveFeature(mContext) - && mContext.getResources().getBoolean( - R.bool.config_wifi_local_only_hotspot_5ghz) - && is5GhzBandSupportedInternal(); - - int band = is5Ghz ? SoftApConfiguration.BAND_5GHZ : SoftApConfiguration.BAND_2GHZ; + int band = SoftApConfiguration.BAND_2GHZ; + + // For auto only + if (hasAutomotiveFeature(mContext)) { + if (mContext.getResources().getBoolean(R.bool.config_wifiLocalOnlyHotspot6ghz) + && mContext.getResources().getBoolean(R.bool.config_wifiSoftap6ghzSupported) + && is6GhzBandSupportedInternal()) { + band = SoftApConfiguration.BAND_6GHZ; + } else if (mContext.getResources().getBoolean( + R.bool.config_wifi_local_only_hotspot_5ghz) + && is5GhzBandSupportedInternal()) { + band = SoftApConfiguration.BAND_5GHZ; + } + } SoftApConfiguration softApConfig = WifiApConfigStore.generateLocalOnlyHotspotConfig( mContext, band, request.getCustomConfig()); diff --git a/service/res/values/config.xml b/service/res/values/config.xml index 881373807..ad454c10a 100644 --- a/service/res/values/config.xml +++ b/service/res/values/config.xml @@ -217,8 +217,14 @@ <!-- Wifi driver supports 6GHz band for softap --> <bool translatable="false" name="config_wifiSoftap6ghzSupported">false</bool> - <!-- Indicates that local-only hotspot should be brought up at 5GHz. This option is - for automotive builds only (the one that have PackageManager#FEATURE_AUTOMOTIVE) --> + <!-- Indicates that local-only hotspot should be brought up at 6GHz if possible. + This option is for automotive builds only (the one that have + PackageManager#FEATURE_AUTOMOTIVE) --> + <bool translatable="false" name="config_wifiLocalOnlyHotspot6ghz">false</bool> + + <!-- Indicates that local-only hotspot should be brought up at 5GHz if 6GHz is not enabled + or feasible. This option is for automotive builds only (the one that have + PackageManager#FEATURE_AUTOMOTIVE) --> <bool translatable="false" name="config_wifi_local_only_hotspot_5ghz">false</bool> <!-- Indicates that connected MAC randomization is supported on this device --> diff --git a/service/res/values/overlayable.xml b/service/res/values/overlayable.xml index 7b77da512..cab5bbfb4 100644 --- a/service/res/values/overlayable.xml +++ b/service/res/values/overlayable.xml @@ -81,6 +81,7 @@ <item type="bool" name="config_wifiSoftapHeSuBeamformeeSupported" /> <item type="bool" name="config_wifiSoftapHeMuBeamformerSupported" /> <item type="bool" name="config_wifiSoftapHeTwtSupported" /> + <item type="bool" name="config_wifiLocalOnlyHotspot6ghz" /> <item type="bool" name="config_wifi_local_only_hotspot_5ghz" /> <item type="bool" name="config_wifi_connected_mac_randomization_supported" /> <item type="bool" name="config_wifi_p2p_mac_randomization_supported" /> diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java index 603a4d8f5..6d1ae2927 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java @@ -2168,18 +2168,55 @@ public class WifiServiceImplTest extends WifiBaseTest { @Test public void testStartLocalOnlyHotspotAt2Ghz() { registerLOHSRequestFull(); - verifyLohsBand(WifiConfiguration.AP_BAND_2GHZ); + verifyLohsBand(SoftApConfiguration.BAND_2GHZ); } /** - * Verify that startLocalOnlyHotspot will start access point at 5 GHz if properly configured. + * Verify that startLocalOnlyHotspot will start access point at 6 GHz if properly configured + * and if feasible, even if the 5GHz is enabled. + */ + @Test + public void testStartLocalOnlyHotspotAt6Ghz() { + when(mResources.getBoolean( + eq(R.bool.config_wifi_local_only_hotspot_5ghz))) + .thenReturn(true); + when(mResources.getBoolean( + eq(R.bool.config_wifiLocalOnlyHotspot6ghz))) + .thenReturn(true); + when(mClientModeImpl.isWifiBandSupported(WifiScanner.WIFI_BAND_5_GHZ)).thenReturn(true); + when(mClientModeImpl.isWifiBandSupported(WifiScanner.WIFI_BAND_6_GHZ)).thenReturn(true); + when(mResources.getBoolean( + eq(R.bool.config_wifiSoftap6ghzSupported))) + .thenReturn(true); + when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)).thenReturn(true); + + verify(mAsyncChannel).connect(any(), mHandlerCaptor.capture(), any(Handler.class)); + final Handler handler = mHandlerCaptor.getValue(); + handler.handleMessage(handler.obtainMessage( + AsyncChannel.CMD_CHANNEL_HALF_CONNECTED, AsyncChannel.STATUS_SUCCESSFUL, 0)); + + mLooper.startAutoDispatch(); + registerLOHSRequestFull(); + verifyLohsBand(SoftApConfiguration.BAND_6GHZ); + } + + /** + * Verify that startLocalOnlyHotspot will start access point at 5 GHz if both 5GHz and 6GHz + * are enabled, but SoftAp is not supported for 6GHz. */ @Test public void testStartLocalOnlyHotspotAt5Ghz() { when(mResources.getBoolean( eq(R.bool.config_wifi_local_only_hotspot_5ghz))) .thenReturn(true); + when(mResources.getBoolean( + eq(R.bool.config_wifiLocalOnlyHotspot6ghz))) + .thenReturn(true); when(mClientModeImpl.isWifiBandSupported(WifiScanner.WIFI_BAND_5_GHZ)).thenReturn(true); + when(mClientModeImpl.isWifiBandSupported(WifiScanner.WIFI_BAND_6_GHZ)).thenReturn(true); + when(mResources.getBoolean( + eq(R.bool.config_wifiSoftap6ghzSupported))) + .thenReturn(false); when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)).thenReturn(true); verify(mAsyncChannel).connect(any(), mHandlerCaptor.capture(), any(Handler.class)); @@ -2189,15 +2226,15 @@ public class WifiServiceImplTest extends WifiBaseTest { mLooper.startAutoDispatch(); registerLOHSRequestFull(); - verifyLohsBand(WifiConfiguration.AP_BAND_5GHZ); + verifyLohsBand(SoftApConfiguration.BAND_5GHZ); } private void verifyLohsBand(int expectedBand) { verify(mActiveModeWarden).startSoftAp(mSoftApModeConfigCaptor.capture()); - final WifiConfiguration configuration = - mSoftApModeConfigCaptor.getValue().getSoftApConfiguration().toWifiConfiguration(); + final SoftApConfiguration configuration = + mSoftApModeConfigCaptor.getValue().getSoftApConfiguration(); assertNotNull(configuration); - assertEquals(expectedBand, configuration.apBand); + assertEquals(expectedBand, configuration.getBand()); } private static class FakeLohsCallback extends ILocalOnlyHotspotCallback.Stub { |