Loading src/java/com/android/internal/telephony/data/DataNetwork.java +27 −34 Original line number Diff line number Diff line Loading @@ -576,6 +576,11 @@ public class DataNetwork extends StateMachine { */ private @DataFailureCause int mFailCause = DataFailCause.NONE; /** * The retry delay in milliseconds from setup data failure. */ private long mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; /** * Indicates if data network is suspended. Note this is slightly different from the * {@link TelephonyManager#DATA_SUSPENDED}, which is only possible when data network is in Loading Loading @@ -1065,10 +1070,8 @@ public class DataNetwork extends StateMachine { UUID.fromString("58c56403-7ea7-4e56-a0c7-e467114d09b8"), message); // Setup data failed. Use the retry logic defined in // CarrierConfigManager.KEY_TELEPHONY_DATA_SETUP_RETRY_RULES_STRING_ARRAY. mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; mFailCause = DataFailCause.NO_RETRY_FAILURE; transitionTo(mDisconnectedState); break; default: Loading Loading @@ -1345,6 +1348,18 @@ public class DataNetwork extends StateMachine { @Override public void enter() { logl("Data network disconnected. mEverConnected=" + mEverConnected); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onDisconnected(DataNetwork.this, mFailCause)); if (mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) { unregisterForWwanEvents(); } } else { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, new NetworkRequestList(mAttachedNetworkRequestList), mFailCause, mRetryDelayMillis)); } // The detach all network requests must be the last message to handle. sendMessage(EVENT_DETACH_ALL_NETWORK_REQUESTS); // Gracefully handle all the un-processed events then quit the state machine. Loading Loading @@ -2058,12 +2073,8 @@ public class DataNetwork extends StateMachine { transitionTo(mConnectedState); } else { // Setup data failed. long retryDelayMillis = response != null ? response.getRetryDurationMillis() mRetryDelayMillis = response != null ? response.getRetryDurationMillis() : DataCallResponse.RETRY_DURATION_UNDEFINED; NetworkRequestList requestList = new NetworkRequestList(mAttachedNetworkRequestList); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback.onSetupDataFailed( DataNetwork.this, requestList, mFailCause, retryDelayMillis)); transitionTo(mDisconnectedState); } Loading @@ -2090,9 +2101,7 @@ public class DataNetwork extends StateMachine { + DataServiceCallback.resultCodeToString(resultCode)); if (resultCode == DataServiceCallback.RESULT_ERROR_INVALID_RESPONSE) { log("Remove network since deactivate request returned an error."); mDataNetworkCallback.invokeFromExecutor( () -> mDataNetworkCallback.onDisconnected( DataNetwork.this, DataFailCause.RADIO_NOT_AVAILABLE)); mFailCause = DataFailCause.RADIO_NOT_AVAILABLE; transitionTo(mDisconnectedState); } } Loading Loading @@ -2193,18 +2202,9 @@ public class DataNetwork extends StateMachine { log("onDataStateChanged: PDN inactive reported by " + AccessNetworkConstants.transportTypeToString(mTransport) + " data service."); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor( () -> mDataNetworkCallback.onDisconnected( DataNetwork.this, response.getCause())); } else { log("onDataStateChanged: never in connected state. Treated as a setup " + "failure."); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); } mFailCause = mEverConnected ? response.getCause() : DataFailCause.NO_RETRY_FAILURE; mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; transitionTo(mDisconnectedState); } } Loading @@ -2214,16 +2214,9 @@ public class DataNetwork extends StateMachine { // for that log("onDataStateChanged: PDN disconnected reported by " + AccessNetworkConstants.transportTypeToString(mTransport) + " data service."); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onDisconnected(DataNetwork.this, DataFailCause.LOST_CONNECTION)); } else { log("onDataStateChanged: never in connected state. Treated as a setup failure."); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); } mFailCause = mEverConnected ? DataFailCause.LOST_CONNECTION : DataFailCause.NO_RETRY_FAILURE; mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; transitionTo(mDisconnectedState); } } Loading Loading
src/java/com/android/internal/telephony/data/DataNetwork.java +27 −34 Original line number Diff line number Diff line Loading @@ -576,6 +576,11 @@ public class DataNetwork extends StateMachine { */ private @DataFailureCause int mFailCause = DataFailCause.NONE; /** * The retry delay in milliseconds from setup data failure. */ private long mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; /** * Indicates if data network is suspended. Note this is slightly different from the * {@link TelephonyManager#DATA_SUSPENDED}, which is only possible when data network is in Loading Loading @@ -1065,10 +1070,8 @@ public class DataNetwork extends StateMachine { UUID.fromString("58c56403-7ea7-4e56-a0c7-e467114d09b8"), message); // Setup data failed. Use the retry logic defined in // CarrierConfigManager.KEY_TELEPHONY_DATA_SETUP_RETRY_RULES_STRING_ARRAY. mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; mFailCause = DataFailCause.NO_RETRY_FAILURE; transitionTo(mDisconnectedState); break; default: Loading Loading @@ -1345,6 +1348,18 @@ public class DataNetwork extends StateMachine { @Override public void enter() { logl("Data network disconnected. mEverConnected=" + mEverConnected); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onDisconnected(DataNetwork.this, mFailCause)); if (mTransport == AccessNetworkConstants.TRANSPORT_TYPE_WWAN) { unregisterForWwanEvents(); } } else { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, new NetworkRequestList(mAttachedNetworkRequestList), mFailCause, mRetryDelayMillis)); } // The detach all network requests must be the last message to handle. sendMessage(EVENT_DETACH_ALL_NETWORK_REQUESTS); // Gracefully handle all the un-processed events then quit the state machine. Loading Loading @@ -2058,12 +2073,8 @@ public class DataNetwork extends StateMachine { transitionTo(mConnectedState); } else { // Setup data failed. long retryDelayMillis = response != null ? response.getRetryDurationMillis() mRetryDelayMillis = response != null ? response.getRetryDurationMillis() : DataCallResponse.RETRY_DURATION_UNDEFINED; NetworkRequestList requestList = new NetworkRequestList(mAttachedNetworkRequestList); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback.onSetupDataFailed( DataNetwork.this, requestList, mFailCause, retryDelayMillis)); transitionTo(mDisconnectedState); } Loading @@ -2090,9 +2101,7 @@ public class DataNetwork extends StateMachine { + DataServiceCallback.resultCodeToString(resultCode)); if (resultCode == DataServiceCallback.RESULT_ERROR_INVALID_RESPONSE) { log("Remove network since deactivate request returned an error."); mDataNetworkCallback.invokeFromExecutor( () -> mDataNetworkCallback.onDisconnected( DataNetwork.this, DataFailCause.RADIO_NOT_AVAILABLE)); mFailCause = DataFailCause.RADIO_NOT_AVAILABLE; transitionTo(mDisconnectedState); } } Loading Loading @@ -2193,18 +2202,9 @@ public class DataNetwork extends StateMachine { log("onDataStateChanged: PDN inactive reported by " + AccessNetworkConstants.transportTypeToString(mTransport) + " data service."); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor( () -> mDataNetworkCallback.onDisconnected( DataNetwork.this, response.getCause())); } else { log("onDataStateChanged: never in connected state. Treated as a setup " + "failure."); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); } mFailCause = mEverConnected ? response.getCause() : DataFailCause.NO_RETRY_FAILURE; mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; transitionTo(mDisconnectedState); } } Loading @@ -2214,16 +2214,9 @@ public class DataNetwork extends StateMachine { // for that log("onDataStateChanged: PDN disconnected reported by " + AccessNetworkConstants.transportTypeToString(mTransport) + " data service."); if (mEverConnected) { mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onDisconnected(DataNetwork.this, DataFailCause.LOST_CONNECTION)); } else { log("onDataStateChanged: never in connected state. Treated as a setup failure."); mDataNetworkCallback.invokeFromExecutor(() -> mDataNetworkCallback .onSetupDataFailed(DataNetwork.this, mAttachedNetworkRequestList, DataFailCause.NO_RETRY_FAILURE, DataCallResponse.RETRY_DURATION_UNDEFINED)); } mFailCause = mEverConnected ? DataFailCause.LOST_CONNECTION : DataFailCause.NO_RETRY_FAILURE; mRetryDelayMillis = DataCallResponse.RETRY_DURATION_UNDEFINED; transitionTo(mDisconnectedState); } } Loading