summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake Hamby <jhamby@google.com>2011-09-26 01:01:44 -0700
committerJake Hamby <jhamby@google.com>2011-10-20 16:33:21 -0700
commit300105d1487f5238940c18792b879793826b61f4 (patch)
treec2315b2c2247494da855839c90d6d80159a0d144
parent5cdc1354de1e1b98347fe67c5fefdb0be7e0f589 (diff)
downloadandroid_hardware_ril-300105d1487f5238940c18792b879793826b61f4.tar.gz
android_hardware_ril-300105d1487f5238940c18792b879793826b61f4.tar.bz2
android_hardware_ril-300105d1487f5238940c18792b879793826b61f4.zip
Add new RIL requests to support SIM data download via SMS over IMS.
On an LTE device where incoming SMS messages over IMS are sent to the framework via RIL_UNSOL_RESPONSE_NEW_SMS responses sent to the RIL, it may be necessary to process USIM data download SM's (message class 2). This requires the RIL to implement two new requests. 1) RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: send an ENVELOPE command to the UICC, receiving the SW1 and SW2 status bytes in addition to the command response. 2) RIL_REQUEST_SMS_ACKNOWLEDGE_WITH_PDU: send an RP-ACK or RP-ERROR acknowledgement to the incoming SM, including an acknowledgement PDU containing the envelope response. Change-Id: Id134dd90611b147fdc8aebc8ccdf0e989a6542a9
-rw-r--r--include/telephony/ril.h48
-rw-r--r--libril/ril.cpp2
-rw-r--r--libril/ril_commands.h4
3 files changed, 53 insertions, 1 deletions
diff --git a/include/telephony/ril.h b/include/telephony/ril.h
index 64667df..3a3d03f 100644
--- a/include/telephony/ril.h
+++ b/include/telephony/ril.h
@@ -3221,6 +3221,54 @@ typedef struct {
*/
#define RIL_REQUEST_ISIM_AUTHENTICATION 105
+/**
+ * RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU
+ *
+ * Acknowledge successful or failed receipt of SMS previously indicated
+ * via RIL_UNSOL_RESPONSE_NEW_SMS, including acknowledgement TPDU to send
+ * as the RP-User-Data element of the RP-ACK or RP-ERROR PDU.
+ *
+ * "data" is const char **
+ * ((const char **)data)[0] is "1" on successful receipt (send RP-ACK)
+ * is "0" on failed receipt (send RP-ERROR)
+ * ((const char **)data)[1] is the acknowledgement TPDU in hexadecimal format
+ *
+ * "response" is NULL
+ *
+ * Valid errors:
+ * SUCCESS
+ * RADIO_NOT_AVAILABLE
+ * GENERIC_FAILURE
+ */
+#define RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU 106
+
+/**
+ * RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS
+ *
+ * Requests to send a SAT/USAT envelope command to SIM.
+ * The SAT/USAT envelope command refers to 3GPP TS 11.14 and 3GPP TS 31.111.
+ *
+ * This request has one difference from RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND:
+ * the SW1 and SW2 status bytes from the UICC response are returned along with
+ * the response data, using the same structure as RIL_REQUEST_SIM_IO.
+ *
+ * The RIL implementation shall perform the normal processing of a '91XX'
+ * response in SW1/SW2 to retrieve the pending proactive command and send it
+ * as an unsolicited response, as RIL_REQUEST_STK_SEND_ENVELOPE_COMMAND does.
+ *
+ * "data" is a const char * containing the SAT/USAT command
+ * in hexadecimal format starting with command tag
+ *
+ * "response" is a const RIL_SIM_IO_Response *
+ *
+ * Valid errors:
+ * RIL_E_SUCCESS
+ * RIL_E_RADIO_NOT_AVAILABLE (radio resetting)
+ * RIL_E_GENERIC_FAILURE
+ */
+#define RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS 107
+
+
/***********************************************************************/
diff --git a/libril/ril.cpp b/libril/ril.cpp
index 7998356..d1d5d3b 100644
--- a/libril/ril.cpp
+++ b/libril/ril.cpp
@@ -3194,6 +3194,8 @@ requestToString(int request) {
case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: return "REPORT_STK_SERVICE_IS_RUNNING";
case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE: return "CDMA_GET_SUBSCRIPTION_SOURCE";
case RIL_REQUEST_ISIM_AUTHENTICATION: return "ISIM_AUTHENTICATION";
+ case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU";
+ case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS";
case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: return "UNSOL_RESPONSE_RADIO_STATE_CHANGED";
case RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED: return "UNSOL_RESPONSE_CALL_STATE_CHANGED";
case RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED: return "UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED";
diff --git a/libril/ril_commands.h b/libril/ril_commands.h
index f5ef328..68a8b31 100644
--- a/libril/ril_commands.h
+++ b/libril/ril_commands.h
@@ -119,4 +119,6 @@
{RIL_REQUEST_REPORT_SMS_MEMORY_STATUS, dispatchInts, responseVoid},
{RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING, dispatchVoid, responseVoid},
{RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, dispatchVoid, responseInts},
- {RIL_REQUEST_ISIM_AUTHENTICATION, dispatchString, responseString}
+ {RIL_REQUEST_ISIM_AUTHENTICATION, dispatchString, responseString},
+ {RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU, dispatchStrings, responseVoid},
+ {RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, dispatchString, responseSIM_IO},