Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +31 −26 Original line number Diff line number Diff line Loading @@ -1724,21 +1724,22 @@ public class ServiceStateTracker extends Handler { int ints[]; switch (what) { case EVENT_POLL_STATE_REGISTRATION: { NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result; NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result; VoiceSpecificRegistrationStates voiceSpecificStates = regStates.getVoiceSpecificStates(); networkRegState.getVoiceSpecificStates(); int registrationState = regStates.getRegState(); int registrationState = networkRegState.getRegState(); int cssIndicator = voiceSpecificStates.cssSupported ? 1 : 0; int newVoiceRat = ServiceState.networkTypeToRilRadioTechnology( regStates.getAccessNetworkTechnology()); networkRegState.getAccessNetworkTechnology()); mNewSS.setVoiceRegState(regCodeToServiceState(registrationState)); mNewSS.setCssIndicator(cssIndicator); mNewSS.setRilVoiceRadioTechnology(newVoiceRat); mNewSS.addNetworkRegistrationState(networkRegState); //Denial reason if registrationState = 3 int reasonForDenial = regStates.getReasonForDenial(); int reasonForDenial = networkRegState.getReasonForDenial(); if (mPhone.isPhoneTypeGsm()) { mGsmRoaming = regCodeIsRoaming(registrationState); Loading @@ -1746,7 +1747,7 @@ public class ServiceStateTracker extends Handler { boolean isVoiceCapable = mPhone.getContext().getResources() .getBoolean(com.android.internal.R.bool.config_voice_capable); mEmergencyOnly = regStates.isEmergencyEnabled(); mEmergencyOnly = networkRegState.isEmergencyEnabled(); } else { int roamingIndicator = voiceSpecificStates.roamingIndicator; Loading @@ -1771,7 +1772,7 @@ public class ServiceStateTracker extends Handler { int systemId = 0; int networkId = 0; CellIdentity cellIdentity = regStates.getCellIdentity(); CellIdentity cellIdentity = networkRegState.getCellIdentity(); if (cellIdentity != null && cellIdentity.getType() == CellInfoType.CDMA) { systemId = ((CellIdentityCdma) cellIdentity).getSystemId(); networkId = ((CellIdentityCdma) cellIdentity).getNetworkId(); Loading @@ -1791,7 +1792,7 @@ public class ServiceStateTracker extends Handler { } } processCellLocationInfo(mNewCellLoc, regStates.getCellIdentity()); processCellLocationInfo(mNewCellLoc, networkRegState.getCellIdentity()); if (DBG) { log("handlPollVoiceRegResultMessage: regState=" + registrationState Loading @@ -1801,33 +1802,34 @@ public class ServiceStateTracker extends Handler { } case EVENT_POLL_STATE_GPRS: { NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result; NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result; DataSpecificRegistrationStates dataSpecificStates = regStates.getDataSpecificStates(); int regState = regStates.getRegState(); int serviceState = regCodeToServiceState(regState); networkRegState.getDataSpecificStates(); int registrationState = networkRegState.getRegState(); int serviceState = regCodeToServiceState(registrationState); int newDataRat = ServiceState.networkTypeToRilRadioTechnology( regStates.getAccessNetworkTechnology()); networkRegState.getAccessNetworkTechnology()); mNewSS.setDataRegState(serviceState); mNewSS.setRilDataRadioTechnology(newDataRat); mNewSS.addNetworkRegistrationState(networkRegState); if (mPhone.isPhoneTypeGsm()) { mNewReasonDataDenied = regStates.getReasonForDenial(); mNewReasonDataDenied = networkRegState.getReasonForDenial(); mNewMaxDataCalls = dataSpecificStates.maxDataCalls; mDataRoaming = regCodeIsRoaming(regState); mDataRoaming = regCodeIsRoaming(registrationState); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. mNewSS.setDataRoamingFromRegistration(mDataRoaming); if (DBG) { log("handlPollStateResultMessage: GsmSST dataServiceState=" + serviceState + " regState=" + regState + " regState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } else if (mPhone.isPhoneTypeCdma()) { boolean isDataRoaming = regCodeIsRoaming(regState); boolean isDataRoaming = regCodeIsRoaming(registrationState); mNewSS.setDataRoaming(isDataRoaming); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. Loading @@ -1835,7 +1837,7 @@ public class ServiceStateTracker extends Handler { if (DBG) { log("handlPollStateResultMessage: cdma dataServiceState=" + serviceState + " regState=" + regState + " regState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } else { Loading @@ -1856,19 +1858,20 @@ public class ServiceStateTracker extends Handler { } // voice roaming state in done while handling EVENT_POLL_STATE_REGISTRATION_CDMA boolean isDataRoaming = regCodeIsRoaming(regState); boolean isDataRoaming = regCodeIsRoaming(registrationState); mNewSS.setDataRoaming(isDataRoaming); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. mNewSS.setDataRoamingFromRegistration(isDataRoaming); if (DBG) { log("handlPollStateResultMessage: CdmaLteSST dataServiceState=" + serviceState + " regState=" + regState + " dataRadioTechnology=" + newDataRat); + serviceState + " registrationState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(regStates.getCellIdentity())); updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(networkRegState.getCellIdentity())); break; } Loading @@ -1878,8 +1881,9 @@ public class ServiceStateTracker extends Handler { if (opNames != null && opNames.length >= 3) { // FIXME: Giving brandOverride higher precedence, is this desired? String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null; String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()) .getOperatorBrandOverride() : null; if (brandOverride != null) { log("EVENT_POLL_STATE_OPERATOR: use brandOverride=" + brandOverride); mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]); Loading Loading @@ -1909,8 +1913,9 @@ public class ServiceStateTracker extends Handler { // NV device (as opposed to CSIM) mNewSS.setOperatorName(opNames[0], opNames[1], opNames[2]); } else { String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null; String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()) .getOperatorBrandOverride() : null; if (brandOverride != null) { mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]); } else { Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +43 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.internal.telephony; import android.os.Bundle; import android.os.Parcel; import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; Loading Loading @@ -264,4 +266,44 @@ public class ServiceStateTest extends TestCase { assertEquals(ss, newSs); } @SmallTest public void testNetworkRegistrationState() { NetworkRegistrationState wwanVoiceRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS, 0, 0, 0, false, null, null, true, 0, 0, 0); NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, false, null, null, 0); NetworkRegistrationState wlanRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, false, null, null); ServiceState ss = new ServiceState(); ss.addNetworkRegistrationState(wwanVoiceRegState); ss.addNetworkRegistrationState(wwanDataRegState); ss.addNetworkRegistrationState(wlanRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS), wwanVoiceRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS), wlanRegState); wwanDataRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, true, null, null, 0); ss.addNetworkRegistrationState(wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); } } Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +31 −26 Original line number Diff line number Diff line Loading @@ -1724,21 +1724,22 @@ public class ServiceStateTracker extends Handler { int ints[]; switch (what) { case EVENT_POLL_STATE_REGISTRATION: { NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result; NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result; VoiceSpecificRegistrationStates voiceSpecificStates = regStates.getVoiceSpecificStates(); networkRegState.getVoiceSpecificStates(); int registrationState = regStates.getRegState(); int registrationState = networkRegState.getRegState(); int cssIndicator = voiceSpecificStates.cssSupported ? 1 : 0; int newVoiceRat = ServiceState.networkTypeToRilRadioTechnology( regStates.getAccessNetworkTechnology()); networkRegState.getAccessNetworkTechnology()); mNewSS.setVoiceRegState(regCodeToServiceState(registrationState)); mNewSS.setCssIndicator(cssIndicator); mNewSS.setRilVoiceRadioTechnology(newVoiceRat); mNewSS.addNetworkRegistrationState(networkRegState); //Denial reason if registrationState = 3 int reasonForDenial = regStates.getReasonForDenial(); int reasonForDenial = networkRegState.getReasonForDenial(); if (mPhone.isPhoneTypeGsm()) { mGsmRoaming = regCodeIsRoaming(registrationState); Loading @@ -1746,7 +1747,7 @@ public class ServiceStateTracker extends Handler { boolean isVoiceCapable = mPhone.getContext().getResources() .getBoolean(com.android.internal.R.bool.config_voice_capable); mEmergencyOnly = regStates.isEmergencyEnabled(); mEmergencyOnly = networkRegState.isEmergencyEnabled(); } else { int roamingIndicator = voiceSpecificStates.roamingIndicator; Loading @@ -1771,7 +1772,7 @@ public class ServiceStateTracker extends Handler { int systemId = 0; int networkId = 0; CellIdentity cellIdentity = regStates.getCellIdentity(); CellIdentity cellIdentity = networkRegState.getCellIdentity(); if (cellIdentity != null && cellIdentity.getType() == CellInfoType.CDMA) { systemId = ((CellIdentityCdma) cellIdentity).getSystemId(); networkId = ((CellIdentityCdma) cellIdentity).getNetworkId(); Loading @@ -1791,7 +1792,7 @@ public class ServiceStateTracker extends Handler { } } processCellLocationInfo(mNewCellLoc, regStates.getCellIdentity()); processCellLocationInfo(mNewCellLoc, networkRegState.getCellIdentity()); if (DBG) { log("handlPollVoiceRegResultMessage: regState=" + registrationState Loading @@ -1801,33 +1802,34 @@ public class ServiceStateTracker extends Handler { } case EVENT_POLL_STATE_GPRS: { NetworkRegistrationState regStates = (NetworkRegistrationState) ar.result; NetworkRegistrationState networkRegState = (NetworkRegistrationState) ar.result; DataSpecificRegistrationStates dataSpecificStates = regStates.getDataSpecificStates(); int regState = regStates.getRegState(); int serviceState = regCodeToServiceState(regState); networkRegState.getDataSpecificStates(); int registrationState = networkRegState.getRegState(); int serviceState = regCodeToServiceState(registrationState); int newDataRat = ServiceState.networkTypeToRilRadioTechnology( regStates.getAccessNetworkTechnology()); networkRegState.getAccessNetworkTechnology()); mNewSS.setDataRegState(serviceState); mNewSS.setRilDataRadioTechnology(newDataRat); mNewSS.addNetworkRegistrationState(networkRegState); if (mPhone.isPhoneTypeGsm()) { mNewReasonDataDenied = regStates.getReasonForDenial(); mNewReasonDataDenied = networkRegState.getReasonForDenial(); mNewMaxDataCalls = dataSpecificStates.maxDataCalls; mDataRoaming = regCodeIsRoaming(regState); mDataRoaming = regCodeIsRoaming(registrationState); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. mNewSS.setDataRoamingFromRegistration(mDataRoaming); if (DBG) { log("handlPollStateResultMessage: GsmSST dataServiceState=" + serviceState + " regState=" + regState + " regState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } else if (mPhone.isPhoneTypeCdma()) { boolean isDataRoaming = regCodeIsRoaming(regState); boolean isDataRoaming = regCodeIsRoaming(registrationState); mNewSS.setDataRoaming(isDataRoaming); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. Loading @@ -1835,7 +1837,7 @@ public class ServiceStateTracker extends Handler { if (DBG) { log("handlPollStateResultMessage: cdma dataServiceState=" + serviceState + " regState=" + regState + " regState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } else { Loading @@ -1856,19 +1858,20 @@ public class ServiceStateTracker extends Handler { } // voice roaming state in done while handling EVENT_POLL_STATE_REGISTRATION_CDMA boolean isDataRoaming = regCodeIsRoaming(regState); boolean isDataRoaming = regCodeIsRoaming(registrationState); mNewSS.setDataRoaming(isDataRoaming); // Save the data roaming state reported by modem registration before resource // overlay or carrier config possibly overrides it. mNewSS.setDataRoamingFromRegistration(isDataRoaming); if (DBG) { log("handlPollStateResultMessage: CdmaLteSST dataServiceState=" + serviceState + " regState=" + regState + " dataRadioTechnology=" + newDataRat); + serviceState + " registrationState=" + registrationState + " dataRadioTechnology=" + newDataRat); } } updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(regStates.getCellIdentity())); updateServiceStateLteEarfcnBoost(mNewSS, getLteEarfcn(networkRegState.getCellIdentity())); break; } Loading @@ -1878,8 +1881,9 @@ public class ServiceStateTracker extends Handler { if (opNames != null && opNames.length >= 3) { // FIXME: Giving brandOverride higher precedence, is this desired? String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null; String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()) .getOperatorBrandOverride() : null; if (brandOverride != null) { log("EVENT_POLL_STATE_OPERATOR: use brandOverride=" + brandOverride); mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]); Loading Loading @@ -1909,8 +1913,9 @@ public class ServiceStateTracker extends Handler { // NV device (as opposed to CSIM) mNewSS.setOperatorName(opNames[0], opNames[1], opNames[2]); } else { String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()).getOperatorBrandOverride() : null; String brandOverride = mUiccController.getUiccCard(getPhoneId()) != null ? mUiccController.getUiccCard(getPhoneId()) .getOperatorBrandOverride() : null; if (brandOverride != null) { mNewSS.setOperatorName(brandOverride, brandOverride, opNames[2]); } else { Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +43 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,8 @@ package com.android.internal.telephony; import android.os.Bundle; import android.os.Parcel; import android.telephony.AccessNetworkConstants; import android.telephony.NetworkRegistrationState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; Loading Loading @@ -264,4 +266,44 @@ public class ServiceStateTest extends TestCase { assertEquals(ss, newSs); } @SmallTest public void testNetworkRegistrationState() { NetworkRegistrationState wwanVoiceRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS, 0, 0, 0, false, null, null, true, 0, 0, 0); NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, false, null, null, 0); NetworkRegistrationState wlanRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, false, null, null); ServiceState ss = new ServiceState(); ss.addNetworkRegistrationState(wwanVoiceRegState); ss.addNetworkRegistrationState(wwanDataRegState); ss.addNetworkRegistrationState(wlanRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_CS), wwanVoiceRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WLAN, NetworkRegistrationState.DOMAIN_PS), wlanRegState); wwanDataRegState = new NetworkRegistrationState( AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS, 0, 0, 0, true, null, null, 0); ss.addNetworkRegistrationState(wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(AccessNetworkConstants.TransportType.WWAN, NetworkRegistrationState.DOMAIN_PS), wwanDataRegState); } }