atmodem: packet switch bearer support

This commit is contained in:
Rémi Denis-Courmont 2011-01-20 10:37:52 +02:00 committed by Marcel Holtmann
parent 7b0e7b6640
commit e3f51d7507
1 changed files with 33 additions and 0 deletions

View File

@ -200,6 +200,37 @@ static void xdatastat_notify(GAtResult *result, gpointer user_data)
}
}
static void cpsb_notify(GAtResult *result, gpointer user_data)
{
struct ofono_gprs *gprs = user_data;
GAtResultIter iter;
gint bearer;
g_at_result_iter_init(&iter, result);
if (!g_at_result_iter_next(&iter, "+CPSB:"))
return;
if (!g_at_result_iter_next_number(&iter, NULL))
return;
if (!g_at_result_iter_next_number(&iter, &bearer))
return;
ofono_gprs_bearer_notify(gprs, bearer);
}
static void cpsb_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_gprs *gprs = user_data;
struct gprs_data *gd = ofono_gprs_get_data(gprs);
if (!ok)
return;
g_at_chat_register(gd->chat, "+CPSB:", cpsb_notify, FALSE, gprs, NULL);
}
static void gprs_initialized(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_gprs *gprs = user_data;
@ -208,6 +239,8 @@ static void gprs_initialized(gboolean ok, GAtResult *result, gpointer user_data)
g_at_chat_register(gd->chat, "+CGEV:", cgev_notify, FALSE, gprs, NULL);
g_at_chat_register(gd->chat, "+CGREG:", cgreg_notify,
FALSE, gprs, NULL);
g_at_chat_send(gd->chat, "AT+CPSB=1", none_prefix,
cpsb_set_cb, gprs, NULL);
switch (gd->vendor) {
case OFONO_VENDOR_IFX: