diff options
author | Denis Kenzior <denkenz@gmail.com> | 2015-11-05 10:47:02 -0600 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2015-11-05 10:47:02 -0600 |
commit | acee0e4755efbf433ba1c1e3ea8b4b01382ab01f (patch) | |
tree | 9e97dc139c26e2495c59aeaa023f88be401cc01d | |
parent | 087c4b4fa63cc55a4252112624a5d07e3d6a5397 (diff) | |
download | ofono-acee0e4755efbf433ba1c1e3ea8b4b01382ab01f.tar.bz2 |
rilmodem: Implement ril_call_barring_query_cb inline
-rw-r--r-- | drivers/rilmodem/call-barring.c | 20 |
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; |