From: August Mayer Date: Thu, 16 Aug 2012 08:11:16 +0000 (+0200) Subject: gprs: data bearer for telit with PSNT X-Git-Tag: 1.11~34 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4293e4ea63a95dd8de54ee573a7ea514bfb1b89b;p=platform%2Fupstream%2Fofono.git gprs: data bearer for telit with PSNT Telit neither supports '+CPSB' nor reports the data bearer through '+CGREG'. It has its own +PSNT command. --- diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c index 65a8b7b..3005867 100644 --- a/drivers/atmodem/gprs.c +++ b/drivers/atmodem/gprs.c @@ -247,6 +247,41 @@ static void huawei_mode_notify(GAtResult *result, gpointer user_data) ofono_gprs_bearer_notify(gprs, bearer); } +static void telit_mode_notify(GAtResult *result, gpointer user_data) +{ + struct ofono_gprs *gprs = user_data; + GAtResultIter iter; + gint nt, bearer; + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, "#PSNT:")) + return; + + if (!g_at_result_iter_next_number(&iter,&nt)) + return; + + switch (nt) { + case 0: + bearer = 1; /* GPRS */ + break; + case 1: + bearer = 2; /* EDGE */ + break; + case 2: + bearer = 3; /* UMTS */ + break; + case 3: + bearer = 5; /* HSDPA */ + break; + default: + bearer = 0; + break; + } + + ofono_gprs_bearer_notify(gprs, bearer); +} + static void cpsb_notify(GAtResult *result, gpointer user_data) { struct ofono_gprs *gprs = user_data; @@ -281,6 +316,11 @@ static void gprs_initialized(gboolean ok, GAtResult *result, gpointer user_data) g_at_chat_register(gd->chat, "^MODE:", huawei_mode_notify, FALSE, gprs, NULL); break; + case OFONO_VENDOR_TELIT: + g_at_chat_register(gd->chat, "#PSNT:", telit_mode_notify, + FALSE, gprs, NULL); + g_at_chat_send(gd->chat, "AT#PSNT=1", none_prefix, + NULL, NULL, NULL); default: g_at_chat_register(gd->chat, "+CPSB:", cpsb_notify, FALSE, gprs, NULL);