summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/atmodem/call-barring.c13
-rw-r--r--src/call-barring.c9
-rw-r--r--src/driver.h2
3 files changed, 16 insertions, 8 deletions
diff --git a/drivers/atmodem/call-barring.c b/drivers/atmodem/call-barring.c
index 76e1f09a..94f62912 100644
--- a/drivers/atmodem/call-barring.c
+++ b/drivers/atmodem/call-barring.c
@@ -78,16 +78,21 @@ static void clck_query_cb(gboolean ok, GAtResult *result, gpointer user_data)
}
static void at_call_barring_query(struct ofono_modem *modem, const char *lock,
- ofono_call_barring_cb_t cb, void *data)
+ int cls, ofono_call_barring_cb_t cb,
+ void *data)
{
struct at_data *at = ofono_modem_userdata(modem);
struct cb_data *cbd = cb_data_new(modem, cb, data);
char buf[64];
+ int len;
if (!cbd || strlen(lock) != 2)
goto error;
- sprintf(buf, "AT+CLCK=\"%s\",2", lock);
+ len = sprintf(buf, "AT+CLCK=\"%s\",2", lock);
+
+ if (cls != 7)
+ sprintf(buf + len, ",%d", cls);
if (g_at_chat_send(at->parser, buf, clck_prefix,
clck_query_cb, cbd, g_free) > 0)
@@ -115,8 +120,8 @@ static void clck_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
}
static void at_call_barring_set(struct ofono_modem *modem, const char *lock,
- int enable, const char *passwd, int cls,
- ofono_generic_cb_t cb, void *data)
+ int enable, const char *passwd, int cls,
+ ofono_generic_cb_t cb, void *data)
{
struct at_data *at = ofono_modem_userdata(modem);
struct cb_data *cbd = cb_data_new(modem, cb, data);
diff --git a/src/call-barring.c b/src/call-barring.c
index df184de6..444b89d4 100644
--- a/src/call-barring.c
+++ b/src/call-barring.c
@@ -312,8 +312,11 @@ static gboolean cb_ss_query_next_lock(gpointer user)
{
struct ofono_modem *modem = user;
struct call_barring_data *cb = modem->call_barring;
+ int cls;
- cb->ops->query(modem, cb_locks[cb->query_next].fac,
+ cls = cb->ss_req_cls | BEARER_CLASS_DEFAULT;
+
+ cb->ops->query(modem, cb_locks[cb->query_next].fac, cls,
cb_ss_query_next_lock_callback, modem);
return FALSE;
@@ -602,7 +605,7 @@ static gboolean get_query_next_lock(gpointer user)
struct call_barring_data *cb = modem->call_barring;
cb->ops->query(modem, cb_locks[cb->query_next].fac,
- get_query_lock_callback, modem);
+ BEARER_CLASS_DEFAULT, get_query_lock_callback, modem);
return FALSE;
}
@@ -667,7 +670,7 @@ static gboolean set_query_next_lock(gpointer user)
struct call_barring_data *cb = modem->call_barring;
cb->ops->query(modem, cb_locks[cb->query_next].fac,
- set_query_lock_callback, modem);
+ BEARER_CLASS_DEFAULT, set_query_lock_callback, modem);
return FALSE;
}
diff --git a/src/driver.h b/src/driver.h
index 5d440c00..c329f563 100644
--- a/src/driver.h
+++ b/src/driver.h
@@ -340,7 +340,7 @@ struct ofono_call_barring_ops {
void (*set)(struct ofono_modem *modem, const char *lock,
int enable, const char *passwd, int cls,
ofono_generic_cb_t cb, void *data);
- void (*query)(struct ofono_modem *modem, const char *lock,
+ void (*query)(struct ofono_modem *modem, const char *lock, int cls,
ofono_call_barring_cb_t cb, void *data);
};