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

Commit 1e3b555e authored by SongFerngWang's avatar SongFerngWang Committed by SongFerng Wang
Browse files

NrConnectedState can't start NR Icon timer

Because the NrConnectedState receives the
EVENT_DATA_ACTIVITY_CHANGED before the EVENT_NR_FREQUENCY_CHANGED,
and it causes the state's name is changed to STATE_CONNECTED
from STATE_CONNECTED_MMWAVE. Therefore, NrConnectedState can't start
the timer while it receives the EVENT_NR_FREQUENCY_CHANGED.

Bug: 157388635
Test: atest NetworkTypeControllerTest (PASS)
Change-Id: Id2fe11c51684f3fa76f5a84cc92bf0b91565fb99
Merged-In: Id2fe11c51684f3fa76f5a84cc92bf0b91565fb99
parent c98d2636
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -501,12 +501,15 @@ public class NetworkTypeController extends StateMachine {
     * This is the initial state.
     */
    private final class LegacyState extends State {
        private Boolean mIsNrRestricted = false;

        @Override
        public void enter() {
            if (DBG) log("Entering LegacyState");
            updateTimers();
            updateOverrideNetworkType();
            if (!mIsPrimaryTimerActive && !mIsSecondaryTimerActive) {
                mIsNrRestricted = isNrRestricted();
                mPreviousState = getName();
            }
        }
@@ -525,6 +528,7 @@ public class NetworkTypeController extends StateMachine {
                    } else {
                        updateOverrideNetworkType();
                    }
                    mIsNrRestricted = isNrRestricted();
                    break;
                case EVENT_NR_STATE_CHANGED:
                    if (isNrConnected()) {
@@ -534,6 +538,7 @@ public class NetworkTypeController extends StateMachine {
                    } else if (isLte(rat) && isNrRestricted()) {
                        updateOverrideNetworkType();
                    }
                    mIsNrRestricted = isNrRestricted();
                    break;
                case EVENT_NR_FREQUENCY_CHANGED:
                case EVENT_DATA_ACTIVITY_CHANGED:
@@ -550,7 +555,7 @@ public class NetworkTypeController extends StateMachine {

        @Override
        public String getName() {
            return isNrRestricted() ? STATE_RESTRICTED : STATE_LEGACY;
            return mIsNrRestricted  ? STATE_RESTRICTED : STATE_LEGACY;
        }
    }

@@ -678,12 +683,15 @@ public class NetworkTypeController extends StateMachine {
     * Device is connected to 5G NR as the secondary cell.
     */
    private final class NrConnectedState extends State {
        private Boolean mIsNrMmwave = false;

        @Override
        public void enter() {
            if (DBG) log("Entering NrConnectedState");
            updateTimers();
            updateOverrideNetworkType();
            if (!mIsPrimaryTimerActive && !mIsSecondaryTimerActive) {
                mIsNrMmwave = isNrMmwave();
                mPreviousState = getName();
            }
        }
@@ -722,6 +730,7 @@ public class NetworkTypeController extends StateMachine {
                        // STATE_CONNECTED -> STATE_CONNECTED_MMWAVE
                        transitionTo(mNrConnectedState);
                    }
                    mIsNrMmwave = isNrMmwave();
                    break;
                case EVENT_DATA_ACTIVITY_CHANGED:
                    // ignore
@@ -737,7 +746,7 @@ public class NetworkTypeController extends StateMachine {

        @Override
        public String getName() {
            return isNrMmwave() ? STATE_CONNECTED_MMWAVE : STATE_CONNECTED;
            return mIsNrMmwave ? STATE_CONNECTED_MMWAVE : STATE_CONNECTED;
        }
    }