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

Commit 5520e3e9 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati Committed by Android (Google) Code Review
Browse files

Merge "Move to connected or not_connected if disable satellite request fails." into main

parents b560afdb df7a1df9
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -4628,15 +4628,7 @@ public class SatelliteController extends Handler {
                mSessionStartTimeStamp = 0;
                mSessionProcessingTimeStamp = 0;
            } else {
                /*
                 * Unregister Importance Listener for Pointing UI when Satellite is disabled
                 */
                synchronized (mNeedsSatellitePointingLock) {
                    if (mNeedsSatellitePointing) {
                        mPointingAppController.removeListenerForPointingUI();
                    }
                }
                moveSatelliteToOffStateAndCleanUpResources(SATELLITE_RESULT_MODEM_TIMEOUT, null);
                notifyEnablementFailedToSatelliteSessionController();
                mControllerMetricsStats.onSatelliteDisabled();
                mWaitingForDisableSatelliteModemResponse = false;
                mWaitingForSatelliteModemOff = false;
+31 −2
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@ import android.os.RemoteException;
import android.os.SystemProperties;
import android.telephony.DropBoxManagerLoggerBackend;
import android.telephony.PersistentLogger;
import android.telephony.Rlog;
import android.telephony.satellite.ISatelliteModemStateCallback;
import android.telephony.satellite.SatelliteManager;
import android.telephony.satellite.stub.ISatelliteGateway;
@@ -139,6 +138,7 @@ public class SatelliteSessionController extends StateMachine {
    private long mSatelliteNbIotInactivityTimeoutMillis;
    private final ConcurrentHashMap<IBinder, ISatelliteModemStateCallback> mListeners;
    @SatelliteManager.SatelliteModemState private int mCurrentState;
    @SatelliteManager.SatelliteModemState private int mPreviousState;
    final boolean mIsSatelliteSupported;
    private boolean mIsDemoMode = false;
    @GuardedBy("mLock")
@@ -147,7 +147,6 @@ public class SatelliteSessionController extends StateMachine {
    @NonNull private final DatagramController mDatagramController;
    @Nullable private PersistentLogger mPersistentLogger = null;


    /**
     * @return The singleton instance of SatelliteSessionController.
     */
@@ -215,6 +214,7 @@ public class SatelliteSessionController extends StateMachine {
                getSatelliteNbIotInactivityTimeoutMillis();
        mListeners = new ConcurrentHashMap<>();
        mIsSendingTriggeredDuringTransferringState = new AtomicBoolean(false);
        mPreviousState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
        mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
        mIsSatelliteSupported = isSatelliteSupported;
        mExponentialBackoff = new ExponentialBackoff(REBIND_INITIAL_DELAY, REBIND_MAXIMUM_DELAY,
@@ -441,6 +441,7 @@ public class SatelliteSessionController extends StateMachine {
        @Override
        public void enter() {
            if (DBG) plogd("Entering UnavailableState");
            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE);
        }
@@ -457,6 +458,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering PowerOffState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_OFF;
            mIsSendingTriggeredDuringTransferringState.set(false);
            synchronized (mLock) {
@@ -501,6 +503,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering EnablingState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_ENABLING_SATELLITE);
        }
@@ -554,6 +557,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering DisablingState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DISABLING_SATELLITE);
        }
@@ -570,6 +574,19 @@ public class SatelliteSessionController extends StateMachine {
                case EVENT_SATELLITE_ENABLED_STATE_CHANGED:
                    handleSatelliteEnabledStateChanged((boolean) msg.obj);
                    break;
                case EVENT_SATELLITE_ENABLEMENT_FAILED:
                    if (mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED
                            || mPreviousState
                            == SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING
                            || mPreviousState == SatelliteManager.SATELLITE_MODEM_STATE_LISTENING) {
                        transitionTo(mConnectedState);
                    } else {
                        transitionTo(mNotConnectedState);
                    }
                    break;
                case EVENT_SATELLITE_MODEM_STATE_CHANGED:
                    handleEventSatelliteModemStateChanged(msg.arg1);
                    break;
            }
            // Ignore all unexpected events.
            return HANDLED;
@@ -582,12 +599,20 @@ public class SatelliteSessionController extends StateMachine {
                transitionTo(mPowerOffState);
            }
        }

        private void handleEventSatelliteModemStateChanged(
                @SatelliteManager.SatelliteModemState int state) {
            if (state == SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED) {
                mPreviousState = state;
            }
        }
    }

    private class IdleState extends State {
        @Override
        public void enter() {
            if (DBG) plogd("Entering IdleState");
            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_IDLE;
            mIsSendingTriggeredDuringTransferringState.set(false);
            stopNbIotInactivityTimer();
@@ -686,6 +711,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering TransferringState");
            stopNbIotInactivityTimer();
            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
        }
@@ -745,6 +771,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering ListeningState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_LISTENING;
            long timeoutMillis = updateListeningMode(true);
            sendMessageDelayed(EVENT_LISTENING_TIMER_TIMEOUT, timeoutMillis);
@@ -808,6 +835,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering NotConnectedState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED);
            startNbIotInactivityTimer();
