Loading src/java/com/android/internal/telephony/RatRatcheter.java +17 −4 Original line number Diff line number Diff line Loading @@ -21,13 +21,14 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.PersistableBundle; import android.os.UserHandle; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.telephony.NetworkRegistrationInfo; import android.telephony.Rlog; import android.telephony.ServiceState; import android.util.SparseArray; import android.util.SparseIntArray; import java.util.ArrayList; import java.util.Arrays; /** Loading Loading @@ -118,7 +119,13 @@ public class RatRatcheter { if (mVoiceRatchetEnabled) { int newVoiceRat = ratchetRat(oldSS.getRilVoiceRadioTechnology(), newSS.getRilVoiceRadioTechnology()); newSS.setRilVoiceRadioTechnology(newVoiceRat); NetworkRegistrationInfo nri = newSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nri != null) { nri.setAccessNetworkTechnology( ServiceState.rilRadioTechnologyToNetworkType(newVoiceRat)); newSS.addNetworkRegistrationInfo(nri); } } else if (oldSS.getRilVoiceRadioTechnology() != newSS.getRilVoiceRadioTechnology()) { // resume rat ratchet on following rat change within the same location mVoiceRatchetEnabled = true; Loading @@ -127,7 +134,13 @@ public class RatRatcheter { if (mDataRatchetEnabled) { int newDataRat = ratchetRat(oldSS.getRilDataRadioTechnology(), newSS.getRilDataRadioTechnology()); newSS.setRilDataRadioTechnology(newDataRat); NetworkRegistrationInfo nri = newSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nri != null) { nri.setAccessNetworkTechnology( ServiceState.rilRadioTechnologyToNetworkType(newDataRat)); newSS.addNetworkRegistrationInfo(nri); } } else if (oldSS.getRilDataRadioTechnology() != newSS.getRilDataRadioTechnology()) { // resume rat ratchet on following rat change within the same location mDataRatchetEnabled = true; Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +54 −11 Original line number Diff line number Diff line Loading @@ -1988,7 +1988,6 @@ public class ServiceStateTracker extends Handler { == TelephonyManager.NETWORK_TYPE_IWLAN && wlanPsRegState.getRegistrationState() == NetworkRegistrationInfo.REGISTRATION_STATE_HOME) { serviceState.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); serviceState.setDataRegState(ServiceState.STATE_IN_SERVICE); } else if (wwanPsRegState != null) { // If the device is not camped on IWLAN, then we use cellular PS registration state Loading @@ -1997,7 +1996,6 @@ public class ServiceStateTracker extends Handler { int dataRat = ServiceState.networkTypeToRilRadioTechnology( wwanPsRegState.getAccessNetworkTechnology()); serviceState.setDataRegState(regCodeToServiceState(regState)); serviceState.setRilDataRadioTechnology(dataRat); } if (DBG) { log("combinePsRegistrationStates: " + serviceState); Loading @@ -2019,7 +2017,6 @@ public class ServiceStateTracker extends Handler { mNewSS.setVoiceRegState(regCodeToServiceState(registrationState)); mNewSS.setCssIndicator(cssIndicator); mNewSS.setRilVoiceRadioTechnology(newVoiceRat); mNewSS.addNetworkRegistrationInfo(networkRegState); setPhyCellInfoFromCellIdentity(mNewSS, networkRegState.getCellIdentity()); Loading Loading @@ -2153,8 +2150,6 @@ public class ServiceStateTracker extends Handler { updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(networkRegState.getCellIdentity())); mNewSS.setIsUsingCarrierAggregation(dataSpecificStates.isUsingCarrierAggregation); break; } Loading Loading @@ -2671,7 +2666,7 @@ public class ServiceStateTracker extends Handler { plmn = String.format(wfcVoiceSpnFormat, originalPlmn); } else if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) { // todo: temporary hack; should have a better fix. This is to avoid using operator // name from ServiceState (populated in resetServiceStateInIwlanMode()) until // name from ServiceState (populated in processIwlanRegistrationInfo()) until // wifi calling is actually enabled log("updateSpnDisplay: overwriting plmn from " + plmn + " to null as radio " + "state is off"); Loading Loading @@ -2992,7 +2987,7 @@ public class ServiceStateTracker extends Handler { mNewSS.setDataRoaming(true); } useDataRegStateForDataOnlyDevices(); resetServiceStateInIwlanMode(); processIwlanRegistrationInfo(); if (Build.IS_DEBUGGABLE && mPhone.mTelephonyTester != null) { mPhone.mTelephonyTester.overrideServiceState(mNewSS); Loading Loading @@ -5044,8 +5039,13 @@ public class ServiceStateTracker extends Handler { /* Reset Service state when IWLAN is enabled as polling in airplane mode * causes state to go to OUT_OF_SERVICE state instead of STATE_OFF */ @UnsupportedAppUsage protected void resetServiceStateInIwlanMode() { /** * This method adds IWLAN registration info for legacy mode devices camped on IWLAN. It also * makes some adjustments when the device camps on IWLAN in airplane mode. */ private void processIwlanRegistrationInfo() { if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) { boolean resetIwlanRatVal = false; log("set service state as POWER_OFF"); Loading @@ -5059,11 +5059,54 @@ public class ServiceStateTracker extends Handler { String operator = mNewSS.getOperatorAlphaLong(); mNewSS.setStateOff(); if (resetIwlanRatVal) { mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); if (mTransportManager.isInLegacyMode()) { // If in legacy mode, simulate the behavior that IWLAN registration info // is reported through WWAN transport. nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); } mNewSS.setOperatorAlphaLong(operator); log("pollStateDone: mNewSS = " + mNewSS); } return; } // If the device operates in legacy mode and camps on IWLAN, modem reports IWLAN as a RAT // through WWAN registration info. To be consistent with the behavior with AP-assisted mode, // we manually make a WLAN registration info for clients to consume. In this scenario, // both WWAN and WLAN registration info are the IWLAN registration info and that's the // unfortunate limitation we have when the device operates in legacy mode. In AP-assisted // mode, the WWAN registration will correctly report the actual cellular registration info // when the device camps on IWLAN. if (mTransportManager.isInLegacyMode()) { NetworkRegistrationInfo wwanNri = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (wwanNri != null && wwanNri.getAccessNetworkTechnology() == TelephonyManager.NETWORK_TYPE_IWLAN) { NetworkRegistrationInfo wlanNri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setRegistrationState(wwanNri.getRegistrationState()) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRejectCause(wwanNri.getRejectCause()) .setEmergencyOnly(wwanNri.isEmergencyEnabled()) .setAvailableServices(wwanNri.getAvailableServices()) .build(); mSS.addNetworkRegistrationInfo(wlanNri); } } } Loading src/java/com/android/internal/telephony/TelephonyTester.java +5 −2 Original line number Diff line number Diff line Loading @@ -363,7 +363,10 @@ public class TelephonyTester { log("Service state override reset"); return; } if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_REG_STATE)) { // TODO: Fix this with modifing NetworkRegistrationInfo inside ServiceState. Do not call // ServiceState's set methods directly. /*if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_REG_STATE)) { ss.setVoiceRegState(mServiceStateTestIntent.getIntExtra(EXTRA_VOICE_REG_STATE, ServiceState.STATE_OUT_OF_SERVICE)); log("Override voice service state with " + ss.getVoiceRegState()); Loading @@ -382,7 +385,7 @@ public class TelephonyTester { ss.setRilDataRadioTechnology(mServiceStateTestIntent.getIntExtra(EXTRA_DATA_RAT, ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)); log("Override data rat with " + ss.getRilDataRadioTechnology()); } }*/ if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_ROAMING_TYPE)) { ss.setVoiceRoamingType(mServiceStateTestIntent.getIntExtra(EXTRA_VOICE_ROAMING_TYPE, ServiceState.ROAMING_TYPE_UNKNOWN)); Loading src/java/com/android/internal/telephony/imsphone/ImsPhone.java +7 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import android.os.ResultReceiver; import android.os.SystemProperties; import android.os.UserHandle; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.PhoneNumberUtils; import android.telephony.Rlog; import android.telephony.ServiceState; Loading Loading @@ -1422,7 +1423,12 @@ public class ImsPhone extends ImsPhoneBase { && mDefaultPhone.getServiceStateTracker().mSS != null) { ServiceState ss = mDefaultPhone.getServiceStateTracker().mSS; mSS.setDataRegState(ss.getDataRegState()); mSS.setRilDataRadioTechnology(ss.getRilDataRadioTechnology()); List<NetworkRegistrationInfo> nriList = ss.getNetworkRegistrationInfoListForDomain(NetworkRegistrationInfo.DOMAIN_PS); for (NetworkRegistrationInfo nri : nriList) { mSS.addNetworkRegistrationInfo(nri); } logd("updateDataServiceState: defSs = " + ss + " imsSs = " + mSS); } } Loading tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +15 −8 Original line number Diff line number Diff line Loading @@ -49,10 +49,13 @@ import android.os.Message; import android.os.Process; import android.os.WorkSource; import android.preference.PreferenceManager; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellLocation; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; import android.test.suitebuilder.annotation.SmallTest; Loading Loading @@ -950,22 +953,26 @@ public class GsmCdmaPhoneTest extends TelephonyTest { // vrs in-service, vrat umts, expected umts ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_CS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS) .build(); ss.addNetworkRegistrationInfo(nri); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); // vrs oos, vrat umts, expected unknown ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); // vrs in-service, vrat lte, expected unknown ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); // vrs in-service, vrat iwlan, expected unknown ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_CS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); ss.addNetworkRegistrationInfo(nri); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); } } Loading
src/java/com/android/internal/telephony/RatRatcheter.java +17 −4 Original line number Diff line number Diff line Loading @@ -21,13 +21,14 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.PersistableBundle; import android.os.UserHandle; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.ServiceState; import android.telephony.NetworkRegistrationInfo; import android.telephony.Rlog; import android.telephony.ServiceState; import android.util.SparseArray; import android.util.SparseIntArray; import java.util.ArrayList; import java.util.Arrays; /** Loading Loading @@ -118,7 +119,13 @@ public class RatRatcheter { if (mVoiceRatchetEnabled) { int newVoiceRat = ratchetRat(oldSS.getRilVoiceRadioTechnology(), newSS.getRilVoiceRadioTechnology()); newSS.setRilVoiceRadioTechnology(newVoiceRat); NetworkRegistrationInfo nri = newSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_CS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nri != null) { nri.setAccessNetworkTechnology( ServiceState.rilRadioTechnologyToNetworkType(newVoiceRat)); newSS.addNetworkRegistrationInfo(nri); } } else if (oldSS.getRilVoiceRadioTechnology() != newSS.getRilVoiceRadioTechnology()) { // resume rat ratchet on following rat change within the same location mVoiceRatchetEnabled = true; Loading @@ -127,7 +134,13 @@ public class RatRatcheter { if (mDataRatchetEnabled) { int newDataRat = ratchetRat(oldSS.getRilDataRadioTechnology(), newSS.getRilDataRadioTechnology()); newSS.setRilDataRadioTechnology(newDataRat); NetworkRegistrationInfo nri = newSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (nri != null) { nri.setAccessNetworkTechnology( ServiceState.rilRadioTechnologyToNetworkType(newDataRat)); newSS.addNetworkRegistrationInfo(nri); } } else if (oldSS.getRilDataRadioTechnology() != newSS.getRilDataRadioTechnology()) { // resume rat ratchet on following rat change within the same location mDataRatchetEnabled = true; Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +54 −11 Original line number Diff line number Diff line Loading @@ -1988,7 +1988,6 @@ public class ServiceStateTracker extends Handler { == TelephonyManager.NETWORK_TYPE_IWLAN && wlanPsRegState.getRegistrationState() == NetworkRegistrationInfo.REGISTRATION_STATE_HOME) { serviceState.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); serviceState.setDataRegState(ServiceState.STATE_IN_SERVICE); } else if (wwanPsRegState != null) { // If the device is not camped on IWLAN, then we use cellular PS registration state Loading @@ -1997,7 +1996,6 @@ public class ServiceStateTracker extends Handler { int dataRat = ServiceState.networkTypeToRilRadioTechnology( wwanPsRegState.getAccessNetworkTechnology()); serviceState.setDataRegState(regCodeToServiceState(regState)); serviceState.setRilDataRadioTechnology(dataRat); } if (DBG) { log("combinePsRegistrationStates: " + serviceState); Loading @@ -2019,7 +2017,6 @@ public class ServiceStateTracker extends Handler { mNewSS.setVoiceRegState(regCodeToServiceState(registrationState)); mNewSS.setCssIndicator(cssIndicator); mNewSS.setRilVoiceRadioTechnology(newVoiceRat); mNewSS.addNetworkRegistrationInfo(networkRegState); setPhyCellInfoFromCellIdentity(mNewSS, networkRegState.getCellIdentity()); Loading Loading @@ -2153,8 +2150,6 @@ public class ServiceStateTracker extends Handler { updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(networkRegState.getCellIdentity())); mNewSS.setIsUsingCarrierAggregation(dataSpecificStates.isUsingCarrierAggregation); break; } Loading Loading @@ -2671,7 +2666,7 @@ public class ServiceStateTracker extends Handler { plmn = String.format(wfcVoiceSpnFormat, originalPlmn); } else if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) { // todo: temporary hack; should have a better fix. This is to avoid using operator // name from ServiceState (populated in resetServiceStateInIwlanMode()) until // name from ServiceState (populated in processIwlanRegistrationInfo()) until // wifi calling is actually enabled log("updateSpnDisplay: overwriting plmn from " + plmn + " to null as radio " + "state is off"); Loading Loading @@ -2992,7 +2987,7 @@ public class ServiceStateTracker extends Handler { mNewSS.setDataRoaming(true); } useDataRegStateForDataOnlyDevices(); resetServiceStateInIwlanMode(); processIwlanRegistrationInfo(); if (Build.IS_DEBUGGABLE && mPhone.mTelephonyTester != null) { mPhone.mTelephonyTester.overrideServiceState(mNewSS); Loading Loading @@ -5044,8 +5039,13 @@ public class ServiceStateTracker extends Handler { /* Reset Service state when IWLAN is enabled as polling in airplane mode * causes state to go to OUT_OF_SERVICE state instead of STATE_OFF */ @UnsupportedAppUsage protected void resetServiceStateInIwlanMode() { /** * This method adds IWLAN registration info for legacy mode devices camped on IWLAN. It also * makes some adjustments when the device camps on IWLAN in airplane mode. */ private void processIwlanRegistrationInfo() { if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) { boolean resetIwlanRatVal = false; log("set service state as POWER_OFF"); Loading @@ -5059,11 +5059,54 @@ public class ServiceStateTracker extends Handler { String operator = mNewSS.getOperatorAlphaLong(); mNewSS.setStateOff(); if (resetIwlanRatVal) { mNewSS.setRilDataRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); mNewSS.setDataRegState(ServiceState.STATE_IN_SERVICE); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); if (mTransportManager.isInLegacyMode()) { // If in legacy mode, simulate the behavior that IWLAN registration info // is reported through WWAN transport. nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_HOME) .build(); mNewSS.addNetworkRegistrationInfo(nri); } mNewSS.setOperatorAlphaLong(operator); log("pollStateDone: mNewSS = " + mNewSS); } return; } // If the device operates in legacy mode and camps on IWLAN, modem reports IWLAN as a RAT // through WWAN registration info. To be consistent with the behavior with AP-assisted mode, // we manually make a WLAN registration info for clients to consume. In this scenario, // both WWAN and WLAN registration info are the IWLAN registration info and that's the // unfortunate limitation we have when the device operates in legacy mode. In AP-assisted // mode, the WWAN registration will correctly report the actual cellular registration info // when the device camps on IWLAN. if (mTransportManager.isInLegacyMode()) { NetworkRegistrationInfo wwanNri = mSS.getNetworkRegistrationInfo( NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); if (wwanNri != null && wwanNri.getAccessNetworkTechnology() == TelephonyManager.NETWORK_TYPE_IWLAN) { NetworkRegistrationInfo wlanNri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN) .setDomain(NetworkRegistrationInfo.DOMAIN_PS) .setRegistrationState(wwanNri.getRegistrationState()) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_IWLAN) .setRejectCause(wwanNri.getRejectCause()) .setEmergencyOnly(wwanNri.isEmergencyEnabled()) .setAvailableServices(wwanNri.getAvailableServices()) .build(); mSS.addNetworkRegistrationInfo(wlanNri); } } } Loading
src/java/com/android/internal/telephony/TelephonyTester.java +5 −2 Original line number Diff line number Diff line Loading @@ -363,7 +363,10 @@ public class TelephonyTester { log("Service state override reset"); return; } if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_REG_STATE)) { // TODO: Fix this with modifing NetworkRegistrationInfo inside ServiceState. Do not call // ServiceState's set methods directly. /*if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_REG_STATE)) { ss.setVoiceRegState(mServiceStateTestIntent.getIntExtra(EXTRA_VOICE_REG_STATE, ServiceState.STATE_OUT_OF_SERVICE)); log("Override voice service state with " + ss.getVoiceRegState()); Loading @@ -382,7 +385,7 @@ public class TelephonyTester { ss.setRilDataRadioTechnology(mServiceStateTestIntent.getIntExtra(EXTRA_DATA_RAT, ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN)); log("Override data rat with " + ss.getRilDataRadioTechnology()); } }*/ if (mServiceStateTestIntent.hasExtra(EXTRA_VOICE_ROAMING_TYPE)) { ss.setVoiceRoamingType(mServiceStateTestIntent.getIntExtra(EXTRA_VOICE_ROAMING_TYPE, ServiceState.ROAMING_TYPE_UNKNOWN)); Loading
src/java/com/android/internal/telephony/imsphone/ImsPhone.java +7 −1 Original line number Diff line number Diff line Loading @@ -61,6 +61,7 @@ import android.os.ResultReceiver; import android.os.SystemProperties; import android.os.UserHandle; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.PhoneNumberUtils; import android.telephony.Rlog; import android.telephony.ServiceState; Loading Loading @@ -1422,7 +1423,12 @@ public class ImsPhone extends ImsPhoneBase { && mDefaultPhone.getServiceStateTracker().mSS != null) { ServiceState ss = mDefaultPhone.getServiceStateTracker().mSS; mSS.setDataRegState(ss.getDataRegState()); mSS.setRilDataRadioTechnology(ss.getRilDataRadioTechnology()); List<NetworkRegistrationInfo> nriList = ss.getNetworkRegistrationInfoListForDomain(NetworkRegistrationInfo.DOMAIN_PS); for (NetworkRegistrationInfo nri : nriList) { mSS.addNetworkRegistrationInfo(nri); } logd("updateDataServiceState: defSs = " + ss + " imsSs = " + mSS); } } Loading
tests/telephonytests/src/com/android/internal/telephony/GsmCdmaPhoneTest.java +15 −8 Original line number Diff line number Diff line Loading @@ -49,10 +49,13 @@ import android.os.Message; import android.os.Process; import android.os.WorkSource; import android.preference.PreferenceManager; import android.telephony.AccessNetworkConstants; import android.telephony.CarrierConfigManager; import android.telephony.CellLocation; import android.telephony.NetworkRegistrationInfo; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; import android.test.suitebuilder.annotation.SmallTest; Loading Loading @@ -950,22 +953,26 @@ public class GsmCdmaPhoneTest extends TelephonyTest { // vrs in-service, vrat umts, expected umts ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_CS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_UMTS) .build(); ss.addNetworkRegistrationInfo(nri); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); // vrs oos, vrat umts, expected unknown ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); // vrs in-service, vrat lte, expected unknown ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_LTE); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); // vrs in-service, vrat iwlan, expected unknown ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setRilVoiceRadioTechnology(ServiceState.RIL_RADIO_TECHNOLOGY_IWLAN); nri = new NetworkRegistrationInfo.Builder() .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDomain(NetworkRegistrationInfo.DOMAIN_CS) .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE) .build(); ss.addNetworkRegistrationInfo(nri); assertEquals(mPhoneUT.getCsCallRadioTech(), ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); } }