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

Commit cee3e56f authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

Modify variables used in updateReceiveStatus()

Bug: 398227332
Test: atest
Flag: com.android.internal.telephony.flags.satellite_improve_multi_thread_design
Change-Id: Iac7afb6c50d95c3e0850884ca50ef3f56d44fc14
parent 4ad92062
Loading
Loading
Loading
Loading
+39 −46
Original line number Diff line number Diff line
@@ -92,15 +92,13 @@ public class DatagramController {
    private AtomicInteger mSendErrorCode =
            new AtomicInteger(SatelliteManager.SATELLITE_RESULT_SUCCESS);
    /** Variables used to update onReceiveDatagramStateChanged(). */
    @GuardedBy("mLock")
    private int mReceiveSubId;
    @GuardedBy("mLock")
    private @SatelliteManager.SatelliteDatagramTransferState int mReceiveDatagramTransferState =
            SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
    @GuardedBy("mLock")
    private int mReceivePendingCount = 0;
    @GuardedBy("mLock")
    private int mReceiveErrorCode = SatelliteManager.SATELLITE_RESULT_SUCCESS;
    private AtomicInteger mReceiveSubId = new AtomicInteger(0);
    private @SatelliteManager.SatelliteDatagramTransferState AtomicInteger
            mReceiveDatagramTransferState = new AtomicInteger(
                    SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE);
    private AtomicInteger mReceivePendingCount = new AtomicInteger(0);
    private AtomicInteger mReceiveErrorCode =
            new AtomicInteger(SatelliteManager.SATELLITE_RESULT_SUCCESS);
    @GuardedBy("mLock")
    private final List<SatelliteDatagram> mDemoModeDatagramList;
    private boolean mIsDemoMode = false;
@@ -306,28 +304,29 @@ public class DatagramController {
     * @param datagramTransferState The new receive datagram transfer state.
     * @param receivePendingCount The number of datagrams that are currently pending to be received.
     * @param errorCode If datagram transfer failed, the reason for failure.
     *
     * This method is only used by {@link DatagramReceiver}.
     */
    public void updateReceiveStatus(int subId, @SatelliteManager.DatagramType int datagramType,
    @VisibleForTesting(visibility =  VisibleForTesting.Visibility.PACKAGE)
    protected void updateReceiveStatus(int subId, @SatelliteManager.DatagramType int datagramType,
            @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
            int receivePendingCount, int errorCode) {
        synchronized (mLock) {
        plogd("updateReceiveStatus"
                + " subId: " + subId
                + " datagramType: " + datagramType
                + " datagramTransferState: " + datagramTransferState
                + " receivePendingCount: " + receivePendingCount + " errorCode: " + errorCode);

            mReceiveSubId = subId;
        mReceiveSubId.set(subId);
        mDatagramType.set(datagramType);
            mReceiveDatagramTransferState = datagramTransferState;
            mReceivePendingCount = receivePendingCount;
            mReceiveErrorCode = errorCode;
        mReceiveDatagramTransferState.set(datagramTransferState);
        mReceivePendingCount.set(receivePendingCount);
        mReceiveErrorCode.set(errorCode);

        notifyDatagramTransferStateChangedToSessionController(datagramType);
            mPointingAppController.updateReceiveDatagramTransferState(mReceiveSubId,
                    mReceiveDatagramTransferState, mReceivePendingCount, mReceiveErrorCode);
        mPointingAppController.updateReceiveDatagramTransferState(subId,
                datagramTransferState, receivePendingCount, errorCode);
        retryPollPendingDatagramsInDemoMode();
        }

        if (isPollingInIdleState()) {
            mDatagramDispatcher.retrySendingDatagrams();
@@ -338,8 +337,9 @@ public class DatagramController {
     * Return receive pending datagram count
     * @return receive pending datagram count.
     */
    public int getReceivePendingCount() {
        return mReceivePendingCount;
    @VisibleForTesting(visibility =  VisibleForTesting.Visibility.PACKAGE)
    protected int getReceivePendingCount() {
        return mReceivePendingCount.get();
    }


@@ -392,12 +392,10 @@ public class DatagramController {
        }
    }

    @VisibleForTesting
    public boolean isReceivingDatagrams() {
        synchronized (mLock) {
            return (mReceiveDatagramTransferState
                    == SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING);
        }
    @VisibleForTesting(visibility =  VisibleForTesting.Visibility.PACKAGE)
    protected boolean isReceivingDatagrams() {
        return mReceiveDatagramTransferState.get()
                == SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING;
    }

    /**
@@ -437,11 +435,9 @@ public class DatagramController {
        return mSendDatagramTransferState.get() == SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
    }

    public boolean isPollingInIdleState() {
        synchronized (mLock) {
            return (mReceiveDatagramTransferState
                    == SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE);
        }
    @VisibleForTesting(visibility =  VisibleForTesting.Visibility.PACKAGE)
    protected boolean isPollingInIdleState() {
        return mReceiveDatagramTransferState.get() == SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE;
    }

    /**
@@ -594,11 +590,8 @@ public class DatagramController {
            ploge("notifyDatagramTransferStateChangeToSessionController: SatelliteSessionController"
                    + " is not initialized yet");
        } else {
            synchronized (mLock) {
                sessionController.onDatagramTransferStateChanged(
                        mSendDatagramTransferState.get(),
                        mReceiveDatagramTransferState, datagramType);
            }
            sessionController.onDatagramTransferStateChanged(mSendDatagramTransferState.get(),
                    mReceiveDatagramTransferState.get(), datagramType);
        }
    }

+24 −0
Original line number Diff line number Diff line
@@ -355,9 +355,33 @@ public class DatagramControllerTest extends TelephonyTest {
                    errorCode);
        }

        @Override
        protected void updateReceiveStatus(int subId,
                @SatelliteManager.DatagramType int datagramType,
                @SatelliteManager.SatelliteDatagramTransferState int datagramTransferState,
                int receivePendingCount, int errorCode) {
            super.updateReceiveStatus(subId, datagramType, datagramTransferState,
                    receivePendingCount, errorCode);
        }

        @Override
        protected boolean isSendingInIdleState() {
            return super.isSendingInIdleState();
        }

        @Override
        protected int getReceivePendingCount() {
            return super.getReceivePendingCount();
        }

        @Override
        protected boolean isReceivingDatagrams() {
            return super.isReceivingDatagrams();
        }

        @Override
        protected boolean isPollingInIdleState() {
            return super.isPollingInIdleState();
        }
    }
}