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

Commit d8a90d3d authored by Megha Patil's avatar Megha Patil Committed by Automerger Merge Worker
Browse files

Merge "Disable Satellite Mode when Radio State becomes OFF" into udc-dev am: 7224cc11

parents 36ec2750 7224cc11
Loading
Loading
Loading
Loading
+48 −14
Original line number Original line Diff line number Diff line
@@ -35,6 +35,7 @@ import android.os.RemoteException;
import android.os.ResultReceiver;
import android.os.ResultReceiver;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.telephony.satellite.ISatelliteDatagramCallback;
import android.telephony.satellite.ISatelliteProvisionStateCallback;
import android.telephony.satellite.ISatelliteProvisionStateCallback;
import android.telephony.satellite.ISatelliteStateCallback;
import android.telephony.satellite.ISatelliteStateCallback;
@@ -46,6 +47,7 @@ import android.util.Log;




import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.IIntegerConsumer;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.PhoneFactory;
@@ -89,6 +91,7 @@ public class SatelliteController extends Handler {
    private static final int EVENT_IS_SATELLITE_COMMUNICATION_ALLOWED_DONE = 22;
    private static final int EVENT_IS_SATELLITE_COMMUNICATION_ALLOWED_DONE = 22;
    private static final int CMD_GET_TIME_SATELLITE_NEXT_VISIBLE = 23;
    private static final int CMD_GET_TIME_SATELLITE_NEXT_VISIBLE = 23;
    private static final int EVENT_GET_TIME_SATELLITE_NEXT_VISIBLE_DONE = 24;
    private static final int EVENT_GET_TIME_SATELLITE_NEXT_VISIBLE_DONE = 24;
    private static final int EVENT_RADIO_STATE_CHANGED = 25;


    @NonNull private static SatelliteController sInstance;
    @NonNull private static SatelliteController sInstance;
    @NonNull private final Context mContext;
    @NonNull private final Context mContext;
@@ -96,6 +99,7 @@ public class SatelliteController extends Handler {
    @NonNull private final SatelliteSessionController mSatelliteSessionController;
    @NonNull private final SatelliteSessionController mSatelliteSessionController;
    @NonNull private final PointingAppController mPointingAppController;
    @NonNull private final PointingAppController mPointingAppController;
    @NonNull private final DatagramController mDatagramController;
    @NonNull private final DatagramController mDatagramController;
    private final CommandsInterface mCi;


    BluetoothAdapter mBluetoothAdapter = null;
    BluetoothAdapter mBluetoothAdapter = null;
    WifiManager mWifiManager = null;
    WifiManager mWifiManager = null;
@@ -159,7 +163,8 @@ public class SatelliteController extends Handler {
    protected SatelliteController(@NonNull Context context, @NonNull Looper looper) {
    protected SatelliteController(@NonNull Context context, @NonNull Looper looper) {
        super(looper);
        super(looper);
        mContext = context;
        mContext = context;

        Phone phone = SatelliteServiceUtils.getPhone();
        mCi = phone.mCi;
        // Create the SatelliteModemInterface singleton, which is used to manage connections
        // Create the SatelliteModemInterface singleton, which is used to manage connections
        // to the satellite service and HAL interface.
        // to the satellite service and HAL interface.
        mSatelliteModemInterface = SatelliteModemInterface.make(mContext);
        mSatelliteModemInterface = SatelliteModemInterface.make(mContext);
@@ -195,6 +200,7 @@ public class SatelliteController extends Handler {
        //TODO: reenable below code
        //TODO: reenable below code
        //requestIsSatelliteSupported(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
        //requestIsSatelliteSupported(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID,
        //        mSatelliteSupportedReceiver);
        //        mSatelliteSupportedReceiver);
        mCi.registerForRadioStateChanged(this, EVENT_RADIO_STATE_CHANGED, null);
    }
    }


    private void internalInit() {
    private void internalInit() {
@@ -482,9 +488,9 @@ public class SatelliteController extends Handler {


            case CMD_SET_SATELLITE_ENABLED: {
            case CMD_SET_SATELLITE_ENABLED: {
                request = (SatelliteControllerHandlerRequest) msg.obj;
                request = (SatelliteControllerHandlerRequest) msg.obj;
                //To be moved to EVENT_SET_SATELLITE_ENABLED_DONE
                RequestSatelliteEnabledArgument argument =
                RequestSatelliteEnabledArgument argument =
                        (RequestSatelliteEnabledArgument) request.argument;
                        (RequestSatelliteEnabledArgument) request.argument;
                onCompleted = obtainMessage(EVENT_SET_SATELLITE_ENABLED_DONE, request);
                if (argument.enableSatellite) {
                if (argument.enableSatellite) {
                    if (mBluetoothAdapter == null) {
                    if (mBluetoothAdapter == null) {
                        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
                        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -503,18 +509,7 @@ public class SatelliteController extends Handler {
                        mDisabledWifiFlag = true;
                        mDisabledWifiFlag = true;
                    }
                    }
                }
                }
                if (mSatelliteModemInterface.isSatelliteServiceSupported()) {
                handleSatelliteEnabled(request);
                    mSatelliteModemInterface.requestSatelliteEnabled(argument.enableSatellite,
                            argument.enableDemoMode, onCompleted);
                    break;
                }
                Phone phone = request.phone;
                if (phone != null) {
                    phone.setSatellitePower(onCompleted, argument.enableSatellite);
                } else {
                    loge("requestSatelliteEnabled: No phone object");
                    argument.callback.accept(SatelliteManager.SATELLITE_INVALID_TELEPHONY_STATE);
                }
                break;
                break;
            }
            }


@@ -786,6 +781,27 @@ public class SatelliteController extends Handler {
                break;
                break;
            }
            }


            case EVENT_RADIO_STATE_CHANGED: {
                if (mCi.getRadioState() == TelephonyManager.RADIO_POWER_OFF
                        || mCi.getRadioState() == TelephonyManager.RADIO_POWER_UNAVAILABLE) {
                    logd("Radio State Changed to " + mCi.getRadioState());
                    IIntegerConsumer errorCallback = new IIntegerConsumer.Stub() {
                        @Override
                        public void accept(int result) {
                            loge("Failed to Disable Satellite Mode, Error: " + result);
                        }
                    };
                    Phone phone = SatelliteServiceUtils.getPhone();
                    Consumer<Integer> result = FunctionalUtils
                            .ignoreRemoteException(errorCallback::accept);
                    RequestSatelliteEnabledArgument message =
                            new RequestSatelliteEnabledArgument(false, false, result);
                    request = new SatelliteControllerHandlerRequest(message, phone);
                    handleSatelliteEnabled(request);
                    break;
                }
            }

            default:
            default:
                Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " +
                Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " +
                        msg.what);
                        msg.what);
@@ -1516,6 +1532,24 @@ public class SatelliteController extends Handler {
        return false;
        return false;
    }
    }


    private void handleSatelliteEnabled(SatelliteControllerHandlerRequest request) {
        RequestSatelliteEnabledArgument argument =
                (RequestSatelliteEnabledArgument) request.argument;
        Message onCompleted = obtainMessage(EVENT_SET_SATELLITE_ENABLED_DONE, request);
        if (mSatelliteModemInterface.isSatelliteServiceSupported()) {
            mSatelliteModemInterface.requestSatelliteEnabled(argument.enableSatellite,
                            argument.enableDemoMode, onCompleted);
            return;
        }
        Phone phone = request.phone;
        if (phone != null) {
            phone.setSatellitePower(onCompleted, argument.enableSatellite);
        } else {
            loge("requestSatelliteEnabled: No phone object");
            argument.callback.accept(SatelliteManager.SATELLITE_INVALID_TELEPHONY_STATE);
        }
    }

    private static void logd(@NonNull String log) {
    private static void logd(@NonNull String log) {
        Rlog.d(TAG, log);
        Rlog.d(TAG, log);
    }
    }