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

Commit 27e26abd authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Handle demo mode and apm error scenarios" into udc-dev

parents 1a97b19d ed1e802d
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ public class SatelliteController extends Handler {
    private final Object mIsSatelliteSupportedLock = new Object();
    private boolean mIsDemoModeEnabled = false;
    private Boolean mIsSatelliteEnabled = null;
    private boolean mIsRadioOn = false;
    private final Object mIsSatelliteEnabledLock = new Object();
    private Boolean mIsSatelliteProvisioned = null;
    private final Object mIsSatelliteProvisionedLock = new Object();
@@ -216,6 +217,7 @@ public class SatelliteController extends Handler {
                    }
                });
        mCi.registerForRadioStateChanged(this, EVENT_RADIO_STATE_CHANGED, null);
        mIsRadioOn = phone.isRadioOn();
        registerForSatelliteProvisionStateChanged();
        registerForPendingDatagramCount();
        registerForSatelliteModemStateChanged();
@@ -694,6 +696,7 @@ public class SatelliteController extends Handler {
            case EVENT_RADIO_STATE_CHANGED: {
                if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF
                        || mCi.getRadioState() == TelephonyManager.RADIO_POWER_UNAVAILABLE) {
                    mIsRadioOn = false;
                    logd("Radio State Changed to " + mCi.getRadioState());
                    IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
                        @Override
@@ -709,6 +712,7 @@ public class SatelliteController extends Handler {
                    request = new SatelliteControllerHandlerRequest(message, phone);
                    handleSatelliteEnabled(request);
                } else {
                    mIsRadioOn = true;
                    if (!mSatelliteModemInterface.isSatelliteServiceSupported()) {
                        synchronized (mIsSatelliteSupportedLock) {
                            if (mIsSatelliteSupported == null) {
@@ -850,6 +854,33 @@ public class SatelliteController extends Handler {
            return;
        }

        if (enableSatellite) {
            if (!mIsRadioOn) {
                loge("Radio is not on, can not enable satellite");
                result.accept(SatelliteManager.SATELLITE_INVALID_MODEM_STATE);
                return;
            }
        } else {
            /* if disable satellite, always assume demo is also disabled */
            enableDemoMode = false;
        }

        if (mIsSatelliteEnabled != null) {
            if (mIsSatelliteEnabled == enableSatellite) {
                if (enableDemoMode != mIsDemoModeEnabled) {
                    loge("Received invalid demo mode while satellite session is enabled"
                            + " enableDemoMode = " + enableDemoMode);
                    result.accept(SatelliteManager.SATELLITE_INVALID_ARGUMENTS);
                    return;
                } else {
                    logd("Enable request matches with current state"
                            + " enableSatellite = " + enableSatellite);
                    result.accept(SatelliteManager.SATELLITE_ERROR_NONE);
                    return;
                }
            }
        }

        sendRequestAsync(CMD_SET_SATELLITE_ENABLED,
                new RequestSatelliteEnabledArgument(enableSatellite, enableDemoMode, result),
                SatelliteServiceUtils.getPhone());