Loading src/java/com/android/internal/telephony/data/DataConfigManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,15 @@ public class DataConfigManager extends Handler { return mResources.getInteger(R.integer.config_delay_for_ims_dereg_millis); } /** * @return {@code true} if PDN should persist when IWLAN data service restarted/crashed. * {@code false} will cause all data networks on IWLAN torn down if IWLAN data service crashes. */ public boolean shouldPersistIwlanDataNetworksWhenDataServiceRestarted() { return mResources.getBoolean(com.android.internal.R.bool .config_wlan_data_service_conn_persistence_on_restart); } /** * Registration point for subscription info ready * Loading Loading @@ -283,6 +292,7 @@ public class DataConfigManager extends Handler { IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, " "); pw.println(DataConfigManager.class.getSimpleName() + "-" + mPhone.getPhoneId() + ":"); pw.increaseIndent(); pw.println("isConfigCarrierSpecific=" + isConfigCarrierSpecific()); pw.println("Network capability priority:"); pw.increaseIndent(); for (Map.Entry<Integer, Integer> entry : mNetworkCapabilityPriorityMap.entrySet()) { Loading @@ -297,6 +307,9 @@ public class DataConfigManager extends Handler { pw.println(rule); } pw.decreaseIndent(); pw.println("getImsDeregistrationDelay=" + getImsDeregistrationDelay()); pw.println("shouldPersistIwlanDataNetworksWhenDataServiceRestarted=" + shouldPersistIwlanDataNetworksWhenDataServiceRestarted()); pw.decreaseIndent(); } } src/java/com/android/internal/telephony/data/DataEvaluation.java +20 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.telephony.data.DataProfile; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** Loading Loading @@ -81,6 +83,13 @@ public class DataEvaluation { mEvaluatedTime = System.currentTimeMillis(); } /** * @return List of data disallowed reasons. */ public @NonNull List<DataDisallowedReason> getDataDisallowedReasons() { return new ArrayList<>(mDataDisallowedReasons); } /** * Set the candidate data profile for setup data network. * Loading Loading @@ -154,22 +163,20 @@ public class DataEvaluation { DATA_CONFIG_CHANGED, /** SIM is loaded. */ SIM_LOADED, /** SIM is removed. */ SIM_REMOVAL, /** Data profiles changed. */ DATA_PROFILES_CHANGED, /** Airplane mode off. */ AIRPLANE_MODE_OFF, /** When data RAT changes, some unsatisfied network requests might fit with the new RAT. */ DATA_RAT_CHANGED, /** When service state changes from out of service to in service. */ DATA_IN_SERVICE, /** When service state changes.(For now only considering data RAT and data registration). */ DATA_SERVICE_STATE_CHANGED, /** When data is enabled (by user, carrier, thermal, etc...) */ DATA_ENABLED, /** When data roaming is enabled. */ ROAMING_ENABLED, /** When voice call ended (for concurrent voice/data not supported RAT). */ VOICE_CALL_ENDED, /** When network no longer restricts mobile data. */ DATA_RESTRICTED_LIFTED, /** When network restricts or no longer restricts mobile data. */ DATA_RESTRICTED_CHANGED, /** Network capabilities changed. The unsatisfied requests might have chances to attach. */ DATA_NETWORK_CAPABILITIES_CHANGED, } Loading Loading @@ -200,12 +207,14 @@ public class DataEvaluation { DATA_RESTRICTED_BY_NETWORK(true), /** Radio power is off (i.e. airplane mode on) */ RADIO_POWER_OFF(true), /** Data disabled by telephony in some scenarios, for example, emergency call. */ INTERNAL_DATA_DISABLED(true), /** Airplane mode is forcibly turned on by the carrier. */ RADIO_DISABLED_BY_CARRIER(true), /** Underlying data service is not bound. */ DATA_SERVICE_NOT_READY(true); DATA_SERVICE_NOT_READY(true), /** Unable to find a suitable data profile. */ NO_SUITABLE_DATA_PROFILE(true), /** Current data network type not allowed. */ DATA_NETWORK_TYPE_NOT_ALLOWED(true); private final boolean mIsHardReason; Loading src/java/com/android/internal/telephony/data/DataNetwork.java +56 −2 Original line number Diff line number Diff line Loading @@ -173,6 +173,13 @@ public class DataNetwork extends StateMachine { TEAR_DOWN_REASON_SIM_REMOVAL, TEAR_DOWN_REASON_AIRPLANE_MODE_ON, TEAR_DOWN_REASON_DATA_DISABLED, TEAR_DOWN_REASON_NO_LIVE_REQUEST, TEAR_DOWN_REASON_RAT_NOT_ALLOWED, TEAR_DOWN_REASON_ROAMING_DISABLED, TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED, TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK, TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY, TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER, }) public @interface TearDownReason {} Loading @@ -191,6 +198,24 @@ public class DataNetwork extends StateMachine { /** Data network tear down due to no live network request. */ public static final int TEAR_DOWN_REASON_NO_LIVE_REQUEST = 5; /** Data network tear down due to current RAT is not allowed by the data profile. */ public static final int TEAR_DOWN_REASON_RAT_NOT_ALLOWED = 6; /** Data network tear down due to data roaming not enabled. */ public static final int TEAR_DOWN_REASON_ROAMING_DISABLED = 7; /** Data network tear down due to concurrent voice/data not allowed. */ public static final int TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED = 8; /** Data network tear down due to network restricted. */ public static final int TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK = 9; /** Data network tear down due to data service unbound. */ public static final int TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY = 10; /** Data network tear down due to radio turned off by the carrier. */ public static final int TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER = 11; /** The phone instance. */ private final @NonNull Phone mPhone; /** Loading Loading @@ -467,7 +492,12 @@ public class DataNetwork extends StateMachine { addState(mDisconnectedState, mDefaultState); setInitialState(mConnectingState); /** * This will trigger {@link DefaultState#enter()}, and then {@link ConnectingState#enter()}. * Check {@link StateMachine} class to see how Android state machine works. */ start(); // Do not add more stuffs here. } /** Loading Loading @@ -519,6 +549,11 @@ public class DataNetwork extends StateMachine { AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler(), EVENT_SERVICE_STATE_CHANGED, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // Only add symmetric code here, for example, registering and unregistering. // DefaultState.enter() is the starting point in the life cycle of the DataNetwork, // and DefaultState.exit() is the end. For non-symmetric initializing works, put them // in ConnectingState.enter(). } @Override Loading Loading @@ -1450,7 +1485,7 @@ public class DataNetwork extends StateMachine { /** * @return {@code true} if in connecting state. */ private boolean isConnecting() { public boolean isConnecting() { return getCurrentState() == mConnectingState; } Loading @@ -1471,7 +1506,7 @@ public class DataNetwork extends StateMachine { /** * @return {@code true} if in disconnected state. */ private boolean isDisconnected() { public boolean isDisconnected() { return getCurrentState() == mDisconnectedState; } Loading @@ -1489,6 +1524,13 @@ public class DataNetwork extends StateMachine { return getState() == TelephonyManager.DATA_SUSPENDED; } /** * @return The current transport of the data network. */ public @TransportType int getTransport() { return mTransport; } private @DataState int getState() { IState state = getCurrentState(); if (state == null || isDisconnected()) { Loading Loading @@ -1572,6 +1614,18 @@ public class DataNetwork extends StateMachine { return "DATA_DISABLED"; case TEAR_DOWN_REASON_NO_LIVE_REQUEST: return "TEAR_DOWN_REASON_NO_LIVE_REQUEST"; case TEAR_DOWN_REASON_RAT_NOT_ALLOWED: return "TEAR_DOWN_REASON_RAT_NOT_ALLOWED"; case TEAR_DOWN_REASON_ROAMING_DISABLED: return "TEAR_DOWN_REASON_ROAMING_DISABLED"; case TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED: return "TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED"; case TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK: return "TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK"; case TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY: return "TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY"; case TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER: return "TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER"; default: return "UNKNOWN(" + reason + ")"; } Loading Loading
src/java/com/android/internal/telephony/data/DataConfigManager.java +13 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,15 @@ public class DataConfigManager extends Handler { return mResources.getInteger(R.integer.config_delay_for_ims_dereg_millis); } /** * @return {@code true} if PDN should persist when IWLAN data service restarted/crashed. * {@code false} will cause all data networks on IWLAN torn down if IWLAN data service crashes. */ public boolean shouldPersistIwlanDataNetworksWhenDataServiceRestarted() { return mResources.getBoolean(com.android.internal.R.bool .config_wlan_data_service_conn_persistence_on_restart); } /** * Registration point for subscription info ready * Loading Loading @@ -283,6 +292,7 @@ public class DataConfigManager extends Handler { IndentingPrintWriter pw = new IndentingPrintWriter(printWriter, " "); pw.println(DataConfigManager.class.getSimpleName() + "-" + mPhone.getPhoneId() + ":"); pw.increaseIndent(); pw.println("isConfigCarrierSpecific=" + isConfigCarrierSpecific()); pw.println("Network capability priority:"); pw.increaseIndent(); for (Map.Entry<Integer, Integer> entry : mNetworkCapabilityPriorityMap.entrySet()) { Loading @@ -297,6 +307,9 @@ public class DataConfigManager extends Handler { pw.println(rule); } pw.decreaseIndent(); pw.println("getImsDeregistrationDelay=" + getImsDeregistrationDelay()); pw.println("shouldPersistIwlanDataNetworksWhenDataServiceRestarted=" + shouldPersistIwlanDataNetworksWhenDataServiceRestarted()); pw.decreaseIndent(); } }
src/java/com/android/internal/telephony/data/DataEvaluation.java +20 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,9 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.telephony.data.DataProfile; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** Loading Loading @@ -81,6 +83,13 @@ public class DataEvaluation { mEvaluatedTime = System.currentTimeMillis(); } /** * @return List of data disallowed reasons. */ public @NonNull List<DataDisallowedReason> getDataDisallowedReasons() { return new ArrayList<>(mDataDisallowedReasons); } /** * Set the candidate data profile for setup data network. * Loading Loading @@ -154,22 +163,20 @@ public class DataEvaluation { DATA_CONFIG_CHANGED, /** SIM is loaded. */ SIM_LOADED, /** SIM is removed. */ SIM_REMOVAL, /** Data profiles changed. */ DATA_PROFILES_CHANGED, /** Airplane mode off. */ AIRPLANE_MODE_OFF, /** When data RAT changes, some unsatisfied network requests might fit with the new RAT. */ DATA_RAT_CHANGED, /** When service state changes from out of service to in service. */ DATA_IN_SERVICE, /** When service state changes.(For now only considering data RAT and data registration). */ DATA_SERVICE_STATE_CHANGED, /** When data is enabled (by user, carrier, thermal, etc...) */ DATA_ENABLED, /** When data roaming is enabled. */ ROAMING_ENABLED, /** When voice call ended (for concurrent voice/data not supported RAT). */ VOICE_CALL_ENDED, /** When network no longer restricts mobile data. */ DATA_RESTRICTED_LIFTED, /** When network restricts or no longer restricts mobile data. */ DATA_RESTRICTED_CHANGED, /** Network capabilities changed. The unsatisfied requests might have chances to attach. */ DATA_NETWORK_CAPABILITIES_CHANGED, } Loading Loading @@ -200,12 +207,14 @@ public class DataEvaluation { DATA_RESTRICTED_BY_NETWORK(true), /** Radio power is off (i.e. airplane mode on) */ RADIO_POWER_OFF(true), /** Data disabled by telephony in some scenarios, for example, emergency call. */ INTERNAL_DATA_DISABLED(true), /** Airplane mode is forcibly turned on by the carrier. */ RADIO_DISABLED_BY_CARRIER(true), /** Underlying data service is not bound. */ DATA_SERVICE_NOT_READY(true); DATA_SERVICE_NOT_READY(true), /** Unable to find a suitable data profile. */ NO_SUITABLE_DATA_PROFILE(true), /** Current data network type not allowed. */ DATA_NETWORK_TYPE_NOT_ALLOWED(true); private final boolean mIsHardReason; Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +56 −2 Original line number Diff line number Diff line Loading @@ -173,6 +173,13 @@ public class DataNetwork extends StateMachine { TEAR_DOWN_REASON_SIM_REMOVAL, TEAR_DOWN_REASON_AIRPLANE_MODE_ON, TEAR_DOWN_REASON_DATA_DISABLED, TEAR_DOWN_REASON_NO_LIVE_REQUEST, TEAR_DOWN_REASON_RAT_NOT_ALLOWED, TEAR_DOWN_REASON_ROAMING_DISABLED, TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED, TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK, TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY, TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER, }) public @interface TearDownReason {} Loading @@ -191,6 +198,24 @@ public class DataNetwork extends StateMachine { /** Data network tear down due to no live network request. */ public static final int TEAR_DOWN_REASON_NO_LIVE_REQUEST = 5; /** Data network tear down due to current RAT is not allowed by the data profile. */ public static final int TEAR_DOWN_REASON_RAT_NOT_ALLOWED = 6; /** Data network tear down due to data roaming not enabled. */ public static final int TEAR_DOWN_REASON_ROAMING_DISABLED = 7; /** Data network tear down due to concurrent voice/data not allowed. */ public static final int TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED = 8; /** Data network tear down due to network restricted. */ public static final int TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK = 9; /** Data network tear down due to data service unbound. */ public static final int TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY = 10; /** Data network tear down due to radio turned off by the carrier. */ public static final int TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER = 11; /** The phone instance. */ private final @NonNull Phone mPhone; /** Loading Loading @@ -467,7 +492,12 @@ public class DataNetwork extends StateMachine { addState(mDisconnectedState, mDefaultState); setInitialState(mConnectingState); /** * This will trigger {@link DefaultState#enter()}, and then {@link ConnectingState#enter()}. * Check {@link StateMachine} class to see how Android state machine works. */ start(); // Do not add more stuffs here. } /** Loading Loading @@ -519,6 +549,11 @@ public class DataNetwork extends StateMachine { AccessNetworkConstants.TRANSPORT_TYPE_WWAN, getHandler(), EVENT_SERVICE_STATE_CHANGED, AccessNetworkConstants.TRANSPORT_TYPE_WWAN); // Only add symmetric code here, for example, registering and unregistering. // DefaultState.enter() is the starting point in the life cycle of the DataNetwork, // and DefaultState.exit() is the end. For non-symmetric initializing works, put them // in ConnectingState.enter(). } @Override Loading Loading @@ -1450,7 +1485,7 @@ public class DataNetwork extends StateMachine { /** * @return {@code true} if in connecting state. */ private boolean isConnecting() { public boolean isConnecting() { return getCurrentState() == mConnectingState; } Loading @@ -1471,7 +1506,7 @@ public class DataNetwork extends StateMachine { /** * @return {@code true} if in disconnected state. */ private boolean isDisconnected() { public boolean isDisconnected() { return getCurrentState() == mDisconnectedState; } Loading @@ -1489,6 +1524,13 @@ public class DataNetwork extends StateMachine { return getState() == TelephonyManager.DATA_SUSPENDED; } /** * @return The current transport of the data network. */ public @TransportType int getTransport() { return mTransport; } private @DataState int getState() { IState state = getCurrentState(); if (state == null || isDisconnected()) { Loading Loading @@ -1572,6 +1614,18 @@ public class DataNetwork extends StateMachine { return "DATA_DISABLED"; case TEAR_DOWN_REASON_NO_LIVE_REQUEST: return "TEAR_DOWN_REASON_NO_LIVE_REQUEST"; case TEAR_DOWN_REASON_RAT_NOT_ALLOWED: return "TEAR_DOWN_REASON_RAT_NOT_ALLOWED"; case TEAR_DOWN_REASON_ROAMING_DISABLED: return "TEAR_DOWN_REASON_ROAMING_DISABLED"; case TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED: return "TEAR_DOWN_REASON_CONCURRENT_VOICE_DATA_NOT_ALLOWED"; case TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK: return "TEAR_DOWN_REASON_DATA_RESTRICTED_BY_NETWORK"; case TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY: return "TEAR_DOWN_REASON_DATA_SERVICE_NOT_READY"; case TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER: return "TEAR_DOWN_REASON_POWER_OFF_BY_CARRIER"; default: return "UNKNOWN(" + reason + ")"; } Loading