Loading src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +0 −11 Original line number Diff line number Diff line Loading @@ -182,11 +182,6 @@ public class GsmCdmaCallTracker extends CallTracker { mCi.unregisterForCallWaitingInfo(this); // Prior to phone switch to GSM, if CDMA has any emergency call // data will be in disabled state, after switching to GSM enable data. if (mIsInEmergencyCall) { if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } } } else { mConnections = new GsmCdmaConnection[MAX_CONNECTIONS_CDMA]; mPendingCallInEcm = false; Loading Loading @@ -400,9 +395,6 @@ public class GsmCdmaCallTracker extends CallTracker { //CDMA public void setIsInEmergencyCall() { mIsInEmergencyCall = true; if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(false); } mPhone.notifyEmergencyCallRegistrants(true); mPhone.sendEmergencyCallStateChange(true); } Loading Loading @@ -1754,9 +1746,6 @@ public class GsmCdmaCallTracker extends CallTracker { } if (!inEcm) { // Re-initiate data connection if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } mPhone.notifyEmergencyCallRegistrants(false); } mPhone.sendEmergencyCallStateChange(false); Loading src/java/com/android/internal/telephony/GsmCdmaPhone.java +13 −186 Original line number Diff line number Diff line Loading @@ -64,7 +64,6 @@ import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.RadioPowerState; import android.telephony.BarringInfo; Loading @@ -82,7 +81,6 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.UiccAccessRule; import android.telephony.UssdResponse; import android.telephony.data.ApnSetting; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading @@ -94,9 +92,6 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetworkController; import com.android.internal.telephony.data.LinkBandwidthEstimator; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; import com.android.internal.telephony.gsm.GsmMmiCode; import com.android.internal.telephony.gsm.SuppServiceNotification; Loading Loading @@ -271,8 +266,6 @@ public class GsmCdmaPhone extends Phone { private CarrierKeyDownloadManager mCDM; private CarrierInfoManager mCIM; private final SettingsObserver mSettingsObserver; private final ImsManagerFactory mImsManagerFactory; private final CarrierPrivilegesTracker mCarrierPrivilegesTracker; Loading Loading @@ -316,10 +309,6 @@ public class GsmCdmaPhone extends Phone { mAccessNetworksManager = mTelephonyComponentFactory .inject(AccessNetworksManager.class.getName()) .makeAccessNetworksManager(this, getLooper()); if (!isUsingNewDataStack()) { mTransportManager = mTelephonyComponentFactory.inject(TransportManager.class.getName()) .makeTransportManager(this); } // SST/DSM depends on SSC, so SSC is instanced before SST/DSM mSignalStrengthController = mTelephonyComponentFactory.inject( SignalStrengthController.class.getName()).makeSignalStrengthController(this); Loading @@ -328,10 +317,6 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); if (!isUsingNewDataStack()) { mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); } mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); Loading @@ -340,20 +325,9 @@ public class GsmCdmaPhone extends Phone { mDisplayInfoController = mTelephonyComponentFactory.inject( DisplayInfoController.class.getName()).makeDisplayInfoController(this); if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } else { // DcTracker uses ServiceStateTracker and DisplayInfoController so needs to be created // after they are instantiated for (int transport : mAccessNetworksManager.getAvailableTransports()) { DcTracker dcTracker = mTelephonyComponentFactory.inject(DcTracker.class.getName()) .makeDcTracker(this, transport); mDcTrackers.put(transport, dcTracker); mAccessNetworksManager.registerDataThrottler(dcTracker.getDataThrottler()); } } mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) .makeCarrierResolver(this); Loading @@ -366,15 +340,6 @@ public class GsmCdmaPhone extends Phone { mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null); mSST.registerForVoiceRegStateOrRatChanged(this, EVENT_VRS_OR_RAT_CHANGED, null); // TODO: Remove SettingsObserver and provisioning events when DataEnabledSettings is removed mSettingsObserver = new SettingsObserver(context, this); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), EVENT_DEVICE_PROVISIONED_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED), EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE); SubscriptionController.getInstance().registerForUiccAppsEnabled(this, EVENT_UICC_APPS_ENABLEMENT_SETTING_CHANGED, null, false); Loading Loading @@ -679,11 +644,6 @@ public class GsmCdmaPhone extends Phone { return mCT; } @Override public TransportManager getTransportManager() { return mTransportManager; } @Override public AccessNetworksManager getAccessNetworksManager() { return mAccessNetworksManager; Loading Loading @@ -735,85 +695,10 @@ public class GsmCdmaPhone extends Phone { return mCT.mState != PhoneConstants.State.IDLE && !mSST.isConcurrentVoiceAndDataAllowed(); } @Override public PhoneConstants.DataState getDataConnectionState(String apnType) { PhoneConstants.DataState ret = PhoneConstants.DataState.DISCONNECTED; if (mSST == null) { // Radio Technology Change is ongoing, dispose() and removeReferences() have // already been called ret = PhoneConstants.DataState.DISCONNECTED; } else if (mSST.getCurrentDataConnectionState() != ServiceState.STATE_IN_SERVICE && (isPhoneTypeCdma() || isPhoneTypeCdmaLte() || (isPhoneTypeGsm() && !apnType.equals(ApnSetting.TYPE_EMERGENCY_STRING)))) { // If we're out of service, open TCP sockets may still work // but no data will flow // Emergency APN is available even in Out Of Service // Pass the actual State of EPDN ret = PhoneConstants.DataState.DISCONNECTED; } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ int currentTransport = mAccessNetworksManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(currentTransport) != null) { switch (getDcTracker(currentTransport).getState(apnType)) { case CONNECTED: case DISCONNECTING: if (isDataSuspended()) { ret = PhoneConstants.DataState.SUSPENDED; } else { ret = PhoneConstants.DataState.CONNECTED; } break; case CONNECTING: ret = PhoneConstants.DataState.CONNECTING; break; default: ret = PhoneConstants.DataState.DISCONNECTED; } } } logd("getDataConnectionState apnType=" + apnType + " ret=" + ret); return ret; } @Override public @DataActivityType int getDataActivityState() { if (isUsingNewDataStack()) { return getDataNetworkController().getDataActivity(); } int ret = TelephonyManager.DATA_ACTIVITY_NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE && getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { switch (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getActivity()) { case DATAIN: ret = TelephonyManager.DATA_ACTIVITY_IN; break; case DATAOUT: ret = TelephonyManager.DATA_ACTIVITY_OUT; break; case DATAINANDOUT: ret = TelephonyManager.DATA_ACTIVITY_INOUT; break; case DORMANT: ret = TelephonyManager.DATA_ACTIVITY_DORMANT; break; default: ret = TelephonyManager.DATA_ACTIVITY_NONE; break; } } return ret; } /** * Notify any interested party of a Phone state change Loading Loading @@ -2672,25 +2557,12 @@ public class GsmCdmaPhone extends Phone { @Override public boolean getDataRoamingEnabled() { if (isUsingNewDataStack()) { return getDataSettingsManager().isDataRoamingEnabled(); } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { return getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getDataRoamingEnabled(); } return false; } @Override public void setDataRoamingEnabled(boolean enable) { if (isUsingNewDataStack()) { getDataSettingsManager().setDataRoamingEnabled(enable); return; } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDataRoamingEnabledByUser(enable); } } @Override Loading Loading @@ -2735,22 +2607,13 @@ public class GsmCdmaPhone extends Phone { } /** * Whether data is enabled by user. Unlike isDataEnabled, this only * checks user setting stored in {@link android.provider.Settings.Global#MOBILE_DATA} * if not provisioning, or isProvisioningDataEnabled if provisioning. * Whether data is enabled by user. */ @Override public boolean isUserDataEnabled() { if (isUsingNewDataStack()) { return getDataSettingsManager().isDataEnabledForReason( TelephonyManager.DATA_ENABLED_REASON_USER); } if (mDataEnabledSettings.isProvisioning()) { return mDataEnabledSettings.isProvisioningDataEnabled(); } else { return mDataEnabledSettings.isUserDataEnabled(); } } /** * Removes the given MMI from the pending list and notifies Loading Loading @@ -3283,24 +3146,9 @@ public class GsmCdmaPhone extends Phone { case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; if (isUsingNewDataStack()) { getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled, mContext.getOpPackageName()); return; } mDataEnabledSettings.setDataEnabled(TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: if (!isUsingNewDataStack()) { mDataEnabledSettings.updateProvisionedChanged(); } break; case EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE: if (!isUsingNewDataStack()) { mDataEnabledSettings.updateProvisioningDataEnabled(); } break; case EVENT_GET_AVAILABLE_NETWORKS_DONE: ar = (AsyncResult) msg.obj; Loading Loading @@ -3795,10 +3643,6 @@ public class GsmCdmaPhone extends Phone { // send an Intent sendEmergencyCallbackModeChange(); // Re-initiate data connection if (!isUsingNewDataStack()) { mDataEnabledSettings.setInternalDataEnabled(true); } notifyEmergencyCallRegistrants(false); } mIsTestingEmergencyCallbackMode = false; Loading Loading @@ -4745,25 +4589,8 @@ public class GsmCdmaPhone extends Phone { * @return Currently bound data service package names. */ public @NonNull List<String> getDataServicePackages() { if (isUsingNewDataStack()) { return getDataNetworkController().getDataServicePackages(); } List<String> packages = new ArrayList<>(); int[] transports = new int[]{AccessNetworkConstants.TRANSPORT_TYPE_WWAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN}; for (int transport : transports) { DcTracker dct = getDcTracker(transport); if (dct != null) { String pkg = dct.getDataServiceManager().getDataServicePackageName(); if (!TextUtils.isEmpty(pkg)) { packages.add(pkg); } } } return packages; } private void updateBroadcastEmergencyCallStateChangesAfterCarrierConfigChanged( PersistableBundle config) { Loading src/java/com/android/internal/telephony/MultiSimSettingController.java +8 −19 Original line number Diff line number Diff line Loading @@ -850,14 +850,9 @@ public class MultiSimSettingController extends Handler { && phone.isUserDataEnabled() && !areSubscriptionsInSameGroup(defaultDataSub, phone.getSubId())) { log("setting data to false on " + phone.getSubId()); if (phone.isUsingNewDataStack()) { phone.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); } else { phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } } } } Loading Loading @@ -893,13 +888,9 @@ public class MultiSimSettingController extends Handler { // If enable is true and it's not opportunistic subscription, we don't enable it, // as there can't be two if (phone != null) { if (phone.isUsingNewDataStack()) { phone.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, enable, mContext.getOpPackageName()); } else { phone.getDataEnabledSettings().setUserDataEnabled(enable, false); } } } else { // For inactive subscription, directly write into global settings. Loading Loading @@ -1074,11 +1065,9 @@ public class MultiSimSettingController extends Handler { // existing phone instance. Phone[] phones = PhoneFactory.getPhones(); for (int i = mCallbacksCount; i < phones.length; i++) { if (phones[i].isUsingNewDataStack()) { phones[i].getDataSettingsManager().registerCallback( new DataSettingsControllerCallback(phones[i], this::post)); } } mCallbacksCount = phones.length; } Loading src/java/com/android/internal/telephony/NetworkTypeController.java +40 −68 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony; import android.annotation.Nullable; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; Loading @@ -28,20 +29,16 @@ import android.telephony.AccessNetworkConstants; import android.telephony.Annotation; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.PcoData; import android.telephony.PhysicalChannelConfig; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.telephony.data.DataCallResponse; import android.telephony.data.DataCallResponse.LinkStatus; import android.text.TextUtils; import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback; import com.android.internal.telephony.dataconnection.DataConnection; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.util.ArrayUtils; import com.android.internal.util.IState; import com.android.internal.util.IndentingPrintWriter; Loading Loading @@ -99,7 +96,6 @@ public class NetworkTypeController extends StateMachine { private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11; private static final int EVENT_INITIALIZE = 12; private static final int EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED = 13; private static final int EVENT_PCO_DATA_CHANGED = 14; private static final int EVENT_BANDWIDTH_CHANGED = 15; private static final int EVENT_UPDATE_NR_ADVANCED_STATE = 16; private static final int EVENT_DEVICE_IDLE_MODE_CHANGED = 17; Loading @@ -121,7 +117,6 @@ public class NetworkTypeController extends StateMachine { sEvents[EVENT_PREFERRED_NETWORK_MODE_CHANGED] = "EVENT_PREFERRED_NETWORK_MODE_CHANGED"; sEvents[EVENT_INITIALIZE] = "EVENT_INITIALIZE"; sEvents[EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED] = "EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED"; sEvents[EVENT_PCO_DATA_CHANGED] = "EVENT_PCO_DATA_CHANGED"; sEvents[EVENT_BANDWIDTH_CHANGED] = "EVENT_BANDWIDTH_CHANGED"; sEvents[EVENT_UPDATE_NR_ADVANCED_STATE] = "EVENT_UPDATE_NR_ADVANCED_STATE"; sEvents[EVENT_DEVICE_IDLE_MODE_CHANGED] = "EVENT_DEVICE_IDLE_MODE_CHANGED"; Loading Loading @@ -169,6 +164,9 @@ public class NetworkTypeController extends StateMachine { private boolean mEnableNrAdvancedWhileRoaming = true; private boolean mIsDeviceIdleMode = false; private @Nullable DataNetworkControllerCallback mNrAdvancedCapableByPcoChangedCallback = null; private @Nullable DataNetworkControllerCallback mNrPhysicalLinkStatusChangedCallback = null; /** * NetworkTypeController constructor. * Loading Loading @@ -232,9 +230,6 @@ public class NetworkTypeController extends StateMachine { filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED); filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED); mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone); if (!mPhone.isUsingNewDataStack()) { mPhone.mCi.registerForPcoData(getHandler(), EVENT_PCO_DATA_CHANGED, null); } } private void unRegisterForAllEvents() { Loading @@ -246,9 +241,6 @@ public class NetworkTypeController extends StateMachine { mPhone.getServiceStateTracker().unregisterForNrFrequencyChanged(getHandler()); mPhone.getDeviceStateMonitor().unregisterForPhysicalChannelConfigNotifChanged(getHandler()); mPhone.getContext().unregisterReceiver(mIntentReceiver); if (!mPhone.isUsingNewDataStack()) { mPhone.mCi.unregisterForPcoData(getHandler()); } } private void parseCarrierConfigs() { Loading Loading @@ -306,8 +298,8 @@ public class NetworkTypeController extends StateMachine { CarrierConfigManager.KEY_ADDITIONAL_NR_ADVANCED_BANDS_INT_ARRAY); mNrAdvancedCapablePcoId = b.getInt( CarrierConfigManager.KEY_NR_ADVANCED_CAPABLE_PCO_ID_INT); if (mNrAdvancedCapablePcoId > 0 && mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().registerDataNetworkControllerCallback( if (mNrAdvancedCapablePcoId > 0 && mNrAdvancedCapableByPcoChangedCallback == null) { mNrAdvancedCapableByPcoChangedCallback = new DataNetworkControllerCallback(getHandler()::post) { @Override public void onNrAdvancedCapableByPcoChanged( Loading @@ -316,15 +308,22 @@ public class NetworkTypeController extends StateMachine { mIsNrAdvancedAllowedByPco = nrAdvancedCapable; sendMessage(EVENT_UPDATE_NR_ADVANCED_STATE); } }); }; mPhone.getDataNetworkController().registerDataNetworkControllerCallback( mNrAdvancedCapableByPcoChangedCallback); } else if (mNrAdvancedCapablePcoId == 0 && mNrAdvancedCapableByPcoChangedCallback != null) { mPhone.getDataNetworkController().unregisterDataNetworkControllerCallback( mNrAdvancedCapableByPcoChangedCallback); mNrAdvancedCapableByPcoChangedCallback = null; } mEnableNrAdvancedWhileRoaming = b.getBoolean( CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL); mIsUsingUserDataForRrcDetection = b.getBoolean( CarrierConfigManager.KEY_LTE_ENDC_USING_USER_DATA_FOR_RRC_DETECTION_BOOL); if (!mIsPhysicalChannelConfig16Supported || mIsUsingUserDataForRrcDetection) { if (mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().registerDataNetworkControllerCallback( if (mNrPhysicalLinkStatusChangedCallback == null) { mNrPhysicalLinkStatusChangedCallback = new DataNetworkControllerCallback(getHandler()::post) { @Override public void onPhysicalLinkStatusChanged( Loading @@ -332,12 +331,14 @@ public class NetworkTypeController extends StateMachine { sendMessage(obtainMessage( EVENT_PHYSICAL_LINK_STATUS_CHANGED, new AsyncResult(null, status, null))); }}); } else { mPhone.getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .registerForPhysicalLinkStatusChanged(getHandler(), EVENT_PHYSICAL_LINK_STATUS_CHANGED); }}; mPhone.getDataNetworkController().registerDataNetworkControllerCallback( mNrPhysicalLinkStatusChangedCallback); } } else if (mNrPhysicalLinkStatusChangedCallback != null) { mPhone.getDataNetworkController().unregisterDataNetworkControllerCallback( mNrPhysicalLinkStatusChangedCallback); mNrPhysicalLinkStatusChangedCallback = null; } } } Loading Loading @@ -555,15 +556,14 @@ public class NetworkTypeController extends StateMachine { break; case EVENT_INITIALIZE: // The reason that we do it here is because some of the works below requires // other modules (e.g. DcTracker, ServiceStateTracker), which is not created // yet when NetworkTypeController is created. // other modules (e.g. DataNetworkController, ServiceStateTracker), which is not // created yet when NetworkTypeController is created. registerForAllEvents(); parseCarrierConfigs(); break; case EVENT_DATA_RAT_CHANGED: case EVENT_NR_STATE_CHANGED: case EVENT_NR_FREQUENCY_CHANGED: case EVENT_PCO_DATA_CHANGED: case EVENT_UPDATE_NR_ADVANCED_STATE: // ignored break; Loading Loading @@ -941,9 +941,6 @@ public class NetworkTypeController extends StateMachine { transitionWithTimerTo(mLegacyState); } break; case EVENT_PCO_DATA_CHANGED: handlePcoData((AsyncResult) msg.obj); break; case EVENT_UPDATE_NR_ADVANCED_STATE: updateNrAdvancedState(); break; Loading Loading @@ -980,6 +977,7 @@ public class NetworkTypeController extends StateMachine { } private void updateNrAdvancedState() { log("updateNrAdvancedState"); if (!isNrConnected()) { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); Loading @@ -993,33 +991,7 @@ public class NetworkTypeController extends StateMachine { transitionTo(mNrConnectedState); } mIsNrAdvanced = isNrAdvanced(); } private void handlePcoData(AsyncResult ar) { if (ar.exception != null) { loge("PCO_DATA exception: " + ar.exception); return; } PcoData pcodata = (PcoData) ar.result; if (pcodata == null) { return; } log("EVENT_PCO_DATA_CHANGED: pco data: " + pcodata); DcTracker dcTracker = mPhone.getDcTracker( AccessNetworkConstants.TRANSPORT_TYPE_WWAN); DataConnection dc = dcTracker != null ? dcTracker.getDataConnectionByContextId(pcodata.cid) : null; ApnSetting apnSettings = dc != null ? dc.getApnSetting() : null; if (apnSettings != null && apnSettings.canHandleType(ApnSetting.TYPE_DEFAULT) && mNrAdvancedCapablePcoId > 0 && pcodata.pcoId == mNrAdvancedCapablePcoId ) { log("EVENT_PCO_DATA_CHANGED: NR_ADVANCED is allowed by PCO. length:" + pcodata.contents.length + ",value: " + Arrays.toString(pcodata.contents)); mIsNrAdvancedAllowedByPco = pcodata.contents.length > 0 && pcodata.contents[pcodata.contents.length - 1] == 1; updateNrAdvancedState(); } log("mIsNrAdvanced=" + mIsNrAdvanced); } } Loading src/java/com/android/internal/telephony/Phone.java +6 −147 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
src/java/com/android/internal/telephony/GsmCdmaCallTracker.java +0 −11 Original line number Diff line number Diff line Loading @@ -182,11 +182,6 @@ public class GsmCdmaCallTracker extends CallTracker { mCi.unregisterForCallWaitingInfo(this); // Prior to phone switch to GSM, if CDMA has any emergency call // data will be in disabled state, after switching to GSM enable data. if (mIsInEmergencyCall) { if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } } } else { mConnections = new GsmCdmaConnection[MAX_CONNECTIONS_CDMA]; mPendingCallInEcm = false; Loading Loading @@ -400,9 +395,6 @@ public class GsmCdmaCallTracker extends CallTracker { //CDMA public void setIsInEmergencyCall() { mIsInEmergencyCall = true; if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(false); } mPhone.notifyEmergencyCallRegistrants(true); mPhone.sendEmergencyCallStateChange(true); } Loading Loading @@ -1754,9 +1746,6 @@ public class GsmCdmaCallTracker extends CallTracker { } if (!inEcm) { // Re-initiate data connection if (!mPhone.isUsingNewDataStack()) { mPhone.getDataEnabledSettings().setInternalDataEnabled(true); } mPhone.notifyEmergencyCallRegistrants(false); } mPhone.sendEmergencyCallStateChange(false); Loading
src/java/com/android/internal/telephony/GsmCdmaPhone.java +13 −186 Original line number Diff line number Diff line Loading @@ -64,7 +64,6 @@ import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.AccessNetworkConstants; import android.telephony.Annotation.DataActivityType; import android.telephony.Annotation.RadioPowerState; import android.telephony.BarringInfo; Loading @@ -82,7 +81,6 @@ import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.UiccAccessRule; import android.telephony.UssdResponse; import android.telephony.data.ApnSetting; import android.text.TextUtils; import android.util.Log; import android.util.Pair; Loading @@ -94,9 +92,6 @@ import com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager; import com.android.internal.telephony.data.AccessNetworksManager; import com.android.internal.telephony.data.DataNetworkController; import com.android.internal.telephony.data.LinkBandwidthEstimator; import com.android.internal.telephony.dataconnection.DataEnabledSettings; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.dataconnection.TransportManager; import com.android.internal.telephony.emergency.EmergencyNumberTracker; import com.android.internal.telephony.gsm.GsmMmiCode; import com.android.internal.telephony.gsm.SuppServiceNotification; Loading Loading @@ -271,8 +266,6 @@ public class GsmCdmaPhone extends Phone { private CarrierKeyDownloadManager mCDM; private CarrierInfoManager mCIM; private final SettingsObserver mSettingsObserver; private final ImsManagerFactory mImsManagerFactory; private final CarrierPrivilegesTracker mCarrierPrivilegesTracker; Loading Loading @@ -316,10 +309,6 @@ public class GsmCdmaPhone extends Phone { mAccessNetworksManager = mTelephonyComponentFactory .inject(AccessNetworksManager.class.getName()) .makeAccessNetworksManager(this, getLooper()); if (!isUsingNewDataStack()) { mTransportManager = mTelephonyComponentFactory.inject(TransportManager.class.getName()) .makeTransportManager(this); } // SST/DSM depends on SSC, so SSC is instanced before SST/DSM mSignalStrengthController = mTelephonyComponentFactory.inject( SignalStrengthController.class.getName()).makeSignalStrengthController(this); Loading @@ -328,10 +317,6 @@ public class GsmCdmaPhone extends Phone { mEmergencyNumberTracker = mTelephonyComponentFactory .inject(EmergencyNumberTracker.class.getName()).makeEmergencyNumberTracker( this, this.mCi); if (!isUsingNewDataStack()) { mDataEnabledSettings = mTelephonyComponentFactory .inject(DataEnabledSettings.class.getName()).makeDataEnabledSettings(this); } mDeviceStateMonitor = mTelephonyComponentFactory.inject(DeviceStateMonitor.class.getName()) .makeDeviceStateMonitor(this); Loading @@ -340,20 +325,9 @@ public class GsmCdmaPhone extends Phone { mDisplayInfoController = mTelephonyComponentFactory.inject( DisplayInfoController.class.getName()).makeDisplayInfoController(this); if (isUsingNewDataStack()) { mDataNetworkController = mTelephonyComponentFactory.inject( DataNetworkController.class.getName()) .makeDataNetworkController(this, getLooper()); } else { // DcTracker uses ServiceStateTracker and DisplayInfoController so needs to be created // after they are instantiated for (int transport : mAccessNetworksManager.getAvailableTransports()) { DcTracker dcTracker = mTelephonyComponentFactory.inject(DcTracker.class.getName()) .makeDcTracker(this, transport); mDcTrackers.put(transport, dcTracker); mAccessNetworksManager.registerDataThrottler(dcTracker.getDataThrottler()); } } mCarrierResolver = mTelephonyComponentFactory.inject(CarrierResolver.class.getName()) .makeCarrierResolver(this); Loading @@ -366,15 +340,6 @@ public class GsmCdmaPhone extends Phone { mSST.registerForNetworkAttached(this, EVENT_REGISTERED_TO_NETWORK, null); mSST.registerForVoiceRegStateOrRatChanged(this, EVENT_VRS_OR_RAT_CHANGED, null); // TODO: Remove SettingsObserver and provisioning events when DataEnabledSettings is removed mSettingsObserver = new SettingsObserver(context, this); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONED), EVENT_DEVICE_PROVISIONED_CHANGE); mSettingsObserver.observe( Settings.Global.getUriFor(Settings.Global.DEVICE_PROVISIONING_MOBILE_DATA_ENABLED), EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE); SubscriptionController.getInstance().registerForUiccAppsEnabled(this, EVENT_UICC_APPS_ENABLEMENT_SETTING_CHANGED, null, false); Loading Loading @@ -679,11 +644,6 @@ public class GsmCdmaPhone extends Phone { return mCT; } @Override public TransportManager getTransportManager() { return mTransportManager; } @Override public AccessNetworksManager getAccessNetworksManager() { return mAccessNetworksManager; Loading Loading @@ -735,85 +695,10 @@ public class GsmCdmaPhone extends Phone { return mCT.mState != PhoneConstants.State.IDLE && !mSST.isConcurrentVoiceAndDataAllowed(); } @Override public PhoneConstants.DataState getDataConnectionState(String apnType) { PhoneConstants.DataState ret = PhoneConstants.DataState.DISCONNECTED; if (mSST == null) { // Radio Technology Change is ongoing, dispose() and removeReferences() have // already been called ret = PhoneConstants.DataState.DISCONNECTED; } else if (mSST.getCurrentDataConnectionState() != ServiceState.STATE_IN_SERVICE && (isPhoneTypeCdma() || isPhoneTypeCdmaLte() || (isPhoneTypeGsm() && !apnType.equals(ApnSetting.TYPE_EMERGENCY_STRING)))) { // If we're out of service, open TCP sockets may still work // but no data will flow // Emergency APN is available even in Out Of Service // Pass the actual State of EPDN ret = PhoneConstants.DataState.DISCONNECTED; } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */ int currentTransport = mAccessNetworksManager.getCurrentTransport( ApnSetting.getApnTypesBitmaskFromString(apnType)); if (getDcTracker(currentTransport) != null) { switch (getDcTracker(currentTransport).getState(apnType)) { case CONNECTED: case DISCONNECTING: if (isDataSuspended()) { ret = PhoneConstants.DataState.SUSPENDED; } else { ret = PhoneConstants.DataState.CONNECTED; } break; case CONNECTING: ret = PhoneConstants.DataState.CONNECTING; break; default: ret = PhoneConstants.DataState.DISCONNECTED; } } } logd("getDataConnectionState apnType=" + apnType + " ret=" + ret); return ret; } @Override public @DataActivityType int getDataActivityState() { if (isUsingNewDataStack()) { return getDataNetworkController().getDataActivity(); } int ret = TelephonyManager.DATA_ACTIVITY_NONE; if (mSST.getCurrentDataConnectionState() == ServiceState.STATE_IN_SERVICE && getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { switch (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getActivity()) { case DATAIN: ret = TelephonyManager.DATA_ACTIVITY_IN; break; case DATAOUT: ret = TelephonyManager.DATA_ACTIVITY_OUT; break; case DATAINANDOUT: ret = TelephonyManager.DATA_ACTIVITY_INOUT; break; case DORMANT: ret = TelephonyManager.DATA_ACTIVITY_DORMANT; break; default: ret = TelephonyManager.DATA_ACTIVITY_NONE; break; } } return ret; } /** * Notify any interested party of a Phone state change Loading Loading @@ -2672,25 +2557,12 @@ public class GsmCdmaPhone extends Phone { @Override public boolean getDataRoamingEnabled() { if (isUsingNewDataStack()) { return getDataSettingsManager().isDataRoamingEnabled(); } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { return getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN).getDataRoamingEnabled(); } return false; } @Override public void setDataRoamingEnabled(boolean enable) { if (isUsingNewDataStack()) { getDataSettingsManager().setDataRoamingEnabled(enable); return; } if (getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) != null) { getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .setDataRoamingEnabledByUser(enable); } } @Override Loading Loading @@ -2735,22 +2607,13 @@ public class GsmCdmaPhone extends Phone { } /** * Whether data is enabled by user. Unlike isDataEnabled, this only * checks user setting stored in {@link android.provider.Settings.Global#MOBILE_DATA} * if not provisioning, or isProvisioningDataEnabled if provisioning. * Whether data is enabled by user. */ @Override public boolean isUserDataEnabled() { if (isUsingNewDataStack()) { return getDataSettingsManager().isDataEnabledForReason( TelephonyManager.DATA_ENABLED_REASON_USER); } if (mDataEnabledSettings.isProvisioning()) { return mDataEnabledSettings.isProvisioningDataEnabled(); } else { return mDataEnabledSettings.isUserDataEnabled(); } } /** * Removes the given MMI from the pending list and notifies Loading Loading @@ -3283,24 +3146,9 @@ public class GsmCdmaPhone extends Phone { case EVENT_SET_CARRIER_DATA_ENABLED: ar = (AsyncResult) msg.obj; boolean enabled = (boolean) ar.result; if (isUsingNewDataStack()) { getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled, mContext.getOpPackageName()); return; } mDataEnabledSettings.setDataEnabled(TelephonyManager.DATA_ENABLED_REASON_CARRIER, enabled); break; case EVENT_DEVICE_PROVISIONED_CHANGE: if (!isUsingNewDataStack()) { mDataEnabledSettings.updateProvisionedChanged(); } break; case EVENT_DEVICE_PROVISIONING_DATA_SETTING_CHANGE: if (!isUsingNewDataStack()) { mDataEnabledSettings.updateProvisioningDataEnabled(); } break; case EVENT_GET_AVAILABLE_NETWORKS_DONE: ar = (AsyncResult) msg.obj; Loading Loading @@ -3795,10 +3643,6 @@ public class GsmCdmaPhone extends Phone { // send an Intent sendEmergencyCallbackModeChange(); // Re-initiate data connection if (!isUsingNewDataStack()) { mDataEnabledSettings.setInternalDataEnabled(true); } notifyEmergencyCallRegistrants(false); } mIsTestingEmergencyCallbackMode = false; Loading Loading @@ -4745,25 +4589,8 @@ public class GsmCdmaPhone extends Phone { * @return Currently bound data service package names. */ public @NonNull List<String> getDataServicePackages() { if (isUsingNewDataStack()) { return getDataNetworkController().getDataServicePackages(); } List<String> packages = new ArrayList<>(); int[] transports = new int[]{AccessNetworkConstants.TRANSPORT_TYPE_WWAN, AccessNetworkConstants.TRANSPORT_TYPE_WLAN}; for (int transport : transports) { DcTracker dct = getDcTracker(transport); if (dct != null) { String pkg = dct.getDataServiceManager().getDataServicePackageName(); if (!TextUtils.isEmpty(pkg)) { packages.add(pkg); } } } return packages; } private void updateBroadcastEmergencyCallStateChangesAfterCarrierConfigChanged( PersistableBundle config) { Loading
src/java/com/android/internal/telephony/MultiSimSettingController.java +8 −19 Original line number Diff line number Diff line Loading @@ -850,14 +850,9 @@ public class MultiSimSettingController extends Handler { && phone.isUserDataEnabled() && !areSubscriptionsInSameGroup(defaultDataSub, phone.getSubId())) { log("setting data to false on " + phone.getSubId()); if (phone.isUsingNewDataStack()) { phone.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false, mContext.getOpPackageName()); } else { phone.getDataEnabledSettings().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, false); } } } } Loading Loading @@ -893,13 +888,9 @@ public class MultiSimSettingController extends Handler { // If enable is true and it's not opportunistic subscription, we don't enable it, // as there can't be two if (phone != null) { if (phone.isUsingNewDataStack()) { phone.getDataSettingsManager().setDataEnabled( TelephonyManager.DATA_ENABLED_REASON_USER, enable, mContext.getOpPackageName()); } else { phone.getDataEnabledSettings().setUserDataEnabled(enable, false); } } } else { // For inactive subscription, directly write into global settings. Loading Loading @@ -1074,11 +1065,9 @@ public class MultiSimSettingController extends Handler { // existing phone instance. Phone[] phones = PhoneFactory.getPhones(); for (int i = mCallbacksCount; i < phones.length; i++) { if (phones[i].isUsingNewDataStack()) { phones[i].getDataSettingsManager().registerCallback( new DataSettingsControllerCallback(phones[i], this::post)); } } mCallbacksCount = phones.length; } Loading
src/java/com/android/internal/telephony/NetworkTypeController.java +40 −68 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony; import android.annotation.Nullable; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; Loading @@ -28,20 +29,16 @@ import android.telephony.AccessNetworkConstants; import android.telephony.Annotation; import android.telephony.CarrierConfigManager; import android.telephony.NetworkRegistrationInfo; import android.telephony.PcoData; import android.telephony.PhysicalChannelConfig; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyDisplayInfo; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.telephony.data.DataCallResponse; import android.telephony.data.DataCallResponse.LinkStatus; import android.text.TextUtils; import com.android.internal.telephony.data.DataNetworkController.DataNetworkControllerCallback; import com.android.internal.telephony.dataconnection.DataConnection; import com.android.internal.telephony.dataconnection.DcTracker; import com.android.internal.telephony.util.ArrayUtils; import com.android.internal.util.IState; import com.android.internal.util.IndentingPrintWriter; Loading Loading @@ -99,7 +96,6 @@ public class NetworkTypeController extends StateMachine { private static final int EVENT_PREFERRED_NETWORK_MODE_CHANGED = 11; private static final int EVENT_INITIALIZE = 12; private static final int EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED = 13; private static final int EVENT_PCO_DATA_CHANGED = 14; private static final int EVENT_BANDWIDTH_CHANGED = 15; private static final int EVENT_UPDATE_NR_ADVANCED_STATE = 16; private static final int EVENT_DEVICE_IDLE_MODE_CHANGED = 17; Loading @@ -121,7 +117,6 @@ public class NetworkTypeController extends StateMachine { sEvents[EVENT_PREFERRED_NETWORK_MODE_CHANGED] = "EVENT_PREFERRED_NETWORK_MODE_CHANGED"; sEvents[EVENT_INITIALIZE] = "EVENT_INITIALIZE"; sEvents[EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED] = "EVENT_PHYSICAL_CHANNEL_CONFIG_CHANGED"; sEvents[EVENT_PCO_DATA_CHANGED] = "EVENT_PCO_DATA_CHANGED"; sEvents[EVENT_BANDWIDTH_CHANGED] = "EVENT_BANDWIDTH_CHANGED"; sEvents[EVENT_UPDATE_NR_ADVANCED_STATE] = "EVENT_UPDATE_NR_ADVANCED_STATE"; sEvents[EVENT_DEVICE_IDLE_MODE_CHANGED] = "EVENT_DEVICE_IDLE_MODE_CHANGED"; Loading Loading @@ -169,6 +164,9 @@ public class NetworkTypeController extends StateMachine { private boolean mEnableNrAdvancedWhileRoaming = true; private boolean mIsDeviceIdleMode = false; private @Nullable DataNetworkControllerCallback mNrAdvancedCapableByPcoChangedCallback = null; private @Nullable DataNetworkControllerCallback mNrPhysicalLinkStatusChangedCallback = null; /** * NetworkTypeController constructor. * Loading Loading @@ -232,9 +230,6 @@ public class NetworkTypeController extends StateMachine { filter.addAction(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED); filter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED); mPhone.getContext().registerReceiver(mIntentReceiver, filter, null, mPhone); if (!mPhone.isUsingNewDataStack()) { mPhone.mCi.registerForPcoData(getHandler(), EVENT_PCO_DATA_CHANGED, null); } } private void unRegisterForAllEvents() { Loading @@ -246,9 +241,6 @@ public class NetworkTypeController extends StateMachine { mPhone.getServiceStateTracker().unregisterForNrFrequencyChanged(getHandler()); mPhone.getDeviceStateMonitor().unregisterForPhysicalChannelConfigNotifChanged(getHandler()); mPhone.getContext().unregisterReceiver(mIntentReceiver); if (!mPhone.isUsingNewDataStack()) { mPhone.mCi.unregisterForPcoData(getHandler()); } } private void parseCarrierConfigs() { Loading Loading @@ -306,8 +298,8 @@ public class NetworkTypeController extends StateMachine { CarrierConfigManager.KEY_ADDITIONAL_NR_ADVANCED_BANDS_INT_ARRAY); mNrAdvancedCapablePcoId = b.getInt( CarrierConfigManager.KEY_NR_ADVANCED_CAPABLE_PCO_ID_INT); if (mNrAdvancedCapablePcoId > 0 && mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().registerDataNetworkControllerCallback( if (mNrAdvancedCapablePcoId > 0 && mNrAdvancedCapableByPcoChangedCallback == null) { mNrAdvancedCapableByPcoChangedCallback = new DataNetworkControllerCallback(getHandler()::post) { @Override public void onNrAdvancedCapableByPcoChanged( Loading @@ -316,15 +308,22 @@ public class NetworkTypeController extends StateMachine { mIsNrAdvancedAllowedByPco = nrAdvancedCapable; sendMessage(EVENT_UPDATE_NR_ADVANCED_STATE); } }); }; mPhone.getDataNetworkController().registerDataNetworkControllerCallback( mNrAdvancedCapableByPcoChangedCallback); } else if (mNrAdvancedCapablePcoId == 0 && mNrAdvancedCapableByPcoChangedCallback != null) { mPhone.getDataNetworkController().unregisterDataNetworkControllerCallback( mNrAdvancedCapableByPcoChangedCallback); mNrAdvancedCapableByPcoChangedCallback = null; } mEnableNrAdvancedWhileRoaming = b.getBoolean( CarrierConfigManager.KEY_ENABLE_NR_ADVANCED_WHILE_ROAMING_BOOL); mIsUsingUserDataForRrcDetection = b.getBoolean( CarrierConfigManager.KEY_LTE_ENDC_USING_USER_DATA_FOR_RRC_DETECTION_BOOL); if (!mIsPhysicalChannelConfig16Supported || mIsUsingUserDataForRrcDetection) { if (mPhone.isUsingNewDataStack()) { mPhone.getDataNetworkController().registerDataNetworkControllerCallback( if (mNrPhysicalLinkStatusChangedCallback == null) { mNrPhysicalLinkStatusChangedCallback = new DataNetworkControllerCallback(getHandler()::post) { @Override public void onPhysicalLinkStatusChanged( Loading @@ -332,12 +331,14 @@ public class NetworkTypeController extends StateMachine { sendMessage(obtainMessage( EVENT_PHYSICAL_LINK_STATUS_CHANGED, new AsyncResult(null, status, null))); }}); } else { mPhone.getDcTracker(AccessNetworkConstants.TRANSPORT_TYPE_WWAN) .registerForPhysicalLinkStatusChanged(getHandler(), EVENT_PHYSICAL_LINK_STATUS_CHANGED); }}; mPhone.getDataNetworkController().registerDataNetworkControllerCallback( mNrPhysicalLinkStatusChangedCallback); } } else if (mNrPhysicalLinkStatusChangedCallback != null) { mPhone.getDataNetworkController().unregisterDataNetworkControllerCallback( mNrPhysicalLinkStatusChangedCallback); mNrPhysicalLinkStatusChangedCallback = null; } } } Loading Loading @@ -555,15 +556,14 @@ public class NetworkTypeController extends StateMachine { break; case EVENT_INITIALIZE: // The reason that we do it here is because some of the works below requires // other modules (e.g. DcTracker, ServiceStateTracker), which is not created // yet when NetworkTypeController is created. // other modules (e.g. DataNetworkController, ServiceStateTracker), which is not // created yet when NetworkTypeController is created. registerForAllEvents(); parseCarrierConfigs(); break; case EVENT_DATA_RAT_CHANGED: case EVENT_NR_STATE_CHANGED: case EVENT_NR_FREQUENCY_CHANGED: case EVENT_PCO_DATA_CHANGED: case EVENT_UPDATE_NR_ADVANCED_STATE: // ignored break; Loading Loading @@ -941,9 +941,6 @@ public class NetworkTypeController extends StateMachine { transitionWithTimerTo(mLegacyState); } break; case EVENT_PCO_DATA_CHANGED: handlePcoData((AsyncResult) msg.obj); break; case EVENT_UPDATE_NR_ADVANCED_STATE: updateNrAdvancedState(); break; Loading Loading @@ -980,6 +977,7 @@ public class NetworkTypeController extends StateMachine { } private void updateNrAdvancedState() { log("updateNrAdvancedState"); if (!isNrConnected()) { log("NR state changed. Sending EVENT_NR_STATE_CHANGED"); sendMessage(EVENT_NR_STATE_CHANGED); Loading @@ -993,33 +991,7 @@ public class NetworkTypeController extends StateMachine { transitionTo(mNrConnectedState); } mIsNrAdvanced = isNrAdvanced(); } private void handlePcoData(AsyncResult ar) { if (ar.exception != null) { loge("PCO_DATA exception: " + ar.exception); return; } PcoData pcodata = (PcoData) ar.result; if (pcodata == null) { return; } log("EVENT_PCO_DATA_CHANGED: pco data: " + pcodata); DcTracker dcTracker = mPhone.getDcTracker( AccessNetworkConstants.TRANSPORT_TYPE_WWAN); DataConnection dc = dcTracker != null ? dcTracker.getDataConnectionByContextId(pcodata.cid) : null; ApnSetting apnSettings = dc != null ? dc.getApnSetting() : null; if (apnSettings != null && apnSettings.canHandleType(ApnSetting.TYPE_DEFAULT) && mNrAdvancedCapablePcoId > 0 && pcodata.pcoId == mNrAdvancedCapablePcoId ) { log("EVENT_PCO_DATA_CHANGED: NR_ADVANCED is allowed by PCO. length:" + pcodata.contents.length + ",value: " + Arrays.toString(pcodata.contents)); mIsNrAdvancedAllowedByPco = pcodata.contents.length > 0 && pcodata.contents[pcodata.contents.length - 1] == 1; updateNrAdvancedState(); } log("mIsNrAdvanced=" + mIsNrAdvanced); } } Loading
src/java/com/android/internal/telephony/Phone.java +6 −147 File changed.Preview size limit exceeded, changes collapsed. Show changes