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

Commit 73c64de5 authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

onSatelliteModemStateChanged

send request immediately to handler

Bug: 409610090
Test: atest
Flag: com.android.internal.telephony.flags.satellite_improve_multi_thread_design
Change-Id: I8f39d0e87d0c2e74c0960892040f79302e58acc3
parent 57bfd806
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ public class DatagramDispatcher extends Handler {
    private static final int EVENT_SEND_SMS_DONE = 9;
    private static final int EVENT_MT_SMS_POLLING_THROTTLE_TIMED_OUT = 10;
    private static final int CMD_SEND_MT_SMS_POLLING_MESSAGE = 11;
    private static final int EVENT_SATELLITE_MODEM_STATE_CHANGED = 12;

    private static final Long TIMEOUT_DATAGRAM_DELAY_IN_DEMO_MODE = TimeUnit.SECONDS.toMillis(10);

@@ -114,7 +115,13 @@ public class DatagramDispatcher extends Handler {
    private AtomicInteger mConnectedStateCounter = new AtomicInteger(0);
    private AtomicLong mSmsTransmissionStartTime = new AtomicLong(0);

    /**
     * All the variables declared here should only be accessed by methods that run inside the
     * handler thread.
     */
    private DatagramDispatcherHandlerRequest mSendSatelliteDatagramRequest = null;

    /** All the variables that require lock are declared here. */
    private final Object mLock = new Object();
    /**
     * Map key: datagramId, value: SendSatelliteDatagramArgument to retry sending emergency
@@ -421,6 +428,18 @@ public class DatagramDispatcher extends Handler {
                break;
            }

            case EVENT_SATELLITE_MODEM_STATE_CHANGED: {
                plogd("EVENT_SATELLITE_MODEM_STATE_CHANGED");
                SomeArgs args = (SomeArgs) msg.obj;
                int state = (int) args.arg1;
                try {
                    handleEventSatelliteModemStateChanged(state);
                } finally {
                    args.recycle();
                }
                break;
            }

            default:
                plogw("DatagramDispatcherHandler: unexpected message code: " + msg.what);
                break;
@@ -805,6 +824,19 @@ public class DatagramDispatcher extends Handler {
     * @param state Current satellite modem state.
     */
    public void onSatelliteModemStateChanged(@SatelliteManager.SatelliteModemState int state) {
        if (mFeatureFlags.satelliteImproveMultiThreadDesign()) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = state;
            sendMessage(obtainMessage(EVENT_SATELLITE_MODEM_STATE_CHANGED, args));
            return;
        }

        handleEventSatelliteModemStateChanged(state);
    }

    private void handleEventSatelliteModemStateChanged(
            @SatelliteManager.SatelliteModemState int state) {
        plogd("handleEventSatelliteModemStateChanged: state = " + state);
        synchronized (mLock) {
            mModemState.set(state);
            if (state == SatelliteManager.SATELLITE_MODEM_STATE_OFF
+7 −0
Original line number Diff line number Diff line
@@ -111,6 +111,9 @@ public class DatagramDispatcherTest extends TelephonyTest {
            TEST_WAIT_FOR_DATAGRAM_SENDING_RESPONSE_FOR_LAST_MESSAGE_TIMEOUT_MILLIS =
            (int) TimeUnit.SECONDS.toMillis(60);

    private static final int TEST_MT_SMS_POLLING_THROTTLE_MILLIS =
            (int) TimeUnit.SECONDS.toMillis(60);

    private TestDatagramDispatcher mDatagramDispatcherUT;

    @Mock private SatelliteController mMockSatelliteController;
@@ -179,6 +182,9 @@ public class DatagramDispatcherTest extends TelephonyTest {
        when(mPhone.getSmsDispatchersController()).thenReturn(mMockSmsDispatchersController);
        when(mMockSatelliteController.getSatelliteCarrierId()).thenReturn(UNKNOWN_CARRIER_ID);
        mPendingSms = createPendingRequest();

        mContextFixture.putIntResource(R.integer.config_mt_sms_polling_throttle_millis,
                TEST_MT_SMS_POLLING_THROTTLE_MILLIS);
    }

    @After
@@ -1308,6 +1314,7 @@ public class DatagramDispatcherTest extends TelephonyTest {

    private void setModemState(int state) {
        mDatagramDispatcherUT.onSatelliteModemStateChanged(state);
        processAllMessages();
    }

    private void setShouldPollMtSmsTrue() {