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

Commit bc082140 authored by Thomas Nguyen's avatar Thomas Nguyen Committed by Android (Google) Code Review
Browse files

Merge "Handle datagram receive success event on CONNECTED state for NB_IOT" into main

parents a7ca5316 c473dc2a
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -711,6 +711,9 @@ public class SatelliteSessionController extends StateMachine {
                    && datagramTransferState.receiveState
                    == SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE) {
                startNbIotInactivityTimer();
            } else if (isSending(datagramTransferState.sendState)
                    || isReceiving(datagramTransferState.receiveState)) {
                restartNbIotInactivityTimer();
            }
        }
    }
@@ -761,9 +764,8 @@ public class SatelliteSessionController extends StateMachine {

        private void handleEventDatagramTransferStateChanged(
                @NonNull DatagramTransferState datagramTransferState) {
            if (datagramTransferState.sendState == SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING
                    || datagramTransferState.receiveState
                    == SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING) {
            if (isSending(datagramTransferState.sendState)
                    || isReceiving(datagramTransferState.receiveState)) {
                transitionTo(mTransferringState);
            }
        }
@@ -974,6 +976,11 @@ public class SatelliteSessionController extends StateMachine {
                R.integer.config_satellite_nb_iot_inactivity_timeout_millis);
    }

    private void restartNbIotInactivityTimer() {
        stopNbIotInactivityTimer();
        startNbIotInactivityTimer();
    }

    private void startNbIotInactivityTimer() {
        if (isNbIotInactivityTimerStarted()) {
            logd("NB IOT inactivity timer is already started");
+30 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.telephony.satellite;

import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING;
import static android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED;
@@ -571,6 +572,35 @@ public class SatelliteSessionControllerTest extends TelephonyTest {
                SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
        clearInvocations(mMockDatagramController);

        // Start receiving datagrams
        mTestSatelliteSessionController.onDatagramTransferStateChanged(
                SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
                SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS);
        processAllMessages();

        // SatelliteSessionController should move to TRANSFERRING state.
        assertSuccessfulModemStateChangedCallback(mTestSatelliteModemStateCallback,
                SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
        assertEquals(STATE_TRANSFERRING, mTestSatelliteSessionController.getCurrentStateName());
        assertFalse(mTestSatelliteSessionController.isNbIotInactivityTimerStarted());
        verify(mMockDatagramController).onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING);
        clearInvocations(mMockDatagramController);

        // Receiving datagrams is successful and done.
        mTestSatelliteSessionController.onDatagramTransferStateChanged(
                SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE, SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE);
        processAllMessages();

        // SatelliteSessionController should move to CONNECTED state.
        assertSuccessfulModemStateChangedCallback(mTestSatelliteModemStateCallback,
                SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
        assertEquals(STATE_CONNECTED, mTestSatelliteSessionController.getCurrentStateName());
        assertTrue(mTestSatelliteSessionController.isNbIotInactivityTimerStarted());
        verify(mMockDatagramController).onSatelliteModemStateChanged(
                SatelliteManager.SATELLITE_MODEM_STATE_CONNECTED);
        clearInvocations(mMockDatagramController);

        // Wait for timeout
        moveTimeForward(TEST_SATELLITE_TIMEOUT_MILLIS);
        processAllMessages();