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

Commit afeee763 authored by Sarah Chin's avatar Sarah Chin Committed by Automerger Merge Worker
Browse files

Merge "Update satellite APIs for modem implementation" into udc-dev am: 08d6c78f am: 41f8b30b

parents f13235cf 41f8b30b
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -80,13 +80,11 @@ public class SatelliteIndication extends IRadioSatelliteIndication.Stub {
        if (mRil.isLogOrTrace()) mRil.unsljLog(RIL_UNSOL_NEW_SATELLITE_MESSAGES);

        if (mRil.mNewSatelliteMessagesRegistrants != null) {
            SatelliteDatagram[] datagrams = new SatelliteDatagram[messages.length];
            for (int i = 0; i < messages.length; i++) {
                datagrams[i] = new SatelliteDatagram(messages[i].getBytes());
            }
            // TODO: support pendingCount properly
                SatelliteDatagram datagram = new SatelliteDatagram(messages[i].getBytes());
                mRil.mNewSatelliteMessagesRegistrants.notifyRegistrants(
                    new AsyncResult(null, new Pair<>(datagrams, messages.length), null));
                        new AsyncResult(null, new Pair<>(datagram, messages.length - i - 1), null));
            }
        }
    }

+21 −11
Original line number Diff line number Diff line
@@ -218,6 +218,16 @@ public class SatelliteController extends Handler {
        }
    }

    private static final class RequestSatelliteEnabledArgument {
        public boolean enabled;
        public @NonNull Consumer<Integer> callback;

        RequestSatelliteEnabledArgument(boolean enabled, Consumer<Integer> callback) {
            this.enabled = enabled;
            this.callback = callback;
        }
    }

    private static final class ProvisionSatelliteServiceArgument {
        public @NonNull String token;
        public @NonNull Consumer<Integer> callback;
@@ -687,20 +697,19 @@ public class SatelliteController extends Handler {

            case CMD_SET_SATELLITE_ENABLED: {
                request = (SatelliteControllerHandlerRequest) msg.obj;
                Pair<Boolean, Consumer<Integer>> argument =
                        (Pair<Boolean, Consumer<Integer>>) request.argument;
                RequestSatelliteEnabledArgument argument =
                        (RequestSatelliteEnabledArgument) request.argument;
                onCompleted = obtainMessage(EVENT_SET_SATELLITE_ENABLED_DONE, request);
                if (mSatelliteModemInterface.isSatelliteServiceSupported()) {
                    mSatelliteModemInterface
                            .requestSatelliteEnabled(argument.first, onCompleted);
                    mSatelliteModemInterface.requestSatelliteEnabled(argument.enabled, onCompleted);
                    break;
                }
                Phone phone = request.phone;
                if (phone != null) {
                    phone.setSatellitePower(onCompleted, argument.first);
                    phone.setSatellitePower(onCompleted, argument.enabled);
                } else {
                    loge("requestSatelliteEnabled: No phone object");
                    argument.second.accept(SatelliteManager.SATELLITE_INVALID_TELEPHONY_STATE);
                    argument.callback.accept(SatelliteManager.SATELLITE_INVALID_TELEPHONY_STATE);
                }
                break;
            }
@@ -708,10 +717,11 @@ public class SatelliteController extends Handler {
            case EVENT_SET_SATELLITE_ENABLED_DONE: {
                ar = (AsyncResult) msg.obj;
                request = (SatelliteControllerHandlerRequest) ar.userObj;
                Pair<Boolean, Consumer<Integer>> argument =
                        (Pair<Boolean, Consumer<Integer>>) request.argument;
                RequestSatelliteEnabledArgument argument =
                        (RequestSatelliteEnabledArgument) request.argument;
                int error = getSatelliteError(ar, "setSatelliteEnabled", false);
                argument.second.accept(error);
                argument.callback.accept(error);
                // TODO: if error is ERROR_NONE, request satellite capabilities
                break;
            }

@@ -1001,8 +1011,8 @@ public class SatelliteController extends Handler {
        }

        Phone phone = getPhoneOrDefault(validSubId, "requestSatelliteEnabled");
        Pair<Boolean, Consumer<Integer>> arg = new Pair<>(enable, result);
        sendRequestAsync(CMD_SET_SATELLITE_ENABLED, arg, phone);
        sendRequestAsync(CMD_SET_SATELLITE_ENABLED,
                new RequestSatelliteEnabledArgument(enable, result), phone);
    }

    /**
+9 −15
Original line number Diff line number Diff line
@@ -91,10 +91,10 @@ public class SatelliteModemInterface {
        }

        @Override
        public void onSatelliteDatagramsReceived(
                android.telephony.satellite.stub.SatelliteDatagram[] datagrams, int pendingCount) {
        public void onSatelliteDatagramReceived(
                android.telephony.satellite.stub.SatelliteDatagram datagram, int pendingCount) {
            mSatelliteDatagramsReceivedRegistrants.notifyResult(new Pair<>(
                    SatelliteServiceUtils.fromSatelliteDatagrams(datagrams), pendingCount));
                    SatelliteServiceUtils.fromSatelliteDatagram(datagram), pendingCount));
        }

        @Override
@@ -271,16 +271,7 @@ public class SatelliteModemInterface {
            mSatelliteService = ISatellite.Stub.asInterface(service);
            mExponentialBackoff.stop();
            try {
                mSatelliteService.setSatelliteListener(mListener, new IIntegerConsumer.Stub() {
                    @Override
                    public void accept(int result) {
                        int error = SatelliteServiceUtils.fromSatelliteError(result);
                        if (error != SatelliteManager.SATELLITE_ERROR_NONE) {
                            // TODO: Retry setSatelliteListener
                        }
                        logd("setSatelliteListener: " + error);
                    }
                });
                mSatelliteService.setSatelliteListener(mListener);
            } catch (RemoteException e) {
                // TODO: Retry setSatelliteListener
                logd("setSatelliteListener: RemoteException " + e);
@@ -461,14 +452,17 @@ public class SatelliteModemInterface {
     * Listening mode allows the satellite service to listen for incoming pages.
     *
     * @param enable True to enable satellite listening mode and false to disable.
     * @param timeout How long the satellite modem should wait for the next incoming page before
     *                disabling listening mode.
     * @param message The Message to send to result of the operation to.
     */
    public void requestSatelliteListeningEnabled(boolean enable, @NonNull Message message) {
    public void requestSatelliteListeningEnabled(boolean enable, int timeout,
            @NonNull Message message) {
        if (mSatelliteService != null) {
            try {
                mSatelliteService.requestSatelliteListeningEnabled(
                        enable, SatelliteController.getInstance().isSatelliteDemoModeEnabled(),
                        new IIntegerConsumer.Stub() {
                        timeout, new IIntegerConsumer.Stub() {
                            @Override
                            public void accept(int result) {
                                int error = SatelliteServiceUtils.fromSatelliteError(result);
+2 −14
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@ public class SatelliteServiceUtils {
                return SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_RETRYING;
            case SatelliteModemState.SATELLITE_MODEM_STATE_OFF:
                return SatelliteManager.SATELLITE_MODEM_STATE_OFF;
            case SatelliteModemState.SATELLITE_MODEM_STATE_UNAVAILABLE:
                return SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE;
            default:
                loge("Received invalid modem state: " + modemState);
                return SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN;
@@ -177,20 +179,6 @@ public class SatelliteServiceUtils {
        return new SatelliteDatagram(data);
    }

    /**
     * Convert SatelliteDatagram[] from service definition to framework definition.
     * @param datagrams The SatelliteDatagram[] from the satellite service.
     * @return The converted SatelliteDatagram[] for the framework.
     */
    @Nullable public static SatelliteDatagram[] fromSatelliteDatagrams(
            android.telephony.satellite.stub.SatelliteDatagram[] datagrams) {
        SatelliteDatagram[] array = new SatelliteDatagram[datagrams.length];
        for (int i = 0; i < datagrams.length; i++) {
            array[i] = fromSatelliteDatagram(datagrams[i]);
        }
        return array;
    }

    /**
     * Convert SatelliteDatagram from framework definition to service definition.
     * @param datagram The SatelliteDatagram from the framework.