Loading src/java/com/android/internal/telephony/NetworkTypeController.java +26 −24 Original line number Diff line number Diff line Loading @@ -684,20 +684,21 @@ public class NetworkTypeController extends StateMachine { // ignore break; case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED: if (!mIsPhysicalChannelConfig16Supported) { // ignore break; } if (mIsPhysicalChannelConfig16Supported) { mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig(); if (isNrNotRestricted()) { // NOT_RESTRICTED_RRC_IDLE -> NOT_RESTRICTED_RRC_CON if (isPhysicalLinkActive()) { transitionWithTimerTo(mLteConnectedState); break; } } else { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); } } // Update in case of LTE/LTE+ switch updateOverrideNetworkType(); break; case EVENT_PHYSICAL_LINK_STATE_CHANGED: AsyncResult ar = (AsyncResult) msg.obj; Loading Loading @@ -767,20 +768,21 @@ public class NetworkTypeController extends StateMachine { // ignore break; case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED: if (!mIsPhysicalChannelConfig16Supported) { // ignore break; } if (mIsPhysicalChannelConfig16Supported) { mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig(); if (isNrNotRestricted()) { // NOT_RESTRICTED_RRC_CON -> NOT_RESTRICTED_RRC_IDLE if (!isPhysicalLinkActive()) { transitionWithTimerTo(mIdleState); break; } } else { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); } } // Update in case of LTE/LTE+ switch updateOverrideNetworkType(); break; case EVENT_PHYSICAL_LINK_STATE_CHANGED: AsyncResult ar = (AsyncResult) msg.obj; Loading tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java +59 −1 Original line number Diff line number Diff line Loading @@ -565,7 +565,7 @@ public class NetworkTypeControllerTest extends TelephonyTest { } @Test public void testPhysicalChannelChangeFromLteToLteCa() throws Exception { public void testEventPhysicalChannelChangeFromLteToLteCaInLegacyState() throws Exception { testTransitionToCurrentStateLegacy(); doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); updateOverrideNetworkType(); Loading @@ -581,6 +581,64 @@ public class NetworkTypeControllerTest extends TelephonyTest { mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalChannelChangeFromLteToLteCaInLteConnectedState() throws Exception { // Remove RRC idle/RRC connected from 5G override mBundle = mContextFixture.getCarrierConfigBundle(); mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING, "connected_mmwave:5G_Plus,connected:5G"); broadcastCarrierConfigs(); // Transition to LTE connected state doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED, new AsyncResult(null, DcController.PHYSICAL_LINK_ACTIVE, null)); mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE); processAllMessages(); assertEquals("not_restricted_rrc_con", getCurrentState().getName()); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE, mNetworkTypeController.getOverrideNetworkType()); // LTE -> LTE+ doReturn(true).when(mServiceState).isUsingCarrierAggregation(); doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED); processAllMessages(); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA, mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalChannelChangeFromLteToLteCaInIdleState() throws Exception { // Remove RRC idle/RRC connected from 5G override mBundle = mContextFixture.getCarrierConfigBundle(); mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING, "connected_mmwave:5G_Plus,connected:5G"); broadcastCarrierConfigs(); // Transition to idle state doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED, new AsyncResult(null, DcController.PHYSICAL_LINK_NOT_ACTIVE, null)); mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE); processAllMessages(); assertEquals("not_restricted_rrc_idle", getCurrentState().getName()); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE, mNetworkTypeController.getOverrideNetworkType()); // LTE -> LTE+ doReturn(true).when(mServiceState).isUsingCarrierAggregation(); doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED); processAllMessages(); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA, mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalLinkStateChanged() throws Exception { testTransitionToCurrentStateLteConnected(); Loading Loading
src/java/com/android/internal/telephony/NetworkTypeController.java +26 −24 Original line number Diff line number Diff line Loading @@ -684,20 +684,21 @@ public class NetworkTypeController extends StateMachine { // ignore break; case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED: if (!mIsPhysicalChannelConfig16Supported) { // ignore break; } if (mIsPhysicalChannelConfig16Supported) { mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig(); if (isNrNotRestricted()) { // NOT_RESTRICTED_RRC_IDLE -> NOT_RESTRICTED_RRC_CON if (isPhysicalLinkActive()) { transitionWithTimerTo(mLteConnectedState); break; } } else { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); } } // Update in case of LTE/LTE+ switch updateOverrideNetworkType(); break; case EVENT_PHYSICAL_LINK_STATE_CHANGED: AsyncResult ar = (AsyncResult) msg.obj; Loading Loading @@ -767,20 +768,21 @@ public class NetworkTypeController extends StateMachine { // ignore break; case EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED: if (!mIsPhysicalChannelConfig16Supported) { // ignore break; } if (mIsPhysicalChannelConfig16Supported) { mPhysicalLinkState = getPhysicalLinkStateFromPhysicalChannelConfig(); if (isNrNotRestricted()) { // NOT_RESTRICTED_RRC_CON -> NOT_RESTRICTED_RRC_IDLE if (!isPhysicalLinkActive()) { transitionWithTimerTo(mIdleState); break; } } else { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); } } // Update in case of LTE/LTE+ switch updateOverrideNetworkType(); break; case EVENT_PHYSICAL_LINK_STATE_CHANGED: AsyncResult ar = (AsyncResult) msg.obj; Loading
tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java +59 −1 Original line number Diff line number Diff line Loading @@ -565,7 +565,7 @@ public class NetworkTypeControllerTest extends TelephonyTest { } @Test public void testPhysicalChannelChangeFromLteToLteCa() throws Exception { public void testEventPhysicalChannelChangeFromLteToLteCaInLegacyState() throws Exception { testTransitionToCurrentStateLegacy(); doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); updateOverrideNetworkType(); Loading @@ -581,6 +581,64 @@ public class NetworkTypeControllerTest extends TelephonyTest { mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalChannelChangeFromLteToLteCaInLteConnectedState() throws Exception { // Remove RRC idle/RRC connected from 5G override mBundle = mContextFixture.getCarrierConfigBundle(); mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING, "connected_mmwave:5G_Plus,connected:5G"); broadcastCarrierConfigs(); // Transition to LTE connected state doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED, new AsyncResult(null, DcController.PHYSICAL_LINK_ACTIVE, null)); mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE); processAllMessages(); assertEquals("not_restricted_rrc_con", getCurrentState().getName()); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE, mNetworkTypeController.getOverrideNetworkType()); // LTE -> LTE+ doReturn(true).when(mServiceState).isUsingCarrierAggregation(); doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED); processAllMessages(); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA, mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalChannelChangeFromLteToLteCaInIdleState() throws Exception { // Remove RRC idle/RRC connected from 5G override mBundle = mContextFixture.getCarrierConfigBundle(); mBundle.putString(CarrierConfigManager.KEY_5G_ICON_CONFIGURATION_STRING, "connected_mmwave:5G_Plus,connected:5G"); broadcastCarrierConfigs(); // Transition to idle state doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mServiceState).getDataNetworkType(); doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_LINK_STATE_CHANGED, new AsyncResult(null, DcController.PHYSICAL_LINK_NOT_ACTIVE, null)); mNetworkTypeController.sendMessage(NetworkTypeController.EVENT_UPDATE); processAllMessages(); assertEquals("not_restricted_rrc_idle", getCurrentState().getName()); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE, mNetworkTypeController.getOverrideNetworkType()); // LTE -> LTE+ doReturn(true).when(mServiceState).isUsingCarrierAggregation(); doReturn(new int[] {30000}).when(mServiceState).getCellBandwidths(); mNetworkTypeController.sendMessage(EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED); processAllMessages(); assertEquals(TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA, mNetworkTypeController.getOverrideNetworkType()); } @Test public void testEventPhysicalLinkStateChanged() throws Exception { testTransitionToCurrentStateLteConnected(); Loading