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

Commit 7325e6ed authored by Aishwarya Mallampati's avatar Aishwarya Mallampati
Browse files

requestIsSatelliteProvisioned(), pollPendingDatagrams()

Send request immediately to handler

Bug: 409584433
Test: atest
Flag: com.android.internal.telephony.flags.satellite_improve_multi_thread_design
Change-Id: Ie756c4b16f03937b27b233bfc8e666693fccfc56
parent 35f4ba3c
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -332,6 +332,8 @@ public class SatelliteController extends Handler {
    private static final int REQUEST_SATELLITE_CAPABILITIES = 71;
    private static final int REQUEST_START_SATELLITE_TRANSMISSION_UPDATES = 72;
    private static final int REQUEST_STOP_SATELLITE_TRANSMISSION_UPDATES = 73;
    private static final int REQUEST_IS_SATELLITE_PROVISIONED = 74;
    private static final int REQUEST_POLL_PENDING_DATAGRAMS = 75;

    @NonNull private static SatelliteController sInstance;
    @NonNull private final Context mContext;
@@ -2432,6 +2434,30 @@ public class SatelliteController extends Handler {
                break;
            }

            case REQUEST_IS_SATELLITE_PROVISIONED: {
                plogd("REQUEST_IS_SATELLITE_PROVISIONED");
                SomeArgs args = (SomeArgs) msg.obj;
                ResultReceiver result = (ResultReceiver) args.arg1;
                try {
                    handleRequestIsSatelliteProvisioned(result);
                } finally {
                    args.recycle();
                }
                break;
            }

            case REQUEST_POLL_PENDING_DATAGRAMS: {
                plogd("REQUEST_POLL_PENDING_DATAGRAMS");
                SomeArgs args = (SomeArgs) msg.obj;
                IIntegerConsumer callback = (IIntegerConsumer) args.arg1;
                try {
                    handleRequestPollPendingDatagrams(callback);
                } finally {
                    args.recycle();
                }
                break;
            }

            default:
                Log.w(TAG, "SatelliteControllerHandler: unexpected message code: " +
                        msg.what);
@@ -3275,6 +3301,18 @@ public class SatelliteController extends Handler {
     *               request failed.
     */
    public void requestIsSatelliteProvisioned(@NonNull ResultReceiver result) {
        if (mFeatureFlags.satelliteImproveMultiThreadDesign()) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = result;
            sendMessage(obtainMessage(REQUEST_IS_SATELLITE_PROVISIONED, args));
            return;
        }

        handleRequestIsSatelliteProvisioned(result);
    }

    private void handleRequestIsSatelliteProvisioned(@NonNull ResultReceiver result) {
        plogd("handleRequestIsSatelliteProvisioned");
        int error = evaluateOemSatelliteRequestAllowed(false);
        if (error != SATELLITE_RESULT_SUCCESS) {
            result.send(error, null);
@@ -3386,6 +3424,18 @@ public class SatelliteController extends Handler {
     * @param callback The callback to get {@link SatelliteManager.SatelliteResult} of the request.
     */
    public void pollPendingDatagrams(@NonNull IIntegerConsumer callback) {
        if (mFeatureFlags.satelliteImproveMultiThreadDesign()) {
            SomeArgs args = SomeArgs.obtain();
            args.arg1 = callback;
            sendMessage(obtainMessage(REQUEST_POLL_PENDING_DATAGRAMS, args));
            return;
        }

        handleRequestPollPendingDatagrams(callback);
    }

    private void handleRequestPollPendingDatagrams(@NonNull IIntegerConsumer callback) {
        plogd("handleRequestPollPendingDatagrams");
        Consumer<Integer> result = FunctionalUtils.ignoreRemoteException(callback::accept);
        int error = evaluateOemSatelliteRequestAllowed(true);
        if (error != SATELLITE_RESULT_SUCCESS) {