diff options
author | Alex Yakavenka <ayakaven@quicinc.com> | 2012-01-31 11:48:27 -0800 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2012-01-31 12:31:41 -0800 |
commit | 45e740ef3c422bf75aadca21f98614fc120f49fb (patch) | |
tree | 9e1843b9bfe727f7cf57d90d62bb1344f995f85c /libril | |
parent | 0b5d0bc6f19b4b945e5a0dc83ca66c24312e2d36 (diff) | |
download | android_hardware_ril-45e740ef3c422bf75aadca21f98614fc120f49fb.tar.gz android_hardware_ril-45e740ef3c422bf75aadca21f98614fc120f49fb.tar.bz2 android_hardware_ril-45e740ef3c422bf75aadca21f98614fc120f49fb.zip |
Implement sim_refresh as per ril v6
Change-Id: Icc620fd191f8542f61bd38e365813753bfedefdf
Diffstat (limited to 'libril')
-rw-r--r-- | libril/ril.cpp | 35 | ||||
-rw-r--r-- | libril/ril_unsol_commands.h | 2 |
2 files changed, 36 insertions, 1 deletions
diff --git a/libril/ril.cpp b/libril/ril.cpp index f2ea78b..b8aba01 100644 --- a/libril/ril.cpp +++ b/libril/ril.cpp @@ -232,6 +232,7 @@ static int responseRilSignalStrength(Parcel &p,void *response, size_t responsele static int responseCallRing(Parcel &p, void *response, size_t responselen); static int responseCdmaSignalInfoRecord(Parcel &p,void *response, size_t responselen); static int responseCdmaCallWaiting(Parcel &p,void *response, size_t responselen); +static int responseSimRefresh(Parcel &p, void *response, size_t responselen); static int decodeVoiceRadioTechnology (RIL_RadioState radioState); static int decodeCdmaSubscriptionSource (RIL_RadioState radioState); @@ -2114,6 +2115,40 @@ static int responseCdmaCallWaiting(Parcel &p, void *response, return 0; } +static int responseSimRefresh(Parcel &p, void *response, size_t responselen) { + if (response == NULL && responselen != 0) { + ALOGE("responseSimRefresh: invalid response: NULL"); + return RIL_ERRNO_INVALID_RESPONSE; + } + + startResponse; + if (s_callbacks.version == 7) { + RIL_SimRefreshResponse_v7 *p_cur = ((RIL_SimRefreshResponse_v7 *) response); + p.writeInt32(p_cur->result); + p.writeInt32(p_cur->ef_id); + writeStringToParcel(p, p_cur->aid); + + appendPrintBuf("%sresult=%d, ef_id=%d, aid=%s", + printBuf, + p_cur->result, + p_cur->ef_id, + p_cur->aid); + } else { + int *p_cur = ((int *) response); + p.writeInt32(p_cur[0]); + p.writeInt32(p_cur[1]); + writeStringToParcel(p, NULL); + + appendPrintBuf("%sresult=%d, ef_id=%d", + printBuf, + p_cur[0], + p_cur[1]); + } + closeResponse; + + return 0; +} + static void triggerEvLoop() { int ret; if (!pthread_equal(pthread_self(), s_tid_dispatch)) { diff --git a/libril/ril_unsol_commands.h b/libril/ril_unsol_commands.h index 0964773..7e3f8f0 100644 --- a/libril/ril_unsol_commands.h +++ b/libril/ril_unsol_commands.h @@ -31,7 +31,7 @@ {RIL_UNSOL_STK_EVENT_NOTIFY, responseString, WAKE_PARTIAL}, {RIL_UNSOL_STK_CALL_SETUP, responseInts, WAKE_PARTIAL}, {RIL_UNSOL_SIM_SMS_STORAGE_FULL, responseVoid, WAKE_PARTIAL}, - {RIL_UNSOL_SIM_REFRESH, responseInts, WAKE_PARTIAL}, + {RIL_UNSOL_SIM_REFRESH, responseSimRefresh, WAKE_PARTIAL}, {RIL_UNSOL_CALL_RING, responseCallRing, WAKE_PARTIAL}, {RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, responseVoid, WAKE_PARTIAL}, {RIL_UNSOL_RESPONSE_CDMA_NEW_SMS, responseCdmaSms, WAKE_PARTIAL}, |