@@ -873,6 +901,7 @@ public class SatelliteSessionController extends StateMachine {
        public void enter() {
            if (DBG) plogd("Entering ConnectedState");

            mPreviousState = mCurrentState;
            mCurrentState = SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED;
            notifyStateChangedEvent(SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
            startNbIotInactivityTimer();
+3 −2
Original line number Diff line number Diff line
@@ -3434,7 +3434,8 @@ public class SatelliteControllerTest extends TelephonyTest {
        assertEquals(SATELLITE_RESULT_MODEM_TIMEOUT, (long) mIIntegerConsumerResults.get(0));
        verify(mMockSatelliteModemInterface, never()).requestSatelliteEnabled(anyBoolean(),
                anyBoolean(), anyBoolean(), any(Message.class));
        verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS);
        // Satellite should state at enabled state since satellite disable request failed
        verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);

        // Send the response for the above request to disable satellite. SatelliteController should
        // ignore the event
@@ -3442,7 +3443,7 @@ public class SatelliteControllerTest extends TelephonyTest {
        AsyncResult.forMessage(response, null, null);
        response.sendToTarget();
        processAllMessages();
        verifySatelliteEnabled(false, SATELLITE_RESULT_SUCCESS);
        verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);
    }

    @Test
+32 −7
Original line number Diff line number Diff line
@@ -936,28 +936,41 @@ public class SatelliteSessionControllerTest extends TelephonyTest {
        assertNotNull(mTestSatelliteSessionController);
        assertEquals(STATE_POWER_OFF, mTestSatelliteSessionController.getCurrentStateName());

        // IDLE -> DISABLING
        // IDLE -> DISABLING request failed -> NOT_CONNECTED
        moveToIdleState();
        moveSatelliteToDisablingRequestFailed(SatelliteManager.SATELLITE_MODEM_STATE_NOT_CONNECTED,
                STATE_NOT_CONNECTED);

        // NOT_CONNECTED -> DISABLING -> POWER_OFF
        moveSatelliteToDisablingState();
        moveToPowerOffState();

        // DISABLING -> POWER_OFF
        // IDLE -> DISABLING -> POWER_OFF
        moveToIdleState();
        moveSatelliteToDisablingState();
        moveToPowerOffState();

        // TRANSFERRING -> DISABLING
        // TRANSFERRING -> DISABLING request failed -> CONNECTED
        moveToIdleState();
        moveIdleToTransferringState();
        moveSatelliteToDisablingRequestFailed(
                SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED, STATE_CONNECTED);

        // CONNECTED -> DISABLING -> POWER_OFF
        moveSatelliteToDisablingState();
        moveToPowerOffState();

        // DISABLING -> POWER_OFF
        // TRANSFERRING -> DISABLING -> POWER_OFF
        moveToIdleState();
        moveIdleToTransferringState();
        moveSatelliteToDisablingState();
        moveToPowerOffState();

        // LISTENING -> DISABLING
        // LISTENING -> DISABLING -> POWER_OFF
        moveToIdleState();
        moveIdleToTransferringState();
        moveTransferringToListeningState();
        moveSatelliteToDisablingState();

        // DISABLING -> POWER_OFF
        moveToPowerOffState();
    }

@@ -1112,6 +1125,18 @@ public class SatelliteSessionControllerTest extends TelephonyTest {
                STATE_DISABLING_SATELLITE, mTestSatelliteSessionController.getCurrentStateName());
    }

    private void moveSatelliteToDisablingRequestFailed(int state, String stateName) {
        moveSatelliteToDisablingState();

        // Satellite disabled request failed
        mTestSatelliteSessionController.onSatelliteEnablementFailed();
        processAllMessages();

        // Satellite should stay in previous state as satellite disable request failed
        assertSuccessfulModemStateChangedCallback(mTestSatelliteModemStateCallback, state);
        assertEquals(stateName, mTestSatelliteSessionController.getCurrentStateName());
    }

    private static class TestSatelliteModemInterface extends SatelliteModemInterface {
        private final AtomicInteger mListeningEnabledCount = new AtomicInteger(0);
        private final AtomicInteger mListeningDisabledCount = new AtomicInteger(0);