diff options
author | Jake Hamby <jhamby@google.com> | 2011-09-26 01:01:44 -0700 |
---|---|---|
committer | Jake Hamby <jhamby@google.com> | 2011-10-20 16:33:21 -0700 |
commit | 300105d1487f5238940c18792b879793826b61f4 (patch) | |
tree | c2315b2c2247494da855839c90d6d80159a0d144 | |
parent | 5cdc1354de1e1b98347fe67c5fefdb0be7e0f589 (diff) | |
download | android_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.h | 48 | ||||
-rw-r--r-- | libril/ril.cpp | 2 | ||||
-rw-r--r-- | libril/ril_commands.h | 4 |
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}, |