diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-12-03 02:21:51 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-12-03 02:21:51 +0000 |
commit | 1f0f318608c90242be2e763f5c42c8eab65e364d (patch) | |
tree | 694ffdac39a9274dbaa7daf5b91e3f3a07afa021 | |
parent | 3ff7f409ed2c6a862a7490a10eb7290b01958528 (diff) | |
parent | b64d60276f05f06ffcf196eeb85a3635f6bb66d5 (diff) | |
download | telephony-1f0f318608c90242be2e763f5c42c8eab65e364d.tar.gz |
Snap for 9364794 from b64d60276f05f06ffcf196eeb85a3635f6bb66d5 to tm-qpr2-release
Change-Id: Ibbf21318af0901ccfe81ed23f4deee89d98543e1
-rw-r--r-- | src/java/com/android/internal/telephony/NetworkTypeController.java | 21 | ||||
-rw-r--r-- | tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java | 35 |
2 files changed, 52 insertions, 4 deletions
diff --git a/src/java/com/android/internal/telephony/NetworkTypeController.java b/src/java/com/android/internal/telephony/NetworkTypeController.java index b1b02d6386..5c9c848961 100644 --- a/src/java/com/android/internal/telephony/NetworkTypeController.java +++ b/src/java/com/android/internal/telephony/NetworkTypeController.java @@ -157,6 +157,7 @@ public class NetworkTypeController extends StateMachine { private boolean mIsTimerResetEnabledForLegacyStateRRCIdle; private int mLtePlusThresholdBandwidth; private int mNrAdvancedThresholdBandwidth; + private boolean mIncludeLteForNrAdvancedThresholdBandwidth; private int[] mAdditionalNrAdvancedBandsList; private String mPrimaryTimerState; private String mSecondaryTimerState; @@ -267,6 +268,9 @@ public class NetworkTypeController extends StateMachine { CarrierConfigManager.KEY_LTE_PLUS_THRESHOLD_BANDWIDTH_KHZ_INT); mNrAdvancedThresholdBandwidth = CarrierConfigManager.getDefaultConfig().getInt( CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT); + mIncludeLteForNrAdvancedThresholdBandwidth = CarrierConfigManager.getDefaultConfig() + .getBoolean(CarrierConfigManager + .KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL); mEnableNrAdvancedWhileRoaming = CarrierConfigManager.getDefaultConfig().getBoolean( CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL); @@ -302,6 +306,9 @@ public class NetworkTypeController extends StateMachine { mNrAdvancedThresholdBandwidth = b.getInt( CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT, mNrAdvancedThresholdBandwidth); + mIncludeLteForNrAdvancedThresholdBandwidth = b.getBoolean(CarrierConfigManager + .KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL, + mIncludeLteForNrAdvancedThresholdBandwidth); mAdditionalNrAdvancedBandsList = b.getIntArray( CarrierConfigManager.KEY_ADDITIONAL_NR_ADVANCED_BANDS_INT_ARRAY); mNrAdvancedCapablePcoId = b.getInt( @@ -1261,11 +1268,19 @@ public class NetworkTypeController extends StateMachine { return false; } + int bandwidths = 0; + if (mPhone.getServiceStateTracker().getPhysicalChannelConfigList() != null) { + bandwidths = mPhone.getServiceStateTracker().getPhysicalChannelConfigList() + .stream() + .filter(config -> mIncludeLteForNrAdvancedThresholdBandwidth + || config.getNetworkType() == TelephonyManager.NETWORK_TYPE_NR) + .map(PhysicalChannelConfig::getCellBandwidthDownlinkKhz) + .mapToInt(Integer::intValue) + .sum(); + } // Check if meeting minimum bandwidth requirement. For most carriers, there is no minimum // bandwidth requirement and mNrAdvancedThresholdBandwidth is 0. - if (mNrAdvancedThresholdBandwidth > 0 - && IntStream.of(mPhone.getServiceState().getCellBandwidths()).sum() - < mNrAdvancedThresholdBandwidth) { + if (mNrAdvancedThresholdBandwidth > 0 && bandwidths < mNrAdvancedThresholdBandwidth) { return false; } diff --git a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java index 0230645b59..359010e915 100644 --- a/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java +++ b/tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java @@ -1323,7 +1323,12 @@ public class NetworkTypeControllerTest extends TelephonyTest { doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(mServiceState).getNrState(); doReturn(ServiceState.FREQUENCY_RANGE_MMWAVE).when(mServiceState).getNrFrequencyRange(); - doReturn(new int[] {20001}).when(mServiceState).getCellBandwidths(); + List<PhysicalChannelConfig> lastPhysicalChannelConfigList = new ArrayList<>(); + lastPhysicalChannelConfigList.add(new PhysicalChannelConfig.Builder() + .setNetworkType(TelephonyManager.NETWORK_TYPE_NR) + .setCellBandwidthDownlinkKhz(20001) + .build()); + doReturn(lastPhysicalChannelConfigList).when(mSST).getPhysicalChannelConfigList(); mBundle.putInt(CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT, 20000); broadcastCarrierConfigs(); @@ -1333,6 +1338,34 @@ public class NetworkTypeControllerTest extends TelephonyTest { } @Test + public void testTransitionToCurrentStateNrConnectedWithHighBandwidthIncludingLte() + throws Exception { + assertEquals("DefaultState", getCurrentState().getName()); + doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); + doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(mServiceState).getNrState(); + doReturn(ServiceState.FREQUENCY_RANGE_MMWAVE).when(mServiceState).getNrFrequencyRange(); + List<PhysicalChannelConfig> lastPhysicalChannelConfigList = new ArrayList<>(); + lastPhysicalChannelConfigList.add(new PhysicalChannelConfig.Builder() + .setNetworkType(TelephonyManager.NETWORK_TYPE_NR) + .setCellBandwidthDownlinkKhz(20000) + .build()); + lastPhysicalChannelConfigList.add(new PhysicalChannelConfig.Builder() + .setNetworkType(TelephonyManager.NETWORK_TYPE_LTE) + .setCellBandwidthDownlinkKhz(10000) + .build()); + doReturn(lastPhysicalChannelConfigList).when(mSST).getPhysicalChannelConfigList(); + mBundle.putInt(CarrierConfigManager.KEY_NR_ADVANCED_THRESHOLD_BANDWIDTH_KHZ_INT, 20000); + mBundle.putBoolean( + CarrierConfigManager.KEY_INCLUDE_LTE_FOR_NR_ADVANCED_THRESHOLD_BANDWIDTH_BOOL, + true); + broadcastCarrierConfigs(); + + mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE); + processAllMessages(); + assertEquals("connected_mmwave", getCurrentState().getName()); + } + + @Test public void testNrAdvancedDisabledWhileRoaming() throws Exception { assertEquals("DefaultState", getCurrentState().getName()); doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); |