diff options
| author | Ravindra <c_rthat@codeaurora.org> | 2016-04-07 16:41:18 +0530 |
|---|---|---|
| committer | Steve Kondik <steve@cyngn.com> | 2016-07-02 10:55:01 -0700 |
| commit | b6d95be167664c9bc81bfbb0d1f487f2926cbf84 (patch) | |
| tree | 992debbc148f145b8251455cb64445b628d21cfe | |
| parent | fea40e5c879a0173a8822e9d44c4810602ca58cb (diff) | |
| download | android_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.java | 9 | ||||
| -rw-r--r-- | src/java/com/android/internal/telephony/dataconnection/DctController.java | 11 |
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 { |
