summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2015-11-05 10:26:49 -0600
committerDenis Kenzior <denkenz@gmail.com>2015-11-05 10:26:49 -0600
commitb54e7c9ee8e5780eebf92ad4b46da995776278cf (patch)
tree51a0c9b8ed3aa9e846d3a0b137e72e39f2b29210 /drivers
parentead396a119e617e6cb156c1bfaf7e094de6f7d7e (diff)
downloadofono-b54e7c9ee8e5780eebf92ad4b46da995776278cf.tar.bz2
rilmodem: Implement ril_call_barring_query inline
Diffstat (limited to 'drivers')
-rw-r--r--drivers/rilmodem/call-barring.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/rilmodem/call-barring.c b/drivers/rilmodem/call-barring.c
index 6a19556e..79c1d595 100644
--- a/drivers/rilmodem/call-barring.c
+++ b/drivers/rilmodem/call-barring.c
@@ -71,6 +71,7 @@ static void ril_call_barring_query(struct ofono_call_barring *cb,
struct barring_data *bd = ofono_call_barring_get_data(cb);
struct cb_data *cbd = cb_data_new(callback, data, bd);
struct parcel rilp;
+ char svcs_str[4];
DBG("lock: %s, services to query: %d", lock, cls);
@@ -82,15 +83,23 @@ static void ril_call_barring_query(struct ofono_call_barring *cb,
if (cls == BEARER_CLASS_DEFAULT)
cls = SERVICE_CLASS_NONE;
- /* ril.h: password should be empty string "" when not needed */
- g_ril_request_query_facility_lock(bd->ril, lock, "", cls, &rilp);
+ parcel_init(&rilp);
+ parcel_w_int32(&rilp, 4); /* # of strings */
+ parcel_w_string(&rilp, lock);
+ parcel_w_string(&rilp, ""); /* Password is empty when not needed */
+ snprintf(svcs_str, sizeof(svcs_str), "%d", cls);
+ parcel_w_string(&rilp, svcs_str);
+ parcel_w_string(&rilp, NULL); /* AID (for FDN, not yet supported) */
+
+ g_ril_append_print_buf(bd->ril, "(%s,\"\",%s,(null))",
+ lock, svcs_str);
if (g_ril_send(bd->ril, RIL_REQUEST_QUERY_FACILITY_LOCK, &rilp,
- ril_call_barring_query_cb, cbd, g_free) <= 0) {
- ofono_error("%s: sending failed", __func__);
- g_free(cbd);
- CALLBACK_WITH_FAILURE(callback, -1, data);
- }
+ ril_call_barring_query_cb, cbd, g_free) > 0)
+ return;
+
+ g_free(cbd);
+ CALLBACK_WITH_FAILURE(callback, -1, data);
}
static void ril_call_barring_set_cb(struct ril_msg *message, gpointer user_data)