Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +7 −5 Original line number Diff line number Diff line Loading @@ -1315,11 +1315,12 @@ public class GsmCdmaPhone extends Phone { "cannot dial voice call in airplane mode"); } // Check for service before placing non emergency CS voice call. // Allow dial only if either CS is camped on any RAT (or) PS is in LTE service. // Allow dial only if either CS is camped on any RAT (or) PS is in LTE/NR service. if (mSST != null && mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE /* CS out of service */ && !(mSST.mSS.getDataRegState() == ServiceState.STATE_IN_SERVICE && ServiceState.isLte(mSST.mSS.getRilDataRadioTechnology())) /* PS not in LTE */ && ServiceState.isPsOnlyTech( mSST.mSS.getRilDataRadioTechnology())) /* PS not in LTE/NR */ && !VideoProfile.isVideo(dialArgs.videoState) /* voice call */ && !isEmergency /* non-emergency call */) { throw new CallStateException( Loading Loading @@ -3630,8 +3631,8 @@ public class GsmCdmaPhone extends Phone { private void phoneObjectUpdater(int newVoiceRadioTech) { logd("phoneObjectUpdater: newVoiceRadioTech=" + newVoiceRadioTech); // Check for a voice over lte replacement if (ServiceState.isLte(newVoiceRadioTech) // Check for a voice over LTE/NR replacement if (ServiceState.isPsOnlyTech(newVoiceRadioTech) || (newVoiceRadioTech == ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)) { CarrierConfigManager configMgr = (CarrierConfigManager) getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading Loading @@ -3932,7 +3933,8 @@ public class GsmCdmaPhone extends Phone { private static final int[] VOICE_PS_CALL_RADIO_TECHNOLOGY = { ServiceState.RIL_RADIO_TECHNOLOGY_LTE, ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA, ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, ServiceState.RIL_RADIO_TECHNOLOGY_NR }; /** Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +20 −20 Original line number Diff line number Diff line Loading @@ -1895,9 +1895,9 @@ public class ServiceStateTracker extends Handler { // Use default mNewSS.setCdmaRoamingIndicator(mDefaultRoamingIndicator); } else if (namMatch && !mIsInPrl) { // TODO this will be removed when we handle roaming on LTE on CDMA+LTE phones if (ServiceState.isLte(mNewSS.getRilVoiceRadioTechnology())) { log("Turn off roaming indicator as voice is LTE"); // TODO: remove when we handle roaming on LTE/NR on CDMA+LTE phones if (ServiceState.isPsOnlyTech(mNewSS.getRilVoiceRadioTechnology())) { log("Turn off roaming indicator as voice is LTE or NR"); mNewSS.setCdmaRoamingIndicator(EriInfo.ROAMING_INDICATOR_OFF); } else { mNewSS.setCdmaRoamingIndicator(EriInfo.ROAMING_INDICATOR_FLASH); Loading Loading @@ -2192,16 +2192,17 @@ public class ServiceStateTracker extends Handler { } else { // If the unsolicited signal strength comes just before data RAT family changes // (i.e. from UNKNOWN to LTE, CDMA to LTE, LTE to CDMA), the signal bar might // display the wrong information until the next unsolicited signal strength // information coming from the modem, which might take a long time to come or // even not come at all. In order to provide the best user experience, we // query the latest signal information so it will show up on the UI on time. // (i.e. from UNKNOWN to LTE/NR, CDMA to LTE/NR, LTE/NR to CDMA), the signal bar // might display the wrong information until the next unsolicited signal // strength information coming from the modem, which might take a long time to // come or even not come at all. In order to provide the best user experience, // we query the latest signal information so it will show up on the UI on time. int oldDataRAT = getRilDataRadioTechnologyForWwan(mSS); if (((oldDataRAT == ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) && (newDataRat != ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)) || (ServiceState.isCdma(oldDataRAT) && ServiceState.isLte(newDataRat)) || (ServiceState.isLte(oldDataRAT) || (ServiceState.isCdma(oldDataRAT) && ServiceState.isPsOnlyTech(newDataRat)) || (ServiceState.isPsOnlyTech(oldDataRAT) && ServiceState.isCdma(newDataRat))) { mCi.getSignalStrength(obtainMessage(EVENT_GET_SIGNAL_STRENGTH)); } Loading Loading @@ -3109,7 +3110,8 @@ public class ServiceStateTracker extends Handler { + " oldMaxDataCalls=" + mMaxDataCalls + " mNewMaxDataCalls=" + mNewMaxDataCalls + " oldReasonDataDenied=" + mReasonDataDenied + " mNewReasonDataDenied=" + mNewReasonDataDenied); + " mNewReasonDataDeni" + "ed=" + mNewReasonDataDenied); } boolean hasRegistered = Loading Loading @@ -3226,16 +3228,14 @@ public class ServiceStateTracker extends Handler { final int wwanDataRat = getRilDataRadioTechnologyForWwan(mSS); final int newWwanDataRat = getRilDataRadioTechnologyForWwan(mNewSS); has4gHandoff = mNewSS.getDataRegState() == ServiceState.STATE_IN_SERVICE && ((ServiceState.isLte(wwanDataRat) && ((ServiceState.isPsOnlyTech(wwanDataRat) && (newWwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) || ((wwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD) && ServiceState.isLte(newWwanDataRat))); || ((wwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD) && ServiceState.isPsOnlyTech(newWwanDataRat))); hasMultiApnSupport = ((ServiceState.isLte(newWwanDataRat) hasMultiApnSupport = ((ServiceState.isPsOnlyTech(newWwanDataRat) || (newWwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) && (!ServiceState.isLte(wwanDataRat) && (!ServiceState.isPsOnlyTech(wwanDataRat) && (wwanDataRat != ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD))); hasLostMultiApnSupport = ((newWwanDataRat >= ServiceState.RIL_RADIO_TECHNOLOGY_IS95A) Loading Loading @@ -3545,7 +3545,7 @@ public class ServiceStateTracker extends Handler { mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() != null; if (!hasBrandOverride && (mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) && (mEriManager.isEriFileLoaded()) && (!ServiceState.isLte(mSS.getRilVoiceRadioTechnology()) && (!ServiceState.isPsOnlyTech(mSS.getRilVoiceRadioTechnology()) || mPhone.getContext().getResources().getBoolean(com.android.internal.R .bool.config_LTE_eri_for_network_name))) { // Only when CDMA is in service, ERI will take effect Loading @@ -3570,7 +3570,7 @@ public class ServiceStateTracker extends Handler { if (mUiccApplcation != null && mUiccApplcation.getState() == AppState.APPSTATE_READY && mIccRecords != null && getCombinedRegState(mSS) == ServiceState.STATE_IN_SERVICE && !ServiceState.isLte(mSS.getRilVoiceRadioTechnology())) { && !ServiceState.isPsOnlyTech(mSS.getRilVoiceRadioTechnology())) { // SIM is found on the device. If ERI roaming is OFF, and SID/NID matches // one configured in SIM, use operator name from CSIM record. Note that ERI, SID, // and NID are CDMA only, not applicable to LTE. Loading src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +7 −5 Original line number Diff line number Diff line Loading @@ -147,8 +147,10 @@ public class CdmaSMSDispatcher extends SMSDispatcher { int currentDataNetwork = mPhone.getServiceState().getDataNetworkType(); boolean imsSmsDisabled = (currentDataNetwork == TelephonyManager.NETWORK_TYPE_EHRPD || (ServiceState.isLte(currentDataNetwork) && !mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed())) || (currentDataNetwork == TelephonyManager.NETWORK_TYPE_LTE || currentDataNetwork == TelephonyManager.NETWORK_TYPE_LTE_CA || currentDataNetwork == TelephonyManager.NETWORK_TYPE_NR) && !mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed()) && mPhone.getServiceState().getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_1xRTT && ((GsmCdmaPhone) mPhone).mCT.mState != PhoneConstants.State.IDLE; Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ public class ServiceStateTest extends TestCase { rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GSM, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_NR, false)); for (Pair<Integer, Boolean> rat : rats) { boolean isCdma = rat.second; Loading Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +7 −5 Original line number Diff line number Diff line Loading @@ -1315,11 +1315,12 @@ public class GsmCdmaPhone extends Phone { "cannot dial voice call in airplane mode"); } // Check for service before placing non emergency CS voice call. // Allow dial only if either CS is camped on any RAT (or) PS is in LTE service. // Allow dial only if either CS is camped on any RAT (or) PS is in LTE/NR service. if (mSST != null && mSST.mSS.getState() == ServiceState.STATE_OUT_OF_SERVICE /* CS out of service */ && !(mSST.mSS.getDataRegState() == ServiceState.STATE_IN_SERVICE && ServiceState.isLte(mSST.mSS.getRilDataRadioTechnology())) /* PS not in LTE */ && ServiceState.isPsOnlyTech( mSST.mSS.getRilDataRadioTechnology())) /* PS not in LTE/NR */ && !VideoProfile.isVideo(dialArgs.videoState) /* voice call */ && !isEmergency /* non-emergency call */) { throw new CallStateException( Loading Loading @@ -3630,8 +3631,8 @@ public class GsmCdmaPhone extends Phone { private void phoneObjectUpdater(int newVoiceRadioTech) { logd("phoneObjectUpdater: newVoiceRadioTech=" + newVoiceRadioTech); // Check for a voice over lte replacement if (ServiceState.isLte(newVoiceRadioTech) // Check for a voice over LTE/NR replacement if (ServiceState.isPsOnlyTech(newVoiceRadioTech) || (newVoiceRadioTech == ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)) { CarrierConfigManager configMgr = (CarrierConfigManager) getContext().getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading Loading @@ -3932,7 +3933,8 @@ public class GsmCdmaPhone extends Phone { private static final int[] VOICE_PS_CALL_RADIO_TECHNOLOGY = { ServiceState.RIL_RADIO_TECHNOLOGY_LTE, ServiceState.RIL_RADIO_TECHNOLOGY_LTE_CA, ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, ServiceState.RIL_RADIO_TECHNOLOGY_NR }; /** Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +20 −20 Original line number Diff line number Diff line Loading @@ -1895,9 +1895,9 @@ public class ServiceStateTracker extends Handler { // Use default mNewSS.setCdmaRoamingIndicator(mDefaultRoamingIndicator); } else if (namMatch && !mIsInPrl) { // TODO this will be removed when we handle roaming on LTE on CDMA+LTE phones if (ServiceState.isLte(mNewSS.getRilVoiceRadioTechnology())) { log("Turn off roaming indicator as voice is LTE"); // TODO: remove when we handle roaming on LTE/NR on CDMA+LTE phones if (ServiceState.isPsOnlyTech(mNewSS.getRilVoiceRadioTechnology())) { log("Turn off roaming indicator as voice is LTE or NR"); mNewSS.setCdmaRoamingIndicator(EriInfo.ROAMING_INDICATOR_OFF); } else { mNewSS.setCdmaRoamingIndicator(EriInfo.ROAMING_INDICATOR_FLASH); Loading Loading @@ -2192,16 +2192,17 @@ public class ServiceStateTracker extends Handler { } else { // If the unsolicited signal strength comes just before data RAT family changes // (i.e. from UNKNOWN to LTE, CDMA to LTE, LTE to CDMA), the signal bar might // display the wrong information until the next unsolicited signal strength // information coming from the modem, which might take a long time to come or // even not come at all. In order to provide the best user experience, we // query the latest signal information so it will show up on the UI on time. // (i.e. from UNKNOWN to LTE/NR, CDMA to LTE/NR, LTE/NR to CDMA), the signal bar // might display the wrong information until the next unsolicited signal // strength information coming from the modem, which might take a long time to // come or even not come at all. In order to provide the best user experience, // we query the latest signal information so it will show up on the UI on time. int oldDataRAT = getRilDataRadioTechnologyForWwan(mSS); if (((oldDataRAT == ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN) && (newDataRat != ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)) || (ServiceState.isCdma(oldDataRAT) && ServiceState.isLte(newDataRat)) || (ServiceState.isLte(oldDataRAT) || (ServiceState.isCdma(oldDataRAT) && ServiceState.isPsOnlyTech(newDataRat)) || (ServiceState.isPsOnlyTech(oldDataRAT) && ServiceState.isCdma(newDataRat))) { mCi.getSignalStrength(obtainMessage(EVENT_GET_SIGNAL_STRENGTH)); } Loading Loading @@ -3109,7 +3110,8 @@ public class ServiceStateTracker extends Handler { + " oldMaxDataCalls=" + mMaxDataCalls + " mNewMaxDataCalls=" + mNewMaxDataCalls + " oldReasonDataDenied=" + mReasonDataDenied + " mNewReasonDataDenied=" + mNewReasonDataDenied); + " mNewReasonDataDeni" + "ed=" + mNewReasonDataDenied); } boolean hasRegistered = Loading Loading @@ -3226,16 +3228,14 @@ public class ServiceStateTracker extends Handler { final int wwanDataRat = getRilDataRadioTechnologyForWwan(mSS); final int newWwanDataRat = getRilDataRadioTechnologyForWwan(mNewSS); has4gHandoff = mNewSS.getDataRegState() == ServiceState.STATE_IN_SERVICE && ((ServiceState.isLte(wwanDataRat) && ((ServiceState.isPsOnlyTech(wwanDataRat) && (newWwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) || ((wwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD) && ServiceState.isLte(newWwanDataRat))); || ((wwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD) && ServiceState.isPsOnlyTech(newWwanDataRat))); hasMultiApnSupport = ((ServiceState.isLte(newWwanDataRat) hasMultiApnSupport = ((ServiceState.isPsOnlyTech(newWwanDataRat) || (newWwanDataRat == ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD)) && (!ServiceState.isLte(wwanDataRat) && (!ServiceState.isPsOnlyTech(wwanDataRat) && (wwanDataRat != ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD))); hasLostMultiApnSupport = ((newWwanDataRat >= ServiceState.RIL_RADIO_TECHNOLOGY_IS95A) Loading Loading @@ -3545,7 +3545,7 @@ public class ServiceStateTracker extends Handler { mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() != null; if (!hasBrandOverride && (mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) && (mEriManager.isEriFileLoaded()) && (!ServiceState.isLte(mSS.getRilVoiceRadioTechnology()) && (!ServiceState.isPsOnlyTech(mSS.getRilVoiceRadioTechnology()) || mPhone.getContext().getResources().getBoolean(com.android.internal.R .bool.config_LTE_eri_for_network_name))) { // Only when CDMA is in service, ERI will take effect Loading @@ -3570,7 +3570,7 @@ public class ServiceStateTracker extends Handler { if (mUiccApplcation != null && mUiccApplcation.getState() == AppState.APPSTATE_READY && mIccRecords != null && getCombinedRegState(mSS) == ServiceState.STATE_IN_SERVICE && !ServiceState.isLte(mSS.getRilVoiceRadioTechnology())) { && !ServiceState.isPsOnlyTech(mSS.getRilVoiceRadioTechnology())) { // SIM is found on the device. If ERI roaming is OFF, and SID/NID matches // one configured in SIM, use operator name from CSIM record. Note that ERI, SID, // and NID are CDMA only, not applicable to LTE. Loading
src/java/com/android/internal/telephony/cdma/CdmaSMSDispatcher.java +7 −5 Original line number Diff line number Diff line Loading @@ -147,8 +147,10 @@ public class CdmaSMSDispatcher extends SMSDispatcher { int currentDataNetwork = mPhone.getServiceState().getDataNetworkType(); boolean imsSmsDisabled = (currentDataNetwork == TelephonyManager.NETWORK_TYPE_EHRPD || (ServiceState.isLte(currentDataNetwork) && !mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed())) || (currentDataNetwork == TelephonyManager.NETWORK_TYPE_LTE || currentDataNetwork == TelephonyManager.NETWORK_TYPE_LTE_CA || currentDataNetwork == TelephonyManager.NETWORK_TYPE_NR) && !mPhone.getServiceStateTracker().isConcurrentVoiceAndDataAllowed()) && mPhone.getServiceState().getVoiceNetworkType() == TelephonyManager.NETWORK_TYPE_1xRTT && ((GsmCdmaPhone) mPhone).mCT.mState != PhoneConstants.State.IDLE; Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +1 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,7 @@ public class ServiceStateTest extends TestCase { rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_GSM, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN, false)); rats.add(new Pair<Integer, Boolean>(ServiceState.RIL_RADIO_TECHNOLOGY_NR, false)); for (Pair<Integer, Boolean> rat : rats) { boolean isCdma = rat.second; Loading