Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 525a40fa authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Ricardo Cerqueira
Browse files

Telephony Data: Introduce DataAllowed state

Currently Data Connection state transition from sending allow data
to attached state skipping data allowed state. This is incorrect
as first one is configuration and second is registration with network.
Adding new state to move to DataAllowed state once configuration is
updated correctly.

Change-Id: I57f4f78759ddb74dc3da0488a5c38241edbd41a1
CRs-Fixed: 962649
parent f6ea061b
Loading
Loading
Loading
Loading
+49 −1
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ public class DcSwitchStateMachine extends StateMachine {
    private IdleState mIdleState = new IdleState();
    private EmergencyState mEmergencyState = new EmergencyState();
    private AttachingState mAttachingState = new AttachingState();
    private DataAllowedState mDataAllowedState = new DataAllowedState();
    private AttachedState mAttachedState = new AttachedState();
    private DetachingState mDetachingState = new DetachingState();
    private DefaultState mDefaultState = new DefaultState();
@@ -74,6 +75,7 @@ public class DcSwitchStateMachine extends StateMachine {
        addState(mIdleState, mDefaultState);
        addState(mEmergencyState, mDefaultState);
        addState(mAttachingState, mDefaultState);
        addState(mDataAllowedState, mAttachingState);
        addState(mAttachedState, mDefaultState);
        addState(mDetachingState, mDefaultState);
        setInitialState(mIdleState);
@@ -312,6 +314,10 @@ public class DcSwitchStateMachine extends StateMachine {
                            if (dataState == ServiceState.STATE_IN_SERVICE) {
                                logd("AttachingState: Already attached, move to ATTACHED state");
                                transitionTo(mAttachedState);
                            } else {
                                logd("AttachingState: Received success on Data allowed, " +
                                     "move to Data Allowed state");
                                transitionTo(mDataAllowedState);
                            }

                        }
@@ -356,7 +362,9 @@ public class DcSwitchStateMachine extends StateMachine {
                        DctController.getInstance().releaseAllRequests(mId);
                    }

                    transitionTo(mIdleState);
                    // Wait for data allowed response to allow further
                    // changes in DDS configuration.
                    deferMessage(msg);
                    retVal = HANDLED;
                    break;
                }
@@ -373,6 +381,46 @@ public class DcSwitchStateMachine extends StateMachine {
        }
    }

    private class DataAllowedState extends State {
        private int mCurrentAllowedSequence = 0;
        @Override
        public void enter() {
            log("DataAllowedState: enter");
        }

        @Override
        public boolean processMessage(Message msg) {
            boolean retVal;

            switch (msg.what) {
                case DcSwitchAsyncChannel.REQ_DISCONNECT_ALL: {
                    if (DBG) {
                        log("DataAllowedState: REQ_DISCONNECT_ALL" );
                    }
                    final PhoneBase pb = (PhoneBase)((PhoneProxy)mPhone).getActivePhone();
                    if (pb.mDcTracker.getAutoAttachOnCreation()) {
                        // if AutoAttachOnCreation, then we may have executed requests
                        // without ever actually getting to Attached, so release the request
                        // here in that case.
                        if (DBG) log("releasingAll due to autoAttach");
                        DctController.getInstance().releaseAllRequests(mId);
                    }
                    transitionTo(mIdleState);
                    retVal = HANDLED;
                    break;
                }
                default:
                    if (VDBG) {
                        log("DataAllowedState: nothandled msg.what=0x" +
                                Integer.toHexString(msg.what));
                    }
                    retVal = NOT_HANDLED;
                    break;
            }
            return retVal;
        }
    }

    private class AttachedState extends State {
        @Override
        public void enter() {