Loading src/java/com/android/internal/telephony/NetworkTypeController.java +15 −11 Original line number Diff line number Diff line Loading @@ -360,10 +360,7 @@ public class NetworkTypeController extends StateMachine { private @Annotation.OverrideNetworkType int getCurrentOverrideNetworkType() { int displayNetworkType = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE; NetworkRegistrationInfo nri = mPhone.getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); int dataNetworkType = nri == null ? TelephonyManager.NETWORK_TYPE_UNKNOWN : nri.getAccessNetworkTechnology(); int dataNetworkType = getDataNetworkType(); boolean nrNsa = isLte(dataNetworkType) && mPhone.getServiceState().getNrState() != NetworkRegistrationInfo.NR_STATE_NONE; boolean nrSa = dataNetworkType == TelephonyManager.NETWORK_TYPE_NR; Loading Loading @@ -420,7 +417,7 @@ public class NetworkTypeController extends StateMachine { private @Annotation.OverrideNetworkType int getLteDisplayType() { int value = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE; if ((mPhone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA if ((getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA || mPhone.getServiceState().isUsingCarrierAggregation()) && (IntStream.of(mPhone.getServiceState().getCellBandwidths()).sum() > mLtePlusThresholdBandwidth)) { Loading Loading @@ -558,7 +555,7 @@ public class NetworkTypeController extends StateMachine { public boolean processMessage(Message msg) { if (DBG) log("LegacyState: process " + getEventName(msg.what)); updateTimers(); int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: if (rat == TelephonyManager.NETWORK_TYPE_NR || isLte(rat) && isNrConnected()) { Loading Loading @@ -634,7 +631,7 @@ public class NetworkTypeController extends StateMachine { updateTimers(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (rat == TelephonyManager.NETWORK_TYPE_NR) { transitionTo(mNrConnectedState); } else if (!isLte(rat) || !isNrNotRestricted()) { Loading Loading @@ -701,7 +698,7 @@ public class NetworkTypeController extends StateMachine { updateTimers(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (rat == TelephonyManager.NETWORK_TYPE_NR) { transitionTo(mNrConnectedState); } else if (!isLte(rat) || !isNrNotRestricted()) { Loading Loading @@ -769,7 +766,7 @@ public class NetworkTypeController extends StateMachine { public boolean processMessage(Message msg) { if (DBG) log("NrConnectedState: process " + getEventName(msg.what)); updateTimers(); int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: if (rat == TelephonyManager.NETWORK_TYPE_NR || isLte(rat) && isNrConnected()) { Loading Loading @@ -859,7 +856,7 @@ public class NetworkTypeController extends StateMachine { } private void transitionToCurrentState() { int dataRat = mPhone.getServiceState().getDataNetworkType(); int dataRat = getDataNetworkType(); IState transitionState; if (dataRat == TelephonyManager.NETWORK_TYPE_NR || isNrConnected()) { transitionState = mNrConnectedState; Loading Loading @@ -912,7 +909,7 @@ public class NetworkTypeController extends StateMachine { resetAllTimers(); } int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (!isLte(rat) && rat != TelephonyManager.NETWORK_TYPE_NR) { // Rat is 3G or 2G, and it doesn't need NR timer. resetAllTimers(); Loading Loading @@ -1041,6 +1038,13 @@ public class NetworkTypeController extends StateMachine { return mPhysicalLinkState == DcController.PHYSICAL_LINK_ACTIVE; } private int getDataNetworkType() { NetworkRegistrationInfo nri = mPhone.getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); return nri == null ? TelephonyManager.NETWORK_TYPE_UNKNOWN : nri.getAccessNetworkTechnology(); } private String getEventName(int event) { try { return sEvents[event]; Loading tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -728,7 +728,11 @@ public class NetworkTypeControllerTest extends TelephonyTest { assertTrue(mNetworkTypeController.is5GHysteresisActive()); // rat is UMTS, should stop timer doReturn(TelephonyManager.NETWORK_TYPE_UMTS).when(mServiceState).getDataNetworkType(); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); doReturn(nri).when(mServiceState).getNetworkRegistrationInfo(anyInt(), anyInt()); doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_DATA_RAT_CHANGED); processAllMessages(); Loading Loading
src/java/com/android/internal/telephony/NetworkTypeController.java +15 −11 Original line number Diff line number Diff line Loading @@ -360,10 +360,7 @@ public class NetworkTypeController extends StateMachine { private @Annotation.OverrideNetworkType int getCurrentOverrideNetworkType() { int displayNetworkType = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE; NetworkRegistrationInfo nri = mPhone.getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); int dataNetworkType = nri == null ? TelephonyManager.NETWORK_TYPE_UNKNOWN : nri.getAccessNetworkTechnology(); int dataNetworkType = getDataNetworkType(); boolean nrNsa = isLte(dataNetworkType) && mPhone.getServiceState().getNrState() != NetworkRegistrationInfo.NR_STATE_NONE; boolean nrSa = dataNetworkType == TelephonyManager.NETWORK_TYPE_NR; Loading Loading @@ -420,7 +417,7 @@ public class NetworkTypeController extends StateMachine { private @Annotation.OverrideNetworkType int getLteDisplayType() { int value = TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NONE; if ((mPhone.getServiceState().getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA if ((getDataNetworkType() == TelephonyManager.NETWORK_TYPE_LTE_CA || mPhone.getServiceState().isUsingCarrierAggregation()) && (IntStream.of(mPhone.getServiceState().getCellBandwidths()).sum() > mLtePlusThresholdBandwidth)) { Loading Loading @@ -558,7 +555,7 @@ public class NetworkTypeController extends StateMachine { public boolean processMessage(Message msg) { if (DBG) log("LegacyState: process " + getEventName(msg.what)); updateTimers(); int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: if (rat == TelephonyManager.NETWORK_TYPE_NR || isLte(rat) && isNrConnected()) { Loading Loading @@ -634,7 +631,7 @@ public class NetworkTypeController extends StateMachine { updateTimers(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (rat == TelephonyManager.NETWORK_TYPE_NR) { transitionTo(mNrConnectedState); } else if (!isLte(rat) || !isNrNotRestricted()) { Loading Loading @@ -701,7 +698,7 @@ public class NetworkTypeController extends StateMachine { updateTimers(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (rat == TelephonyManager.NETWORK_TYPE_NR) { transitionTo(mNrConnectedState); } else if (!isLte(rat) || !isNrNotRestricted()) { Loading Loading @@ -769,7 +766,7 @@ public class NetworkTypeController extends StateMachine { public boolean processMessage(Message msg) { if (DBG) log("NrConnectedState: process " + getEventName(msg.what)); updateTimers(); int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); switch (msg.what) { case EVENT_DATA_RAT_CHANGED: if (rat == TelephonyManager.NETWORK_TYPE_NR || isLte(rat) && isNrConnected()) { Loading Loading @@ -859,7 +856,7 @@ public class NetworkTypeController extends StateMachine { } private void transitionToCurrentState() { int dataRat = mPhone.getServiceState().getDataNetworkType(); int dataRat = getDataNetworkType(); IState transitionState; if (dataRat == TelephonyManager.NETWORK_TYPE_NR || isNrConnected()) { transitionState = mNrConnectedState; Loading Loading @@ -912,7 +909,7 @@ public class NetworkTypeController extends StateMachine { resetAllTimers(); } int rat = mPhone.getServiceState().getDataNetworkType(); int rat = getDataNetworkType(); if (!isLte(rat) && rat != TelephonyManager.NETWORK_TYPE_NR) { // Rat is 3G or 2G, and it doesn't need NR timer. resetAllTimers(); Loading Loading @@ -1041,6 +1038,13 @@ public class NetworkTypeController extends StateMachine { return mPhysicalLinkState == DcController.PHYSICAL_LINK_ACTIVE; } private int getDataNetworkType() { NetworkRegistrationInfo nri = mPhone.getServiceState().getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); return nri == null ? TelephonyManager.NETWORK_TYPE_UNKNOWN : nri.getAccessNetworkTechnology(); } private String getEventName(int event) { try { return sEvents[event]; Loading
tests/telephonytests/src/com/android/internal/telephony/NetworkTypeControllerTest.java +5 −1 Original line number Diff line number Diff line Loading @@ -728,7 +728,11 @@ public class NetworkTypeControllerTest extends TelephonyTest { assertTrue(mNetworkTypeController.is5GHysteresisActive()); // rat is UMTS, should stop timer doReturn(TelephonyManager.NETWORK_TYPE_UMTS).when(mServiceState).getDataNetworkType(); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); doReturn(nri).when(mServiceState).getNetworkRegistrationInfo(anyInt(), anyInt()); doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(mServiceState).getNrState(); mNetworkTypeController.sendMessage(EVENT_DATA_RAT_CHANGED); processAllMessages(); Loading