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

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

Update demo mode variables in DatagramController

Bug: 398227332
Test: atest
Flag: com.android.internal.telephony.flags.satellite_improve_multi_thread_design
Change-Id: I4a56558d2db411a94fedd02100eaa58de9c83122
parent f40c3324
Loading
Loading
Loading
Loading
+28 −25
Original line number Original line Diff line number Diff line
@@ -83,8 +83,6 @@ public class DatagramController {
    private static final boolean DEBUG = !"user".equals(Build.TYPE);
    private static final boolean DEBUG = !"user".equals(Build.TYPE);


    /** Variables used to update onSendDatagramStateChanged(). */
    /** Variables used to update onSendDatagramStateChanged(). */
    private final Object mLock = new Object();

    private AtomicInteger mSendSubId = new AtomicInteger(0);
    private AtomicInteger mSendSubId = new AtomicInteger(0);
    private @SatelliteManager.DatagramType AtomicInteger mDatagramType =
    private @SatelliteManager.DatagramType AtomicInteger mDatagramType =
            new AtomicInteger(DATAGRAM_TYPE_UNKNOWN);
            new AtomicInteger(DATAGRAM_TYPE_UNKNOWN);
@@ -101,9 +99,10 @@ public class DatagramController {
    private AtomicInteger mReceivePendingCount = new AtomicInteger(0);
    private AtomicInteger mReceivePendingCount = new AtomicInteger(0);
    private AtomicInteger mReceiveErrorCode =
    private AtomicInteger mReceiveErrorCode =
            new AtomicInteger(SatelliteManager.SATELLITE_RESULT_SUCCESS);
            new AtomicInteger(SatelliteManager.SATELLITE_RESULT_SUCCESS);
    private final Object mLock = new Object();
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private final List<SatelliteDatagram> mDemoModeDatagramList;
    private final List<SatelliteDatagram> mDemoModeDatagramList;
    private boolean mIsDemoMode = false;
    private AtomicBoolean mIsDemoMode = new AtomicBoolean(false);
    private AtomicLong mAlignTimeoutDuration = new AtomicLong(SATELLITE_ALIGN_TIMEOUT);
    private AtomicLong mAlignTimeoutDuration = new AtomicLong(SATELLITE_ALIGN_TIMEOUT);
    private AtomicLong mDatagramWaitTimeForConnectedState = new AtomicLong(0);
    private AtomicLong mDatagramWaitTimeForConnectedState = new AtomicLong(0);
    private AtomicLong mModemImageSwitchingDuration = new AtomicLong(0);
    private AtomicLong mModemImageSwitchingDuration = new AtomicLong(0);
@@ -154,7 +153,7 @@ public class DatagramController {
     *                              about datagram transfer state changes.
     *                              about datagram transfer state changes.
     */
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
    public DatagramController(@NonNull Context context, @NonNull Looper  looper,
    protected DatagramController(@NonNull Context context, @NonNull Looper  looper,
            @NonNull FeatureFlags featureFlags,
            @NonNull FeatureFlags featureFlags,
            @NonNull PointingAppController pointingAppController) {
            @NonNull PointingAppController pointingAppController) {
        mContext = context;
        mContext = context;
@@ -447,8 +446,8 @@ public class DatagramController {
     * @param isDemoMode {@code true} means demo mode is on, {@code false} otherwise.
     * @param isDemoMode {@code true} means demo mode is on, {@code false} otherwise.
     */
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public void setDemoMode(boolean isDemoMode) {
    protected void setDemoMode(boolean isDemoMode) {
        mIsDemoMode = isDemoMode;
        mIsDemoMode.set(isDemoMode);
        mDatagramDispatcher.setDemoMode(isDemoMode);
        mDatagramDispatcher.setDemoMode(isDemoMode);
        mDatagramReceiver.setDemoMode(isDemoMode);
        mDatagramReceiver.setDemoMode(isDemoMode);


@@ -458,13 +457,13 @@ public class DatagramController {
            }
            }
            setDeviceAlignedWithSatellite(false);
            setDeviceAlignedWithSatellite(false);
        }
        }
        plogd("setDemoMode: mIsDemoMode=" + mIsDemoMode);
        plogd("setDemoMode: mIsDemoMode=" + isDemoMode);
    }
    }


    /** Get the last sent datagram for demo mode */
    /** Get the last sent datagram for demo mode */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public SatelliteDatagram popDemoModeDatagram() {
    protected SatelliteDatagram popDemoModeDatagram() {
        if (!mIsDemoMode) {
        if (!mIsDemoMode.get()) {
            return null;
            return null;
        }
        }


@@ -482,9 +481,9 @@ public class DatagramController {
     * @param datagram datagram The last datagram saved when sendSatelliteDatagramForDemo is called
     * @param datagram datagram The last datagram saved when sendSatelliteDatagramForDemo is called
     */
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public void pushDemoModeDatagram(@SatelliteManager.DatagramType int datagramType,
    protected void pushDemoModeDatagram(@SatelliteManager.DatagramType int datagramType,
            SatelliteDatagram datagram) {
            SatelliteDatagram datagram) {
        if (mIsDemoMode && SatelliteServiceUtils.isSosMessage(datagramType)) {
        if (mIsDemoMode.get() && SatelliteServiceUtils.isSosMessage(datagramType)) {
            synchronized (mLock) {
            synchronized (mLock) {
                mDemoModeDatagramList.add(datagram);
                mDemoModeDatagramList.add(datagram);
                plogd("pushDemoModeDatagram size=" + mDemoModeDatagramList.size());
                plogd("pushDemoModeDatagram size=" + mDemoModeDatagramList.size());
@@ -626,9 +625,8 @@ public class DatagramController {
    }
    }


    private void retryPollPendingDatagramsInDemoMode() {
    private void retryPollPendingDatagramsInDemoMode() {
        synchronized (mLock) {
        if (mIsDemoMode.get() && isSendingInIdleState() && isPollingInIdleState()
            if (mIsDemoMode && isSendingInIdleState() && isPollingInIdleState()
                && !isDemoModeDatagramListEmpty()) {
                    && !mDemoModeDatagramList.isEmpty()) {
            Consumer<Integer> internalCallback = new Consumer<Integer>() {
            Consumer<Integer> internalCallback = new Consumer<Integer>() {
                @Override
                @Override
                public void accept(Integer result) {
                public void accept(Integer result) {
@@ -642,6 +640,11 @@ public class DatagramController {
                    internalCallback);
                    internalCallback);
        }
        }
    }
    }

    private boolean isDemoModeDatagramListEmpty() {
        synchronized (mLock) {
            return mDemoModeDatagramList.isEmpty();
        }
    }
    }


    /**
    /**
+16 −0
Original line number Original line Diff line number Diff line
@@ -388,5 +388,21 @@ public class DatagramControllerTest extends TelephonyTest {
        protected long getDatagramWaitTimeForConnectedState(boolean isLastSosMessage) {
        protected long getDatagramWaitTimeForConnectedState(boolean isLastSosMessage) {
            return super.getDatagramWaitTimeForConnectedState(isLastSosMessage);
            return super.getDatagramWaitTimeForConnectedState(isLastSosMessage);
        }
        }

        @Override
        protected void setDemoMode(boolean isDemoMode) {
            super.setDemoMode(isDemoMode);
        }

        @Override
        protected SatelliteDatagram popDemoModeDatagram() {
            return super.popDemoModeDatagram();
        }

        @Override
        protected void pushDemoModeDatagram(@SatelliteManager.DatagramType int datagramType,
                SatelliteDatagram datagram) {
            super.pushDemoModeDatagram(datagramType, datagram);
        }
    }
    }
}
}