summaryrefslogtreecommitdiffstats
path: root/libril
diff options
context:
space:
mode:
authorAlex Yakavenka <ayakaven@quicinc.com>2012-01-31 11:48:27 -0800
committerWink Saville <wink@google.com>2012-01-31 12:31:41 -0800
commit45e740ef3c422bf75aadca21f98614fc120f49fb (patch)
tree9e1843b9bfe727f7cf57d90d62bb1344f995f85c /libril
parent0b5d0bc6f19b4b945e5a0dc83ca66c24312e2d36 (diff)
downloadandroid_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.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},