Loading src/java/com/android/internal/telephony/CellularNetworkService.java +38 −5 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CellIdentity; import android.telephony.CellIdentityCdma; Loading @@ -30,6 +31,7 @@ import android.telephony.CellIdentityGsm; import android.telephony.CellIdentityLte; import android.telephony.CellIdentityTdscdma; import android.telephony.CellIdentityWcdma; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.NetworkServiceCallback; Loading Loading @@ -271,11 +273,14 @@ public class CellularNetworkService extends NetworkService { int[] availableServices = getAvailableServices(regState, domain, emergencyOnly); CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.cellIdentity); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, false /* isDcNrRestricted */, false /* isNrAvailable */, false /* isEnDcAvailable */); false /* isNrAvailable */, false /* isEnDcAvailable */, lteVopsSupportInfo); } else if (result instanceof android.hardware.radio.V1_2.DataRegStateResult) { android.hardware.radio.V1_2.DataRegStateResult dataRegState = (android.hardware.radio.V1_2.DataRegStateResult) result; Loading @@ -287,17 +292,20 @@ public class CellularNetworkService extends NetworkService { int[] availableServices = getAvailableServices(regState, domain, emergencyOnly); CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.cellIdentity); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, false /* isDcNrRestricted */, false /* isNrAvailable */, false /* isEnDcAvailable */); false /* isNrAvailable */, false /* isEnDcAvailable */, lteVopsSupportInfo); } else if (result instanceof android.hardware.radio.V1_4.DataRegStateResult) { android.hardware.radio.V1_4.DataRegStateResult dataRegState = (android.hardware.radio.V1_4.DataRegStateResult) result; int regState = getRegStateFromHalRegState(dataRegState.base.regState); int accessNetworkTechnology = getAccessNetworkTechnologyFromRat(dataRegState.base.rat); LteVopsSupportInfo lteVopsSupportInfo = null; int reasonForDenial = dataRegState.base.reasonDataDenied; boolean emergencyOnly = isEmergencyOnly(dataRegState.base.regState); int maxDataCalls = dataRegState.base.maxDataCalls; Loading @@ -305,15 +313,40 @@ public class CellularNetworkService extends NetworkService { CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.base.cellIdentity); android.hardware.radio.V1_4.NrIndicators nrIndicators = dataRegState.nrIndicators; if (AccessNetworkType.EUTRAN == accessNetworkTechnology) { android.hardware.radio.V1_4.LteVopsInfo vopsSupport = dataRegState.vopsInfo.lteVopsInfo(); lteVopsSupportInfo = convertHalLteVopsSupportInfo(vopsSupport.isVopsSupported, vopsSupport.isEmcBearerSupported); } else { lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); } return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, nrIndicators.isDcNrRestricted, nrIndicators.isNrAvailable, nrIndicators.isEndcAvailable); nrIndicators.isNrAvailable, nrIndicators.isEndcAvailable, lteVopsSupportInfo); } return null; } private LteVopsSupportInfo convertHalLteVopsSupportInfo( boolean vopsSupport, boolean emcBearerSupport) { int vops = LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED; int emergency = LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED; if (vopsSupport) { vops = LteVopsSupportInfo.LTE_STATUS_SUPPORTED; } if (emcBearerSupport) { emergency = LteVopsSupportInfo.LTE_STATUS_SUPPORTED; } return new LteVopsSupportInfo(vops, emergency); } private CellIdentity convertHalCellIdentityToCellIdentity( android.hardware.radio.V1_0.CellIdentity cellIdentity) { if (cellIdentity == null) { Loading src/java/com/android/internal/telephony/RadioResponse.java +18 −0 Original line number Diff line number Diff line Loading @@ -348,6 +348,24 @@ public class RadioResponse extends IRadioResponse.Stub { } } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in * 1.4/types.hal */ public void getDataRegistrationStateResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.DataRegStateResult dataRegResponse) { RILRequest rr = mRil.processResponse(responseInfo); if (rr != null) { if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dataRegResponse); } mRil.processResponseDone(rr, responseInfo, dataRegResponse); } } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param longName is long alpha ONS or EONS or empty string if unregistered Loading tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.os.RemoteException; import android.telephony.AccessNetworkConstants; import android.telephony.INetworkService; import android.telephony.INetworkServiceCallback; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.NetworkServiceCallback; Loading Loading @@ -154,10 +155,15 @@ public class CellularNetworkServiceTest extends TelephonyTest { waitForMs(1000); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); expectedState = new NetworkRegistrationState( domain, AccessNetworkConstants.TransportType.WWAN, voiceRegState, ServiceState.rilRadioTechnologyToNetworkType(voiceRadioTech), reasonForDenial, false, availableServices, null, maxDataCalls, false, false, false); false, availableServices, null, maxDataCalls, false, false, false, lteVopsSupportInfo); try { verify(mCallback, times(1)).onGetNetworkRegistrationStateComplete( Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.telephony; import android.os.Bundle; import android.os.Parcel; import android.telephony.AccessNetworkConstants; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; Loading Loading @@ -288,10 +289,13 @@ public class ServiceStateTest extends TestCase { 0, 0, 0, false, null, null, true, 0, 0, 0); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN, 0, 0, 0, false, null, null, 0, false, false, false); 0, 0, 0, false, null, null, 0, false, false, false, lteVopsSupportInfo); NetworkRegistrationState wlanRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WLAN, Loading @@ -313,7 +317,7 @@ public class ServiceStateTest extends TestCase { wwanDataRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN, 0, 0, 0, true, null, null, 0, false, false, false); 0, 0, 0, true, null, null, 0, false, false, false, lteVopsSupportInfo); ss.addNetworkRegistrationState(wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN), wwanDataRegState); Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +66 −4 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import android.telephony.CellSignalStrengthLte; import android.telephony.CellSignalStrengthTdscdma; import android.telephony.CellSignalStrengthWcdma; import android.telephony.INetworkService; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.PhysicalChannelConfig; Loading Loading @@ -484,8 +485,8 @@ public class ServiceStateTrackerTest extends TelephonyTest { // The service state of GsmCdmaPhone is STATE_OUT_OF_SERVICE, and IMS is unregistered. ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); sst.mSS = ss; sst.mSS = ss; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_IMS_SERVICE_STATE_CHANGED)); waitForMs(200); Loading Loading @@ -1570,8 +1571,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { } private void changeRegState(int state, CellIdentity cid, int voiceRat, int dataRat) { LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 0, 0, state, dataRat, 0, false, null, cid, 1, false, false, false); 0, 0, state, dataRat, 0, false, null, cid, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 2; // update data reg state to be in service sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, Loading Loading @@ -1661,9 +1666,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { } private void sendRegStateUpdateForLteCellId(CellIdentityLte cellId) { LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false); false, false, false, lteVopsSupportInfo); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, false, 0, 0, 0); Loading Loading @@ -1725,9 +1733,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Test public void testPhyChanBandwidthResetsOnOos() throws Exception { testPhyChanBandwidthRatchetedOnPhyChanBandwidth(); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 0, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0, false, null, null, 1, false, false, false); false, false, lteVopsSupportInfo); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 0, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0, false, null, null, false, 0, 0, 0); Loading Loading @@ -1785,4 +1796,55 @@ public class ServiceStateTrackerTest extends TelephonyTest { doReturn(true).when(mRuimRecords).isProvisioned(); assertEquals(mockMdn, sst.getMdnNumber()); } @Test @SmallTest public void testOnVopsInfoChanged() { ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setDataRegState(ServiceState.STATE_IN_SERVICE); sst.mSS = ss; CellIdentityLte cellId = new CellIdentityLte(1, 1, 5, 1, 5000, "001", "01", "test", "tst"); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED, LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 2; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, new AsyncResult(sst.mPollingContext, dataResult, null))); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, false, 0, 0, 0); sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_REGISTRATION, new AsyncResult(sst.mPollingContext, voiceResult, null))); waitForMs(200); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCurrentDataConnectionState()); NetworkRegistrationState sSnetworkRegistrationState = sst.mSS.getNetworkRegistrationState(2, 1); assertEquals(lteVopsSupportInfo, sSnetworkRegistrationState.getDataSpecificStates().lteVopsSupportInfo); lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_SUPPORTED, LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED); dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 1; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, new AsyncResult(sst.mPollingContext, dataResult, null))); waitForMs(200); sSnetworkRegistrationState = sst.mSS.getNetworkRegistrationState(2, 1); assertEquals(lteVopsSupportInfo, sSnetworkRegistrationState.getDataSpecificStates().lteVopsSupportInfo); } } Loading
src/java/com/android/internal/telephony/CellularNetworkService.java +38 −5 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.telephony.AccessNetworkConstants.AccessNetworkType; import android.telephony.AccessNetworkConstants.TransportType; import android.telephony.CellIdentity; import android.telephony.CellIdentityCdma; Loading @@ -30,6 +31,7 @@ import android.telephony.CellIdentityGsm; import android.telephony.CellIdentityLte; import android.telephony.CellIdentityTdscdma; import android.telephony.CellIdentityWcdma; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.NetworkServiceCallback; Loading Loading @@ -271,11 +273,14 @@ public class CellularNetworkService extends NetworkService { int[] availableServices = getAvailableServices(regState, domain, emergencyOnly); CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.cellIdentity); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, false /* isDcNrRestricted */, false /* isNrAvailable */, false /* isEnDcAvailable */); false /* isNrAvailable */, false /* isEnDcAvailable */, lteVopsSupportInfo); } else if (result instanceof android.hardware.radio.V1_2.DataRegStateResult) { android.hardware.radio.V1_2.DataRegStateResult dataRegState = (android.hardware.radio.V1_2.DataRegStateResult) result; Loading @@ -287,17 +292,20 @@ public class CellularNetworkService extends NetworkService { int[] availableServices = getAvailableServices(regState, domain, emergencyOnly); CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.cellIdentity); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, false /* isDcNrRestricted */, false /* isNrAvailable */, false /* isEnDcAvailable */); false /* isNrAvailable */, false /* isEnDcAvailable */, lteVopsSupportInfo); } else if (result instanceof android.hardware.radio.V1_4.DataRegStateResult) { android.hardware.radio.V1_4.DataRegStateResult dataRegState = (android.hardware.radio.V1_4.DataRegStateResult) result; int regState = getRegStateFromHalRegState(dataRegState.base.regState); int accessNetworkTechnology = getAccessNetworkTechnologyFromRat(dataRegState.base.rat); LteVopsSupportInfo lteVopsSupportInfo = null; int reasonForDenial = dataRegState.base.reasonDataDenied; boolean emergencyOnly = isEmergencyOnly(dataRegState.base.regState); int maxDataCalls = dataRegState.base.maxDataCalls; Loading @@ -305,15 +313,40 @@ public class CellularNetworkService extends NetworkService { CellIdentity cellIdentity = convertHalCellIdentityToCellIdentity(dataRegState.base.cellIdentity); android.hardware.radio.V1_4.NrIndicators nrIndicators = dataRegState.nrIndicators; if (AccessNetworkType.EUTRAN == accessNetworkTechnology) { android.hardware.radio.V1_4.LteVopsInfo vopsSupport = dataRegState.vopsInfo.lteVopsInfo(); lteVopsSupportInfo = convertHalLteVopsSupportInfo(vopsSupport.isVopsSupported, vopsSupport.isEmcBearerSupported); } else { lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); } return new NetworkRegistrationState(domain, transportType, regState, accessNetworkTechnology, reasonForDenial, emergencyOnly, availableServices, cellIdentity, maxDataCalls, nrIndicators.isDcNrRestricted, nrIndicators.isNrAvailable, nrIndicators.isEndcAvailable); nrIndicators.isNrAvailable, nrIndicators.isEndcAvailable, lteVopsSupportInfo); } return null; } private LteVopsSupportInfo convertHalLteVopsSupportInfo( boolean vopsSupport, boolean emcBearerSupport) { int vops = LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED; int emergency = LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED; if (vopsSupport) { vops = LteVopsSupportInfo.LTE_STATUS_SUPPORTED; } if (emcBearerSupport) { emergency = LteVopsSupportInfo.LTE_STATUS_SUPPORTED; } return new LteVopsSupportInfo(vops, emergency); } private CellIdentity convertHalCellIdentityToCellIdentity( android.hardware.radio.V1_0.CellIdentity cellIdentity) { if (cellIdentity == null) { Loading
src/java/com/android/internal/telephony/RadioResponse.java +18 −0 Original line number Diff line number Diff line Loading @@ -348,6 +348,24 @@ public class RadioResponse extends IRadioResponse.Stub { } } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in * 1.4/types.hal */ public void getDataRegistrationStateResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.DataRegStateResult dataRegResponse) { RILRequest rr = mRil.processResponse(responseInfo); if (rr != null) { if (responseInfo.error == RadioError.NONE) { sendMessageResponse(rr.mResult, dataRegResponse); } mRil.processResponseDone(rr, responseInfo, dataRegResponse); } } /** * @param responseInfo Response info struct containing response type, serial no. and error * @param longName is long alpha ONS or EONS or empty string if unregistered Loading
tests/telephonytests/src/com/android/internal/telephony/CellularNetworkServiceTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.os.RemoteException; import android.telephony.AccessNetworkConstants; import android.telephony.INetworkService; import android.telephony.INetworkServiceCallback; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.NetworkServiceCallback; Loading Loading @@ -154,10 +155,15 @@ public class CellularNetworkServiceTest extends TelephonyTest { waitForMs(1000); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); expectedState = new NetworkRegistrationState( domain, AccessNetworkConstants.TransportType.WWAN, voiceRegState, ServiceState.rilRadioTechnologyToNetworkType(voiceRadioTech), reasonForDenial, false, availableServices, null, maxDataCalls, false, false, false); false, availableServices, null, maxDataCalls, false, false, false, lteVopsSupportInfo); try { verify(mCallback, times(1)).onGetNetworkRegistrationStateComplete( Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.telephony; import android.os.Bundle; import android.os.Parcel; import android.telephony.AccessNetworkConstants; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; Loading Loading @@ -288,10 +289,13 @@ public class ServiceStateTest extends TestCase { 0, 0, 0, false, null, null, true, 0, 0, 0); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState wwanDataRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN, 0, 0, 0, false, null, null, 0, false, false, false); 0, 0, 0, false, null, null, 0, false, false, false, lteVopsSupportInfo); NetworkRegistrationState wlanRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WLAN, Loading @@ -313,7 +317,7 @@ public class ServiceStateTest extends TestCase { wwanDataRegState = new NetworkRegistrationState( NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN, 0, 0, 0, true, null, null, 0, false, false, false); 0, 0, 0, true, null, null, 0, false, false, false, lteVopsSupportInfo); ss.addNetworkRegistrationState(wwanDataRegState); assertEquals(ss.getNetworkRegistrationStates(NetworkRegistrationState.DOMAIN_PS, AccessNetworkConstants.TransportType.WWAN), wwanDataRegState); Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTrackerTest.java +66 −4 Original line number Diff line number Diff line Loading @@ -71,6 +71,7 @@ import android.telephony.CellSignalStrengthLte; import android.telephony.CellSignalStrengthTdscdma; import android.telephony.CellSignalStrengthWcdma; import android.telephony.INetworkService; import android.telephony.LteVopsSupportInfo; import android.telephony.NetworkRegistrationState; import android.telephony.NetworkService; import android.telephony.PhysicalChannelConfig; Loading Loading @@ -484,8 +485,8 @@ public class ServiceStateTrackerTest extends TelephonyTest { // The service state of GsmCdmaPhone is STATE_OUT_OF_SERVICE, and IMS is unregistered. ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_OUT_OF_SERVICE); sst.mSS = ss; sst.mSS = ss; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_IMS_SERVICE_STATE_CHANGED)); waitForMs(200); Loading Loading @@ -1570,8 +1571,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { } private void changeRegState(int state, CellIdentity cid, int voiceRat, int dataRat) { LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 0, 0, state, dataRat, 0, false, null, cid, 1, false, false, false); 0, 0, state, dataRat, 0, false, null, cid, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 2; // update data reg state to be in service sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, Loading Loading @@ -1661,9 +1666,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { } private void sendRegStateUpdateForLteCellId(CellIdentityLte cellId) { LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false); false, false, false, lteVopsSupportInfo); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, false, 0, 0, 0); Loading Loading @@ -1725,9 +1733,12 @@ public class ServiceStateTrackerTest extends TelephonyTest { @Test public void testPhyChanBandwidthResetsOnOos() throws Exception { testPhyChanBandwidthRatchetedOnPhyChanBandwidth(); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE, LteVopsSupportInfo.LTE_STATUS_NOT_AVAILABLE); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 0, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0, false, null, null, 1, false, false, false); false, false, lteVopsSupportInfo); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 0, TelephonyManager.NETWORK_TYPE_UNKNOWN, 0, false, null, null, false, 0, 0, 0); Loading Loading @@ -1785,4 +1796,55 @@ public class ServiceStateTrackerTest extends TelephonyTest { doReturn(true).when(mRuimRecords).isProvisioned(); assertEquals(mockMdn, sst.getMdnNumber()); } @Test @SmallTest public void testOnVopsInfoChanged() { ServiceState ss = new ServiceState(); ss.setVoiceRegState(ServiceState.STATE_IN_SERVICE); ss.setDataRegState(ServiceState.STATE_IN_SERVICE); sst.mSS = ss; CellIdentityLte cellId = new CellIdentityLte(1, 1, 5, 1, 5000, "001", "01", "test", "tst"); LteVopsSupportInfo lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED, LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED); NetworkRegistrationState dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 2; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, new AsyncResult(sst.mPollingContext, dataResult, null))); NetworkRegistrationState voiceResult = new NetworkRegistrationState( 1, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, false, 0, 0, 0); sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_REGISTRATION, new AsyncResult(sst.mPollingContext, voiceResult, null))); waitForMs(200); assertEquals(ServiceState.STATE_IN_SERVICE, sst.getCurrentDataConnectionState()); NetworkRegistrationState sSnetworkRegistrationState = sst.mSS.getNetworkRegistrationState(2, 1); assertEquals(lteVopsSupportInfo, sSnetworkRegistrationState.getDataSpecificStates().lteVopsSupportInfo); lteVopsSupportInfo = new LteVopsSupportInfo(LteVopsSupportInfo.LTE_STATUS_SUPPORTED, LteVopsSupportInfo.LTE_STATUS_NOT_SUPPORTED); dataResult = new NetworkRegistrationState( 2, 1, 1, TelephonyManager.NETWORK_TYPE_LTE, 0, false, null, cellId, 1, false, false, false, lteVopsSupportInfo); sst.mPollingContext[0] = 1; sst.sendMessage(sst.obtainMessage(ServiceStateTracker.EVENT_POLL_STATE_GPRS, new AsyncResult(sst.mPollingContext, dataResult, null))); waitForMs(200); sSnetworkRegistrationState = sst.mSS.getNetworkRegistrationState(2, 1); assertEquals(lteVopsSupportInfo, sSnetworkRegistrationState.getDataSpecificStates().lteVopsSupportInfo); } }