summaryrefslogtreecommitdiffstats
path: root/libril
diff options
context:
space:
mode:
Diffstat (limited to 'libril')
-rw-r--r--libril/ril.cpp35
-rw-r--r--libril/ril_unsol_commands.h2
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},