aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRavindra <c_rthat@codeaurora.org>2016-04-07 16:41:18 +0530
committerSteve Kondik <steve@cyngn.com>2016-07-02 10:55:01 -0700
commitb6d95be167664c9bc81bfbb0d1f487f2926cbf84 (patch)
tree992debbc148f145b8251455cb64445b628d21cfe
parentfea40e5c879a0173a8822e9d44c4810602ca58cb (diff)
downloadandroid_frameworks_opt_telephony-b6d95be167664c9bc81bfbb0d1f487f2926cbf84.tar.gz
android_frameworks_opt_telephony-b6d95be167664c9bc81bfbb0d1f487f2926cbf84.tar.bz2
android_frameworks_opt_telephony-b6d95be167664c9bc81bfbb0d1f487f2926cbf84.zip
Fix to avoid unnecessary PS attach.
When data attach event is received in IDLE state send PS attach only if the attached RAT is CDMA. Change-Id: Id4b1b8267f7052101eaea115e49849b4a09cd694 CRs-Fixed: 995959 963959
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DcSwitchStateMachine.java9
-rw-r--r--src/java/com/android/internal/telephony/dataconnection/DctController.java11
2 files changed, 17 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/dataconnection/DcSwitchStateMachine.java b/src/java/com/android/internal/telephony/dataconnection/DcSwitchStateMachine.java
index b16d0571a..ff9fd14f3 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DcSwitchStateMachine.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DcSwitchStateMachine.java
@@ -145,8 +145,12 @@ public class DcSwitchStateMachine extends StateMachine {
/* Move to AttachingState and handle this ATTACH msg over there.
* This would ensure that Modem gets a ALLOW_DATA(true)
*/
- deferMessage(msg);
- transitionTo(mAttachingState);
+ if (ServiceState.isCdma(dataRat)) {
+ deferMessage(msg);
+ transitionTo(mAttachingState);
+ } else {
+ transitionTo(mAttachedState);
+ }
} else {
if (DBG) log("IdleState: ignore ATATCHed event as data is not allowed");
}
@@ -251,6 +255,7 @@ public class DcSwitchStateMachine extends StateMachine {
final PhoneBase pb = (PhoneBase)((PhoneProxy)mPhone).getActivePhone();
pb.mCi.setDataAllowed(true, obtainMessage(EVENT_DATA_ALLOWED,
++mCurrentAllowedSequence, 0));
+ DctController.getInstance().resetDdsSwitchNeededFlag();
// if we're on a carrier that unattaches us if we're idle for too long
// (on wifi) and they won't re-attach until we poke them. Poke them!
// essentially react as Attached does here in Attaching.
diff --git a/src/java/com/android/internal/telephony/dataconnection/DctController.java b/src/java/com/android/internal/telephony/dataconnection/DctController.java
index 1ab146d84..28262fcad 100644
--- a/src/java/com/android/internal/telephony/dataconnection/DctController.java
+++ b/src/java/com/android/internal/telephony/dataconnection/DctController.java
@@ -96,6 +96,7 @@ public class DctController extends Handler {
private SubscriptionManager mSubMgr;
protected AtomicBoolean[] mIsDataAllowed;
+ protected AtomicBoolean mNeedsDdsSwitch = new AtomicBoolean(false);
private OnSubscriptionsChangedListener mOnSubscriptionsChangedListener =
new OnSubscriptionsChangedListener() {
@@ -530,7 +531,7 @@ public class DctController extends Handler {
protected void onSettingsChanged() {
//Sub Selection
int dataSubId = mSubController.getDefaultDataSubId();
-
+ mNeedsDdsSwitch.set(true);
int activePhoneId = -1;
for (int i=0; i<mDcSwitchStateMachine.length; i++) {
if (!mDcSwitchAsyncChannel[i].isIdleSync()) {
@@ -870,6 +871,14 @@ public class DctController extends Handler {
mIsDataAllowed[phoneId].get();
}
+ public boolean isDdsSwitchNeeded() {
+ return mNeedsDdsSwitch.get();
+ }
+
+ public void resetDdsSwitchNeededFlag() {
+ mNeedsDdsSwitch.set(false);
+ }
+
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
pw.println("DctController:");
try {