summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2015-11-05 10:47:02 -0600
committerDenis Kenzior <denkenz@gmail.com>2015-11-05 10:47:02 -0600
commitacee0e4755efbf433ba1c1e3ea8b4b01382ab01f (patch)
tree9e97dc139c26e2495c59aeaa023f88be401cc01d /drivers
parent087c4b4fa63cc55a4252112624a5d07e3d6a5397 (diff)
downloadofono-acee0e4755efbf433ba1c1e3ea8b4b01382ab01f.tar.bz2
rilmodem: Implement ril_call_barring_query_cb inline
Diffstat (limited to 'drivers')
-rw-r--r--drivers/rilmodem/call-barring.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/rilmodem/call-barring.c b/drivers/rilmodem/call-barring.c
index 69f2f483..21e2a77b 100644
--- a/drivers/rilmodem/call-barring.c
+++ b/drivers/rilmodem/call-barring.c
@@ -52,18 +52,26 @@ static void ril_call_barring_query_cb(struct ril_msg *message,
struct cb_data *cbd = user_data;
ofono_call_barring_query_cb_t cb = cbd->cb;
struct barring_data *bd = cbd->user;
+ struct parcel rilp;
int bearer_class;
- if (message->error != RIL_E_SUCCESS) {
- ofono_error("%s: query failed, err: %s", __func__,
- ril_error_to_string(message->error));
+ if (message->error != RIL_E_SUCCESS)
goto error;
- }
- bearer_class = g_ril_reply_parse_query_facility_lock(bd->ril, message);
- if (bearer_class < 0)
+ g_ril_init_parcel(message, &rilp);
+
+ /* TODO: infineon returns two integers, use a quirk here */
+ if (parcel_r_int32(&rilp) < 1)
goto error;
+ bearer_class = parcel_r_int32(&rilp);
+
+ if (bearer_class < 1 || rilp.malformed)
+ goto error;
+
+ g_ril_append_print_buf(bd->ril, "{%d}", bearer_class);
+ g_ril_print_response(bd->ril, message);
+
CALLBACK_WITH_SUCCESS(cb, bearer_class, cbd->data);
return;