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

Commit d88f06bc authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Don't start PointingUI when enabling satellite

- Query vendor service for satellite support when radio state is not
  available

Bug: 322251350
Test: atest SatelliteManagerTestOnMockService SatelliteControllerTest
Manually tested with SatelliteTestApp.
SMS, MMS, call with live network.

Change-Id: I30cd2050cca71d3b02e09ece36b2fe6cf0608593
parent eaed9899
Loading
Loading
Loading
Loading
+23 −10
Original line number Diff line number Diff line
@@ -784,13 +784,6 @@ public class SatelliteController extends Handler {
                            mWaitingForRadioDisabled = true;
                        }
                        setSettingsKeyForSatelliteMode(SATELLITE_MODE_ENABLED_TRUE);

                        /**
                         * TODO for NTN-based satellites: Check if satellite is acquired.
                         */
                        if (mNeedsSatellitePointing) {
                            mPointingAppController.startPointingUI(false);
                        }
                        evaluateToSendSatelliteEnabledSuccess();
                    } else {
                        /**
@@ -908,7 +901,7 @@ public class SatelliteController extends Handler {
                        error = SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE;
                    } else {
                        boolean supported = (boolean) ar.result;
                        if (DBG) logd("isSatelliteSupported: " + supported);
                        logd("isSatelliteSupported: " + supported);
                        bundle.putBoolean(SatelliteManager.KEY_SATELLITE_SUPPORTED, supported);
                        updateSatelliteSupportedStateWhenSatelliteServiceConnected(supported);
                    }
@@ -1020,6 +1013,24 @@ public class SatelliteController extends Handler {
                if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) {
                    mIsRadioOn = true;
                }
                if (mCi.getRadioState() != TelephonyManager.RADIO_POWER_UNAVAILABLE) {
                    if (mSatelliteModemInterface.isSatelliteServiceConnected()) {
                        synchronized (mIsSatelliteSupportedLock) {
                            if (mIsSatelliteSupported == null || !mIsSatelliteSupported) {
                                ResultReceiver receiver = new ResultReceiver(this) {
                                    @Override
                                    protected void onReceiveResult(
                                            int resultCode, Bundle resultData) {
                                        logd("onRadioStateChanged.requestIsSatelliteSupported: "
                                                + "resultCode=" + resultCode
                                                + ", resultData=" + resultData);
                                    }
                                };
                                sendRequestAsync(CMD_IS_SATELLITE_SUPPORTED, receiver, null);
                            }
                        }
                    }
                }
                break;
            }

@@ -2727,7 +2738,8 @@ public class SatelliteController extends Handler {
                    new ResultReceiver(this) {
                        @Override
                        protected void onReceiveResult(int resultCode, Bundle resultData) {
                            logd("requestIsSatelliteProvisioned: resultCode=" + resultCode);
                            logd("requestIsSatelliteProvisioned: resultCode=" + resultCode
                                    + ", resultData=" + resultData);
                            requestSatelliteEnabled(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
                                    false, false,
                                    new IIntegerConsumer.Stub() {
@@ -2742,7 +2754,8 @@ public class SatelliteController extends Handler {
                    new ResultReceiver(this) {
                        @Override
                        protected void onReceiveResult(int resultCode, Bundle resultData) {
                            logd("requestSatelliteCapabilities: resultCode=" + resultCode);
                            logd("requestSatelliteCapabilities: resultCode=" + resultCode
                                    + ", resultData=" + resultData);
                        }
                    });
        }
+7 −0
Original line number Diff line number Diff line
@@ -1318,6 +1318,13 @@ public class SatelliteModemInterface {
        return mIsSatelliteServiceSupported;
    }

    /** Check if vendor satellite service is connected */
    public boolean isSatelliteServiceConnected() {
        synchronized (mLock) {
            return (mSatelliteService != null);
        }
    }

    /**
     * This API can be used by only CTS to update satellite vendor service package name.
     *
+49 −2
Original line number Diff line number Diff line
@@ -655,6 +655,55 @@ public class SatelliteControllerTest extends TelephonyTest {
                mQueriedSatelliteVisibilityTimeResultCode);
    }

    @Test
    public void testRadioStateChanged() {
        mIsSatelliteEnabledSemaphore.drainPermits();

        when(mMockSatelliteModemInterface.isSatelliteServiceConnected()).thenReturn(false);
        setRadioPower(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, never())
                .requestIsSatelliteSupported(any(Message.class));

        setRadioPower(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, never())
                .requestIsSatelliteSupported(any(Message.class));

        when(mMockSatelliteModemInterface.isSatelliteServiceConnected()).thenReturn(true);
        setRadioPower(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(1))
                .requestIsSatelliteSupported(any(Message.class));

        setRadioPower(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(2))
                .requestIsSatelliteSupported(any(Message.class));

        setUpResponseForRequestIsSatelliteSupported(false, SATELLITE_RESULT_SUCCESS);
        setRadioPower(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(3))
                .requestIsSatelliteSupported(any(Message.class));

        setRadioPower(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(4))
                .requestIsSatelliteSupported(any(Message.class));

        setUpResponseForRequestIsSatelliteSupported(true, SATELLITE_RESULT_SUCCESS);
        setRadioPower(false);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(5))
                .requestIsSatelliteSupported(any(Message.class));

        setRadioPower(true);
        processAllMessages();
        verify(mMockSatelliteModemInterface, times(5))
                .requestIsSatelliteSupported(any(Message.class));
    }

    @Test
    public void testRequestSatelliteEnabled() {
        mIsSatelliteEnabledSemaphore.drainPermits();
@@ -711,7 +760,6 @@ public class SatelliteControllerTest extends TelephonyTest {
        verify(mMockSatelliteSessionController, times(1)).onSatelliteEnabledStateChanged(eq(true));
        verify(mMockSatelliteSessionController, times(2)).setDemoMode(eq(false));
        verify(mMockDatagramController, times(2)).setDemoMode(eq(false));
        verify(mMockPointingAppController).startPointingUI(eq(false));
        verify(mMockControllerMetricsStats, times(1)).onSatelliteEnabled();
        verify(mMockControllerMetricsStats, times(1)).reportServiceEnablementSuccessCount();

@@ -770,7 +818,6 @@ public class SatelliteControllerTest extends TelephonyTest {
        verifySatelliteEnabled(true, SATELLITE_RESULT_SUCCESS);
        assertTrue(mSatelliteControllerUT.setSettingsKeyForSatelliteModeCalled);
        assertEquals(SATELLITE_MODE_ENABLED_TRUE, mSatelliteControllerUT.satelliteModeSettingValue);
        verify(mMockPointingAppController).startPointingUI(eq(false));
        verify(mMockSatelliteSessionController, times(2)).onSatelliteEnabledStateChanged(eq(true));
        verify(mMockSatelliteSessionController, times(4)).setDemoMode(eq(false));
        verify(mMockDatagramController, times(4)).setDemoMode(eq(false));