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

Commit d7c5a447 authored by Thomas Nguyen's avatar Thomas Nguyen Committed by Aishwarya Mallampati
Browse files

Support satellite provision APIs

Bug: 266013384
Test: atest android.telephony.cts.SatelliteManagerTest

Change-Id: I2bb0f153efdc3b0a9308422696615d1d419ac9f2
parent 31f76468
Loading
Loading
Loading
Loading
+33 −1
Original line number Diff line number Diff line
@@ -131,6 +131,17 @@ public class CommandException extends RuntimeException {
        BLOCKED_DUE_TO_CALL,
        RF_HARDWARE_ISSUE,
        NO_RF_CALIBRATION_INFO,
        ENCODING_NOT_SUPPORTED,
        FEATURE_NOT_SUPPORTED,
        INVALID_CONTACT,
        MODEM_INCOMPATIBLE,
        NETWORK_TIMEOUT,
        NO_SATELLITE_SIGNAL,
        NOT_SUFFICIENT_ACCOUNT_BALANCE,
        RADIO_TECHNOLOGY_NOT_SUPPORTED,
        SUBSCRIBER_NOT_AUTHORIZED,
        SWITCHED_FROM_SATELLITE_TO_TERRESTRIAL,
        UNIDENTIFIED_SUBSCRIBER
    }

    @UnsupportedAppUsage
