aboutsummaryrefslogtreecommitdiff
path: root/src/java/com/android/internal
diff options
context:
space:
mode:
authorThomas Nguyen <tnd@google.com>2023-02-01 11:12:16 -0800
committerAishwarya Mallampati <amallampati@google.com>2023-02-08 21:35:32 +0000
commitd7c5a44790cf35c6443b2b9874bffa99a75a042d (patch)
treef837d97a8be7f7e18f5a7f4f30bd2d6ef9f566e1 /src/java/com/android/internal
parent31f764682d2c648cf9be18ebf907dd72fb7240ff (diff)
downloadtelephony-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')
-rw-r--r--src/java/com/android/internal/telephony/CommandException.java34
-rw-r--r--src/java/com/android/internal/telephony/Phone.java54
-rw-r--r--src/java/com/android/internal/telephony/RILUtils.java61
-rw-r--r--src/java/com/android/internal/telephony/SatelliteIndication.java4
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));
}
}
}