diff options
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}, |