@@ -341,7 +352,28 @@ public class CommandException extends RuntimeException {
                return new CommandException(Error.RF_HARDWARE_ISSUE);
            case RILConstants.NO_RF_CALIBRATION_INFO:
                return new CommandException(Error.NO_RF_CALIBRATION_INFO);

            case RILConstants.ENCODING_NOT_SUPPORTED:
                return new CommandException(Error.ENCODING_NOT_SUPPORTED);
            case RILConstants.FEATURE_NOT_SUPPORTED:
                return new CommandException(Error.FEATURE_NOT_SUPPORTED);
            case RILConstants.INVALID_CONTACT:
                return new CommandException(Error.INVALID_CONTACT);
            case RILConstants.MODEM_INCOMPATIBLE:
                return new CommandException(Error.MODEM_INCOMPATIBLE);
            case RILConstants.NETWORK_TIMEOUT:
                return new CommandException(Error.NETWORK_TIMEOUT);
            case RILConstants.NO_SATELLITE_SIGNAL:
                return new CommandException(Error.NO_SATELLITE_SIGNAL);
            case RILConstants.NOT_SUFFICIENT_ACCOUNT_BALANCE:
                return new CommandException(Error.NOT_SUFFICIENT_ACCOUNT_BALANCE);
            case RILConstants.RADIO_TECHNOLOGY_NOT_SUPPORTED:
                return new CommandException(Error.RADIO_TECHNOLOGY_NOT_SUPPORTED);
            case RILConstants.SUBSCRIBER_NOT_AUTHORIZED:
                return new CommandException(Error.SUBSCRIBER_NOT_AUTHORIZED);
            case RILConstants.SWITCHED_FROM_SATELLITE_TO_TERRESTRIAL:
                return new CommandException(Error.SWITCHED_FROM_SATELLITE_TO_TERRESTRIAL);
            case RILConstants.UNIDENTIFIED_SUBSCRIBER:
                return new CommandException(Error.UNIDENTIFIED_SUBSCRIBER);
            default:
                Rlog.e("GSM", "Unrecognized RIL errno " + ril_errno);
                return new CommandException(Error.INVALID_RESPONSE);
+54 −0
Original line number Diff line number Diff line
@@ -5321,6 +5321,60 @@ public abstract class Phone extends Handler implements PhoneInternalInterface {
        mCi.unregisterForSatelliteMessagesTransferComplete(h);
    }

    /**
     * Provision the subscription with a satellite provider. This is needed to register the
     * subscription if the provider allows dynamic registration.
     *
     * @param result Callback message to receive the result.
     * @param imei IMEI of the SIM associated with the satellite modem.
     * @param msisdn MSISDN of the SIM associated with the satellite modem.
     * @param imsi IMSI of the SIM associated with the satellite modem.
     * @param features List of features to be provisioned.
     */
    public void provisionSatelliteService(Message result, String imei, String msisdn, String imsi,
            int[] features) {
        mCi.provisionSatelliteService(result, imei, msisdn, imsi, features);
    }

    /**
     * Cancel the ongoing provision satellite request of a subscription.
     *
     * @param result Callback message to receive the result.
     * @param imsi IMSI of the subscription whose provision request will be cancelled.
     */
    public void cancelProvisionSatelliteService(Message result, String imsi) {
        //TODO (b/266126070): add implementation.
    }

    /**
     * Register for a satellite provision state changed event.
     *
     * @param h Handler for notification message.
     * @param what User-defined message code.
     * @param obj User object.
     */
    public void registerForSatelliteProvisionStateChanged(Handler h, int what, Object obj) {
        mCi.registerForSatelliteProvisionStateChanged(h, what, obj);
    }

    /**
     * Unregister for a satellite provision state changed event.
     *
     * @param h Handler to be removed from the registrant list.
     */
    public void unregisterForSatelliteProvisionStateChanged(Handler h) {
        mCi.unregisterForSatelliteProvisionStateChanged(h);
    }

    /**
     * Get the list of provisioned satellite features.
     *
     * @param result Callback message to receive the result.
     */
    public void getProvisionedSatelliteFeatures(Message result) {
        //TODO (b/266126070): add implementation.
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("Phone: subId=" + getSubId());
        pw.println(" mPhoneId=" + mPhoneId);
+54 −7
Original line number Diff line number Diff line
@@ -6026,10 +6026,11 @@ public class RILUtils {
            CommandException.Error error) {
        switch (error) {
            case INTERNAL_ERR:
            case MODEM_ERR:
                return SatelliteManager.SATELLITE_SERVICE_MODEM_ERROR;
            case MODEM_ERR:
                return SatelliteManager.SATELLITE_SERVICE_UNEXPECTED_MODEM_RESPONSE;
            case SYSTEM_ERR:
                return SatelliteManager.SATELLITE_SERVICE_SYSTEM_ERROR;
                return SatelliteManager.SATELLITE_SERVICE_RIL_ERROR;
            case INVALID_ARGUMENTS:
                return SatelliteManager.SATELLITE_SERVICE_INVALID_ARGUMENTS;
            case INVALID_MODEM_STATE:
@@ -6037,17 +6038,63 @@ public class RILUtils {
            case INVALID_SIM_STATE:
                return SatelliteManager.SATELLITE_SERVICE_INVALID_SIM_STATE;
            case INVALID_STATE:
                return SatelliteManager.SATELLITE_SERVICE_INVALID_STATE;
                return SatelliteManager.SATELLITE_SERVICE_INVALID_RIL_STATE;
            case RADIO_NOT_AVAILABLE:
                return SatelliteManager.SATELLITE_SERVICE_NOT_AVAILABLE;
                return SatelliteManager.SATELLITE_SERVICE_RADIO_NOT_AVAILABLE;
            case REQUEST_NOT_SUPPORTED:
                return SatelliteManager.SATELLITE_SERVICE_NOT_SUPPORTED;
                return SatelliteManager.SATELLITE_SERVICE_REQUEST_NOT_SUPPORTED;
            case REQUEST_RATE_LIMITED:
                return SatelliteManager.SATELLITE_SERVICE_RATE_LIMITED;
                return SatelliteManager.SATELLITE_SERVICE_REQUEST_RATE_LIMITED;
            case NO_MEMORY:
                return SatelliteManager.SATELLITE_SERVICE_NO_MEMORY;
                //fallthrough to NO_RESOURCES
            case NO_RESOURCES:
                return SatelliteManager.SATELLITE_SERVICE_NO_RESOURCES;
            case NETWORK_ERR:
                return SatelliteManager.SATELLITE_SERVICE_NETWORK_ERROR;
            case NETWORK_NOT_READY:
                return SatelliteManager.SATELLITE_SERVICE_NETWORK_NOT_READY;
            case NETWORK_REJECT:
                return SatelliteManager.SATELLITE_SERVICE_SERVER_REJECT;
            case NETWORK_TIMEOUT:
                return SatelliteManager.SATELLITE_SERVICE_NETWORK_TIMEOUT;
            case NO_NETWORK_FOUND:
                //fallthrough to NO_SATELLITE_SIGNAL
            case NO_SATELLITE_SIGNAL:
                return SatelliteManager.SATELLITE_SERVICE_NO_SATELLITE_SIGNAL;
            case ABORTED:
                return SatelliteManager.SATELLITE_SERVICE_REQUEST_ABORTED;
            case ACCESS_BARRED:
                return SatelliteManager.SATELLITE_SERVICE_ACCESS_BARRED;
            case FEATURE_NOT_SUPPORTED:
                return SatelliteManager.SATELLITE_SERVICE_FEATURE_NOT_SUPPORTED;
            case MODEM_INCOMPATIBLE:
                return SatelliteManager.SATELLITE_SERVICE_MODEM_INCOMPATIBLE;
            case NO_SUBSCRIPTION:
                return SatelliteManager.SATELLITE_SERVICE_NO_SUBSCRIPTION;
            case OPERATION_NOT_ALLOWED:
                return SatelliteManager.SATELLITE_SERVICE_OPERATION_NOT_ALLOWED;
            case RADIO_TECHNOLOGY_NOT_SUPPORTED:
                return SatelliteManager.SATELLITE_SERVICE_RADIO_TECHNOLOGY_NOT_SUPPORTED;
            case SIM_ABSENT:
                return SatelliteManager.SATELLITE_SERVICE_SIM_ABSENT;
            case SIM_BUSY:
                return SatelliteManager.SATELLITE_SERVICE_SIM_BUSY;
            case SIM_ERR:
                return SatelliteManager.SATELLITE_SERVICE_SIM_ERR;
            case SIM_FULL:
                return SatelliteManager.SATELLITE_SERVICE_SIM_FULL;
            case SUBSCRIBER_NOT_AUTHORIZED:
                return SatelliteManager.SATELLITE_SERVICE_SUBSCRIBER_NOT_AUTHORIZED;
            case ENCODING_NOT_SUPPORTED:
                return SatelliteManager.SATELLITE_SERVICE_ENCODING_NOT_SUPPORTED;
            case INVALID_CONTACT:
                return SatelliteManager.SATELLITE_SERVICE_INVALID_CONTACT;
            case NOT_SUFFICIENT_ACCOUNT_BALANCE:
                return SatelliteManager.SATELLITE_SERVICE_NOT_SUFFICIENT_ACCOUNT_BALANCE;
            case SWITCHED_FROM_SATELLITE_TO_TERRESTRIAL:
                return SatelliteManager.SATELLITE_SERVICE_SWITCHED_FROM_SATELLITE_TO_TERRESTRIAL;
            case UNIDENTIFIED_SUBSCRIBER:
                return SatelliteManager.SATELLITE_SERVICE_UNIDENTIFIED_SUBSCRIBER;
            default:
                return SatelliteManager.SATELLITE_SERVICE_ERROR;
        }
+2 −2
Original line number Diff line number Diff line
@@ -172,8 +172,8 @@ public class SatelliteIndication extends IRadioSatelliteIndication.Stub {
        if (mRil.isLogOrTrace()) mRil.unsljLog(RIL_UNSOL_SATELLITE_PROVISION_STATE_CHANGED);

        if (mRil.mSatelliteProvisionStateChangedRegistrants != null) {
            mRil.mSatelliteProvisionStateChangedRegistrants.notifyRegistrants(
                    new AsyncResult(null, RILUtils.convertHalSatelliteFeatures(features), null));
            mRil.mSatelliteProvisionStateChangedRegistrants.notifyRegistrants(new AsyncResult(
                    provisioned, RILUtils.convertHalSatelliteFeatures(features), null));
        }
    }
}