diff options
author | Thomas Nguyen <tnd@google.com> | 2023-02-01 11:12:16 -0800 |
---|---|---|
committer | Aishwarya Mallampati <amallampati@google.com> | 2023-02-08 21:35:32 +0000 |
commit | d7c5a44790cf35c6443b2b9874bffa99a75a042d (patch) | |
tree | f837d97a8be7f7e18f5a7f4f30bd2d6ef9f566e1 /src/java/com/android/internal | |
parent | 31f764682d2c648cf9be18ebf907dd72fb7240ff (diff) | |
download | telephony-d7c5a44790cf35c6443b2b9874bffa99a75a042d.tar.gz |
Support satellite provision APIs
Bug: 266013384
Test: atest android.telephony.cts.SatelliteManagerTest
Change-Id: I2bb0f153efdc3b0a9308422696615d1d419ac9f2
Diffstat (limited to 'src/java/com/android/internal')
4 files changed, 143 insertions, 10 deletions
diff --git a/src/java/com/android/internal/telephony/CommandException.java b/src/java/com/android/internal/telephony/CommandException.java index 72bb6a36f5..6b6d84f0e8 100644 --- a/src/java/com/android/internal/telephony/CommandException.java +++ b/src/java/com/android/internal/telephony/CommandException.java @@ -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); diff --git a/src/java/com/android/internal/telephony/Phone.java b/src/java/com/android/internal/telephony/Phone.java index 0f64dcd52b..715c0399fe 100644 --- a/src/java/com/android/internal/telephony/Phone.java +++ b/src/java/com/android/internal/telephony/Phone.java @@ -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); diff --git a/src/java/com/android/internal/telephony/RILUtils.java b/src/java/com/android/internal/telephony/RILUtils.java index 364a385c91..bf3fa8c706 100644 --- a/src/java/com/android/internal/telephony/RILUtils.java +++ b/src/java/com/android/internal/telephony/RILUtils.java @@ -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; } diff --git a/src/java/com/android/internal/telephony/SatelliteIndication.java b/src/java/com/android/internal/telephony/SatelliteIndication.java index 9b1b0e5180..9ebff587bd 100644 --- a/src/java/com/android/internal/telephony/SatelliteIndication.java +++ b/src/java/com/android/internal/telephony/SatelliteIndication.java @@ -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)); } } } |