aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-12-03 02:21:51 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-12-03 02:21:51 +0000
commit1f0f318608c90242be2e763f5c42c8eab65e364d (patch)
tree694ffdac39a9274dbaa7daf5b91e3f3a07afa021
parent3ff7f409ed2c6a862a7490a10eb7290b01958528 (diff)
parentb64d60276f05f06ffcf196eeb85a3635f6bb66d5 (diff)
downloadtelephony-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.java21
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java35
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();