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

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

Change variables to atomic variables

The following variables are updated in this cl:
- mWaitTimeForDatagramSendingResponse
- mWaitTimeForDatagramSendingForLastMessageResponse
- mLastSendRequestDatagramType

Bug: 409610090
Test: atest
Flag: com.android.internal.telephony.flags.satellite_improve_multi_thread_design
Change-Id: I600f735b14a03ba4a6d0062f3ef96f6fa700d536
parent 13355478
Loading
Loading
Loading
Loading
+18 −20
Original line number Original line Diff line number Diff line
@@ -61,6 +61,7 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import java.util.function.Consumer;


@@ -102,6 +103,10 @@ public class DatagramDispatcher extends Handler {
    /** {@code true} if already sent an emergency datagram during a session */
    /** {@code true} if already sent an emergency datagram during a session */
    private AtomicBoolean mIsEmergencyCommunicationEstablished = new AtomicBoolean(false);
    private AtomicBoolean mIsEmergencyCommunicationEstablished = new AtomicBoolean(false);
    private AtomicBoolean mSendingInProgress = new AtomicBoolean(false);
    private AtomicBoolean mSendingInProgress = new AtomicBoolean(false);
    private AtomicLong mWaitTimeForDatagramSendingResponse = new AtomicLong(0);
    private AtomicLong mWaitTimeForDatagramSendingForLastMessageResponse = new AtomicLong(0);
    @SatelliteManager.DatagramType
    private AtomicInteger mLastSendRequestDatagramType = new AtomicInteger(DATAGRAM_TYPE_UNKNOWN);


    private DatagramDispatcherHandlerRequest mSendSatelliteDatagramRequest = null;
    private DatagramDispatcherHandlerRequest mSendSatelliteDatagramRequest = null;
    private final Object mLock = new Object();
    private final Object mLock = new Object();
@@ -112,7 +117,6 @@ public class DatagramDispatcher extends Handler {
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private final LinkedHashMap<Long, SendSatelliteDatagramArgument>
    private final LinkedHashMap<Long, SendSatelliteDatagramArgument>
            mPendingEmergencyDatagramsMap = new LinkedHashMap<>();
            mPendingEmergencyDatagramsMap = new LinkedHashMap<>();

    /**
    /**
     * Map key: datagramId, value: SendSatelliteDatagramArgument to retry sending non-emergency
     * Map key: datagramId, value: SendSatelliteDatagramArgument to retry sending non-emergency
     * datagrams.
     * datagrams.
@@ -120,7 +124,6 @@ public class DatagramDispatcher extends Handler {
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private final LinkedHashMap<Long, SendSatelliteDatagramArgument>
    private final LinkedHashMap<Long, SendSatelliteDatagramArgument>
            mPendingNonEmergencyDatagramsMap = new LinkedHashMap<>();
            mPendingNonEmergencyDatagramsMap = new LinkedHashMap<>();

    /**
    /**
     * Map key: messageId, value: {@link PendingRequest} which contains all the information to send
     * Map key: messageId, value: {@link PendingRequest} which contains all the information to send
     * carrier roaming nb iot ntn SMS.
     * carrier roaming nb iot ntn SMS.
@@ -128,12 +131,6 @@ public class DatagramDispatcher extends Handler {
    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private final LinkedHashMap<Long, PendingRequest> mPendingSmsMap = new LinkedHashMap<>();
    private final LinkedHashMap<Long, PendingRequest> mPendingSmsMap = new LinkedHashMap<>();


    private long mWaitTimeForDatagramSendingResponse;
    private long mWaitTimeForDatagramSendingForLastMessageResponse;
    @SatelliteManager.DatagramType
    private int mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;


    @GuardedBy("mLock")
    @GuardedBy("mLock")
    private int mModemState = SATELLITE_MODEM_STATE_UNKNOWN;
    private int mModemState = SATELLITE_MODEM_STATE_UNKNOWN;
    @GuardedBy("mLock")
    @GuardedBy("mLock")
@@ -194,9 +191,9 @@ public class DatagramDispatcher extends Handler {
        mPersistentLogger = SatelliteServiceUtils.getPersistentLogger(context);
        mPersistentLogger = SatelliteServiceUtils.getPersistentLogger(context);


        mSendingInProgress.set(false);
        mSendingInProgress.set(false);
        mWaitTimeForDatagramSendingResponse = getWaitForDatagramSendingResponseTimeoutMillis();
        mWaitTimeForDatagramSendingResponse.set(getWaitForDatagramSendingResponseTimeoutMillis());
        mWaitTimeForDatagramSendingForLastMessageResponse =
        mWaitTimeForDatagramSendingForLastMessageResponse.set(
                getWaitForDatagramSendingResponseForLastMessageTimeoutMillis();
                getWaitForDatagramSendingResponseForLastMessageTimeoutMillis());
    }
    }


    private static final class DatagramDispatcherHandlerRequest {
    private static final class DatagramDispatcherHandlerRequest {
@@ -464,7 +461,7 @@ public class DatagramDispatcher extends Handler {
        SendSatelliteDatagramArgument datagramArgs =
        SendSatelliteDatagramArgument datagramArgs =
                new SendSatelliteDatagramArgument(subId, datagramId, datagramType, datagram,
                new SendSatelliteDatagramArgument(subId, datagramId, datagramType, datagram,
                        needFullScreenPointingUI, callback);
                        needFullScreenPointingUI, callback);
        mLastSendRequestDatagramType = datagramType;
        mLastSendRequestDatagramType.set(datagramType);


        synchronized (mLock) {
        synchronized (mLock) {
            // Add datagram to pending datagram map
            // Add datagram to pending datagram map
@@ -866,12 +863,12 @@ public class DatagramDispatcher extends Handler {
        int subId = SatelliteController.getInstance().getSelectedSatelliteSubId();
        int subId = SatelliteController.getInstance().getSelectedSatelliteSubId();
        if (getPendingMessagesCount() > 0) {
        if (getPendingMessagesCount() > 0) {
            mDatagramController.updateSendStatus(subId,
            mDatagramController.updateSendStatus(subId,
                    mLastSendRequestDatagramType,
                    mLastSendRequestDatagramType.get(),
                    SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
                    SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED,
                    getPendingMessagesCount(), SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED);
                    getPendingMessagesCount(), SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED);
        }
        }
        mDatagramController.updateSendStatus(subId,
        mDatagramController.updateSendStatus(subId,
                mLastSendRequestDatagramType,
                mLastSendRequestDatagramType.get(),
                SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
                SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE,
                0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
                0, SatelliteManager.SATELLITE_RESULT_SUCCESS);
        abortSendingPendingDatagrams(subId,
        abortSendingPendingDatagrams(subId,
@@ -884,7 +881,7 @@ public class DatagramDispatcher extends Handler {
        mIsDemoMode.set(false);
        mIsDemoMode.set(false);
        mSendSatelliteDatagramRequest = null;
        mSendSatelliteDatagramRequest = null;
        mIsAligned.set(false);
        mIsAligned.set(false);
        mLastSendRequestDatagramType = DATAGRAM_TYPE_UNKNOWN;
        mLastSendRequestDatagramType.set(DATAGRAM_TYPE_UNKNOWN);
        mModemState = SATELLITE_MODEM_STATE_UNKNOWN;
        mModemState = SATELLITE_MODEM_STATE_UNKNOWN;
        mHasEnteredConnectedState = false;
        mHasEnteredConnectedState = false;
        mShouldPollMtSms = false;
        mShouldPollMtSms = false;
@@ -924,9 +921,10 @@ public class DatagramDispatcher extends Handler {
     */
     */
    void setWaitTimeForDatagramSendingResponse(boolean reset, long timeoutMillis) {
    void setWaitTimeForDatagramSendingResponse(boolean reset, long timeoutMillis) {
        if (reset) {
        if (reset) {
            mWaitTimeForDatagramSendingResponse = getWaitForDatagramSendingResponseTimeoutMillis();
            mWaitTimeForDatagramSendingResponse.set(
                    getWaitForDatagramSendingResponseTimeoutMillis());
        } else {
        } else {
            mWaitTimeForDatagramSendingResponse = timeoutMillis;
            mWaitTimeForDatagramSendingResponse.set(timeoutMillis);
        }
        }
    }
    }


@@ -937,8 +935,8 @@ public class DatagramDispatcher extends Handler {
            return;
            return;
        }
        }
        long waitTime = SatelliteServiceUtils.isLastSosMessage(argument.datagramType)
        long waitTime = SatelliteServiceUtils.isLastSosMessage(argument.datagramType)
                ? mWaitTimeForDatagramSendingForLastMessageResponse
                ? mWaitTimeForDatagramSendingForLastMessageResponse.get()
                : mWaitTimeForDatagramSendingResponse;
                : mWaitTimeForDatagramSendingResponse.get();
        logd("startWaitForDatagramSendingResponseTimer: datagramType=" + argument.datagramType
        logd("startWaitForDatagramSendingResponseTimer: datagramType=" + argument.datagramType
                + ", waitTime=" + waitTime);
                + ", waitTime=" + waitTime);
        sendMessageDelayed(obtainMessage(
        sendMessageDelayed(obtainMessage(
@@ -1149,7 +1147,7 @@ public class DatagramDispatcher extends Handler {
            mPendingSmsMap.put(messageId, pendingSms);
            mPendingSmsMap.put(messageId, pendingSms);
            int datagramType = pendingSms.isMtSmsPolling ?
            int datagramType = pendingSms.isMtSmsPolling ?
                    DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS : DATAGRAM_TYPE_SMS;
                    DATAGRAM_TYPE_CHECK_PENDING_INCOMING_SMS : DATAGRAM_TYPE_SMS;
            mLastSendRequestDatagramType = datagramType;
            mLastSendRequestDatagramType.set(datagramType);


            if (mDatagramController.needsWaitingForSatelliteConnected(datagramType)) {
            if (mDatagramController.needsWaitingForSatelliteConnected(datagramType)) {
                plogd("sendSms: wait for satellite connected");
                plogd("sendSms: wait for satellite connected");