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

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

Merge "Update mSatelliteModemState variable in DatagramController" into main

parents 5b845588 9b731ba0
Loading
Loading
Loading
Loading
+46 −47
Original line number Diff line number Diff line
@@ -108,9 +108,9 @@ public class DatagramController {
    private AtomicLong mModemImageSwitchingDuration = new AtomicLong(0);
    private AtomicBoolean mWaitForDeviceAlignmentInDemoDatagram = new AtomicBoolean(false);
    private AtomicLong mDatagramWaitTimeForConnectedStateForLastMessage = new AtomicLong(0);
    @GuardedBy("mLock")
    @SatelliteManager.SatelliteModemState
    private int mSatelltieModemState = SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
    private AtomicInteger mSatelltieModemState =
            new AtomicInteger(SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN);
    @Nullable
    private PersistentLogger mPersistentLogger = null;

@@ -286,17 +286,15 @@ public class DatagramController {

    private boolean shouldSuppressDatagramTransferStateUpdate(
            @SatelliteManager.DatagramType int datagramType) {
        synchronized (mLock) {
        if (!SatelliteController.getInstance().isSatelliteAttachRequired()) {
            return false;
        }
        if (datagramType == DATAGRAM_TYPE_KEEP_ALIVE
                    && mSatelltieModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED) {
                && mSatelltieModemState.get() == SATELLITE_MODEM_STATE_NOT_CONNECTED) {
            return true;
        }
        return false;
    }
    }

    /**
     * Update receive status to {@link PointingAppController}.
@@ -355,10 +353,9 @@ public class DatagramController {
     *
     * @param state Current satellite modem state.
     */
    public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
        synchronized (mLock) {
            mSatelltieModemState = state;
        }
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    protected void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
        mSatelltieModemState.set(state);
        mDatagramDispatcher.onSatelliteModemStateChanged(state);
        mDatagramReceiver.onSatelliteModemStateChanged(state);
    }
@@ -404,32 +401,35 @@ public class DatagramController {
     * before transferring datagrams via satellite.
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public boolean needsWaitingForSatelliteConnected(
    protected boolean needsWaitingForSatelliteConnected(
            @SatelliteManager.DatagramType int datagramType) {
        synchronized (mLock) {
        if (!SatelliteController.getInstance().isSatelliteAttachRequired()) {
            return false;
        }

        int satelliteModemState = mSatelltieModemState.get();
        plogd("needsWaitingForSatelliteConnected: datagramType=" + datagramType
                + " satelliteModemState=" + satelliteModemState);

        if (datagramType == DATAGRAM_TYPE_KEEP_ALIVE
                    && mSatelltieModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED) {
                && satelliteModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED) {
            return false;
        }
        boolean allowCheckMessageInNotConnected =
                mContext.getResources().getBoolean(
                        R.bool.config_satellite_allow_check_message_in_not_connected);
        if (datagramType == DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS
                    && mSatelltieModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED
                && satelliteModemState == SATELLITE_MODEM_STATE_NOT_CONNECTED
                && allowCheckMessageInNotConnected
                && mFeatureFlags.carrierRoamingNbIotNtn()) {
            return false;
        }
            if (mSatelltieModemState != SATELLITE_MODEM_STATE_CONNECTED
                    && mSatelltieModemState != SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING) {
        if (satelliteModemState != SATELLITE_MODEM_STATE_CONNECTED
                && satelliteModemState != SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING) {
            return true;
        }
        return false;
    }
    }

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    protected boolean isSendingInIdleState() {
@@ -497,19 +497,18 @@ public class DatagramController {

    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    protected long getDatagramWaitTimeForConnectedState(boolean isLastSosMessage) {
        synchronized (mLock) {
        long timeout = isLastSosMessage
                ? mDatagramWaitTimeForConnectedStateForLastMessage.get()
                : mDatagramWaitTimeForConnectedState.get();
        int satelliteModemState = mSatelltieModemState.get();
        logd("getDatagramWaitTimeForConnectedState: isLastSosMessage=" + isLastSosMessage
                    + ", timeout=" + timeout + ", modemState=" + mSatelltieModemState);
            if (mSatelltieModemState == SATELLITE_MODEM_STATE_OFF
                    || mSatelltieModemState == SATELLITE_MODEM_STATE_IDLE) {
                + ", timeout=" + timeout + ", modemState=" + satelliteModemState);
        if (satelliteModemState == SATELLITE_MODEM_STATE_OFF
                || satelliteModemState == SATELLITE_MODEM_STATE_IDLE) {
            return (timeout + mModemImageSwitchingDuration.get());
        }
        return timeout;
    }
    }

    /**
     * This API can be used by only CTS to timeout durations used by DatagramController module.
+12 −0
Original line number Diff line number Diff line
@@ -404,5 +404,17 @@ public class DatagramControllerTest extends TelephonyTest {
                SatelliteDatagram datagram) {
            super.pushDemoModeDatagram(datagramType, datagram);
        }

        @Override
        protected void onSatelliteModemStateChanged(
                @SatelliteManager.SatelliteModemState int state) {
            super.onSatelliteModemStateChanged(state);
        }

        @Override
        protected boolean needsWaitingForSatelliteConnected(
                @SatelliteManager.DatagramType int datagramType) {
            return super.needsWaitingForSatelliteConnected(datagramType);
        }
    }
}