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

Commit 08d6c78f authored by Sarah Chin's avatar Sarah Chin Committed by Android (Google) Code Review
Browse files

Merge "Update satellite APIs for modem implementation" into udc-dev

parents 69f0e4c2 a6354b20
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.