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

Commit 58497610 authored by Hakjun Choi's avatar Hakjun Choi Committed by Android (Google) Code Review
Browse files

Merge "Prevent redundent command to modem for startSendingNtnSignalStrength" into main

parents 83d4c989 81ea3735
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -214,6 +214,7 @@ public class SatelliteController extends Handler {
    private final AtomicBoolean mRegisteredForNtnSignalStrengthChanged = new AtomicBoolean(false);
    private final AtomicBoolean mRegisteredForSatelliteCapabilitiesChanged =
            new AtomicBoolean(false);
    private final AtomicBoolean mShouldReportNtnSignalStrength = new AtomicBoolean(false);
    /**
     * Map key: subId, value: callback to get error code of the provision request.
     */
@@ -1184,12 +1185,21 @@ public class SatelliteController extends Handler {
            case CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING: {
                ar = (AsyncResult) msg.obj;
                boolean shouldReport = (boolean) ar.result;
                if (DBG) {
                    logd("CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING: shouldReport=" + shouldReport);
                }
                request = new SatelliteControllerHandlerRequest(shouldReport,
                        SatelliteServiceUtils.getPhone());
                if (SATELLITE_RESULT_SUCCESS != evaluateOemSatelliteRequestAllowed(true)) {
                    return;
                }
                if (mShouldReportNtnSignalStrength.get() == shouldReport) {
                    if (DBG) {
                        logd("CMD_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING : modem state matches the "
                                + "expected state, return.");
                    }
                    return;
                }
                onCompleted = obtainMessage(EVENT_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING_DONE,
                        request);
                if (shouldReport) {
@@ -1203,9 +1213,12 @@ public class SatelliteController extends Handler {
            case EVENT_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING_DONE: {
                ar = (AsyncResult) msg.obj;
                request = (SatelliteControllerHandlerRequest) ar.userObj;
                boolean shouldReport = (boolean) request.argument;
                int errorCode =  SatelliteServiceUtils.getSatelliteError(ar,
                        "EVENT_UPDATE_NTN_SIGNAL_STRENGTH_REPORTING_DONE");
                if (errorCode != SATELLITE_RESULT_SUCCESS) {
                if (errorCode == SATELLITE_RESULT_SUCCESS) {
                    mShouldReportNtnSignalStrength.set(shouldReport);
                } else {
                    loge(((boolean) request.argument ? "startSendingNtnSignalStrength"
                            : "stopSendingNtnSignalStrength") + "returns " + errorCode);
                }
+43 −1
Original line number Diff line number Diff line
@@ -2273,6 +2273,13 @@ public class SatelliteControllerTest extends TelephonyTest {
        verify(mMockSatelliteModemInterface, times(1))
                .startSendingNtnSignalStrength(any(Message.class));

        // requested again but ignored as expected and current state are matched.
        setUpResponseForStartSendingNtnSignalStrength(expectedResult);
        sendCmdStartSendingNtnSignalStrengthChangedEvent(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .startSendingNtnSignalStrength(any(Message.class));

        // stopSendingNtnSignalStrength() is requested when screen off event comes.
        reset(mMockSatelliteModemInterface);
        setUpResponseForRequestIsSatelliteProvisioned(true, SATELLITE_RESULT_SUCCESS);
@@ -2284,6 +2291,13 @@ public class SatelliteControllerTest extends TelephonyTest {
        verify(mMockSatelliteModemInterface, times(1))
                .stopSendingNtnSignalStrength(any(Message.class));

        // requested again but ignored as expected and current state are matched.
        setUpResponseForStopSendingNtnSignalStrength(expectedResult);
        sendCmdStartSendingNtnSignalStrengthChangedEvent(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .stopSendingNtnSignalStrength(any(Message.class));

        // startSendingNtnSignalStrength() is requested but received fail from the service.
        reset(mMockSatelliteModemInterface);
        doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
@@ -2293,7 +2307,26 @@ public class SatelliteControllerTest extends TelephonyTest {
        verify(mMockSatelliteModemInterface, times(1))
                .startSendingNtnSignalStrength(any(Message.class));

        // stopSendingNtnSignalStrength() is requested but received fail from the service.
        /* stopSendingNtnSignalStrength() is ignored because startSendingNtnSignalStrength has
           failed thus current state is stopSendingNtnSignalStrength */
        reset(mMockSatelliteModemInterface);
        doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
        setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_NO_RESOURCES);
        sendCmdStartSendingNtnSignalStrengthChangedEvent(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, never())
                .stopSendingNtnSignalStrength(any(Message.class));

        // startSendingNtnSignalStrength() is requested and modem state is changed
        reset(mMockSatelliteModemInterface);
        doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
        setUpResponseForStartSendingNtnSignalStrength(SATELLITE_RESULT_SUCCESS);
        sendCmdStartSendingNtnSignalStrengthChangedEvent(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .startSendingNtnSignalStrength(any(Message.class));

        // stopSendingNtnSignalStrength() is failed as modem returns error
        reset(mMockSatelliteModemInterface);
        doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
        setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_NO_RESOURCES);
@@ -2301,6 +2334,15 @@ public class SatelliteControllerTest extends TelephonyTest {
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .stopSendingNtnSignalStrength(any(Message.class));

        // request stopSendingNtnSignalStrength() again and returns success
        reset(mMockSatelliteModemInterface);
        doReturn(true).when(mMockSatelliteModemInterface).isSatelliteServiceSupported();
        setUpResponseForStopSendingNtnSignalStrength(SATELLITE_RESULT_SUCCESS);
        sendCmdStartSendingNtnSignalStrengthChangedEvent(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .stopSendingNtnSignalStrength(any(Message.class));
    }

    @Test