summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kazuhiro Ondo <kazuhiro.ondo@motorola.com> 2011-12-13 10:34:37 -0600
committer Wink Saville <wink@google.com> 2011-12-20 17:04:52 -0800
commit6de972a5c3bd614aefa1f17e9a1e00f08613a336 (patch)
treeef157c79c77ba90a03f8e760cf7a03d9852446d4
parentc892e177c4f7a41e910c70f68d4e213589da1396 (diff)
Support suggestedRetryTime in CDMA DCT
Support suggestedRetryTime in SETUP_DATA response in CDMA DCT. Bug: 5740832 Change-Id: I4abd884bec76f1d9ee29d1ba36c7ea2cac9e0fb3
-rw-r--r--telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java26
1 files changed, 20 insertions, 6 deletions
diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
index 5889372526c7..7f0f4265b5fb 100644
--- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java
@@ -41,6 +41,7 @@ import com.android.internal.telephony.DataConnectionAc;
import com.android.internal.telephony.DataConnectionTracker;
import com.android.internal.telephony.EventLogTags;
import com.android.internal.telephony.RetryManager;
+import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.Phone;
import com.android.internal.util.AsyncChannel;
@@ -506,7 +507,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
return retry;
}
- private void reconnectAfterFail(FailCause lastFailCauseCode, String reason) {
+ private void reconnectAfterFail(FailCause lastFailCauseCode, String reason, int retryOverride) {
if (mState == State.FAILED) {
/**
* For now With CDMA we never try to reconnect on
@@ -514,9 +515,12 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
* at the last time until the state is changed.
* TODO: Make this configurable?
*/
- int nextReconnectDelay = mDataConnections.get(0).getRetryTimer();
+ int nextReconnectDelay = retryOverride;
+ if (nextReconnectDelay < 0) {
+ nextReconnectDelay = mDataConnections.get(0).getRetryTimer();
+ mDataConnections.get(0).increaseRetryCount();
+ }
startAlarmForReconnect(nextReconnectDelay, reason);
- mDataConnections.get(0).increaseRetryCount();
if (!shouldPostNotification(lastFailCauseCode)) {
log("NOT Posting Data Connection Unavailable notification "
@@ -674,7 +678,17 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
notifyNoData(cause);
return;
}
- startDelayedRetry(cause, reason);
+
+ int retryOverride = -1;
+ if (ar.exception instanceof DataConnection.CallSetupException) {
+ retryOverride =
+ ((DataConnection.CallSetupException)ar.exception).getRetryOverride();
+ }
+ if (retryOverride == RILConstants.MAX_INT) {
+ if (DBG) log("No retry is suggested.");
+ } else {
+ startDelayedRetry(cause, reason, retryOverride);
+ }
}
}
@@ -907,9 +921,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
}
}
- private void startDelayedRetry(FailCause cause, String reason) {
+ private void startDelayedRetry(FailCause cause, String reason, int retryOverride) {
notifyNoData(cause);
- reconnectAfterFail(cause, reason);
+ reconnectAfterFail(cause, reason, retryOverride);
}
@Override