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

Commit a99e7157 authored by Lynn Yeh's avatar Lynn Yeh Committed by Android (Google) Code Review
Browse files

Merge "Protect mIsRadioOn flag with a lock." into 24D1-dev

parents a5edbdc2 5c901f0e
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -318,6 +318,8 @@ public class SatelliteController extends Handler {
    private final Object mIsSatelliteEnabledLock = new Object();
    @GuardedBy("mIsSatelliteEnabledLock")
    private Boolean mIsSatelliteEnabled = null;
    private final Object mIsRadioOnLock = new Object();
    @GuardedBy("mIsRadioOnLock")
    private boolean mIsRadioOn = false;
    private final Object mSatelliteViaOemProvisionLock = new Object();
    @GuardedBy("mSatelliteViaOemProvisionLock")
@@ -514,7 +516,10 @@ public class SatelliteController extends Handler {
                mContext, looper, mFeatureFlags, mPointingAppController);

        mCi.registerForRadioStateChanged(this, EVENT_RADIO_STATE_CHANGED, null);
        synchronized (mIsRadioOnLock) {
            mIsRadioOn = phone.isRadioOn();
        }

        registerForSatelliteProvisionStateChanged();
        registerForPendingDatagramCount();
        registerForSatelliteModemStateChanged();
@@ -1218,12 +1223,14 @@ public class SatelliteController extends Handler {
            }

            case EVENT_RADIO_STATE_CHANGED: {
                synchronized (mIsRadioOnLock) {
                    logd("EVENT_RADIO_STATE_CHANGED: radioState=" + mCi.getRadioState());
                    if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_ON) {
                        mIsRadioOn = true;
                    } else if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF) {
                    mIsRadioOn = false;
                        resetCarrierRoamingSatelliteModeParams();
                    }
                }

                if (mCi.getRadioState() != TelephonyManager.RADIO_POWER_UNAVAILABLE) {
                    if (mSatelliteModemInterface.isSatelliteServiceConnected()) {
@@ -1498,12 +1505,14 @@ public class SatelliteController extends Handler {
        }

        if (enableSatellite) {
            synchronized (mIsRadioOnLock) {
                if (!mIsRadioOn) {
                    ploge("Radio is not on, can not enable satellite");
                    sendErrorAndReportSessionMetrics(
                            SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE, result);
                    return;
                }
            }
        } else {
            /* if disable satellite, always assume demo is also disabled */
            enableDemoMode = false;
@@ -2644,12 +2653,15 @@ public class SatelliteController extends Handler {
     * modem. {@link SatelliteController} will then power off the satellite modem.
     */
    public void onCellularRadioPowerOffRequested() {
        logd("onCellularRadioPowerOffRequested()");
        if (!mFeatureFlags.oemEnabledSatelliteFlag()) {
            plogd("onCellularRadioPowerOffRequested: oemEnabledSatelliteFlag is disabled");
            return;
        }

        synchronized (mIsRadioOnLock) {
            mIsRadioOn = false;
        }
        requestSatelliteEnabled(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
                false /* enableSatellite */, false /* enableDemoMode */, false /* isEmergency */,
                new IIntegerConsumer.Stub() {