From: Denis Kenzior <denkenz@gmail.com>
To: ofono@ofono.org
Subject: Re: [PATCH 6/8] gprs: data bearer for telit with PSNT
Date: Mon, 13 Aug 2012 09:48:15 -0500 [thread overview]
Message-ID: <502913AF.5020603@gmail.com> (raw)
In-Reply-To: <1344864193-23132-1-git-send-email-christopher.vogl@hale.at>
[-- Attachment #1: Type: text/plain, Size: 3386 bytes --]
Hi Christopher,
On 08/13/2012 08:23 AM, Christopher Vogl wrote:
> From: August Mayer<august.mayer@hale.at>
>
> Telit neither supports '+CPSB' nor reports the data bearer through
> '+CGREG'. It has its own +PSNT command.
> ---
> drivers/atmodem/gprs.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 76 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c
> index f87548e..ffb8dfe 100644
> --- a/drivers/atmodem/gprs.c
> +++ b/drivers/atmodem/gprs.c
> @@ -44,6 +44,7 @@
>
> static const char *cgreg_prefix[] = { "+CGREG:", NULL };
> static const char *cgdcont_prefix[] = { "+CGDCONT:", NULL };
> +static const char *psnt_prefix[] = { "#PSNT:", NULL };
> static const char *none_prefix[] = { NULL };
>
> struct gprs_data {
> @@ -247,6 +248,73 @@ static void huawei_mode_notify(GAtResult *result, gpointer user_data)
> ofono_gprs_bearer_notify(gprs, bearer);
> }
>
> +static gint psnt_to_bearer(gint network_type)
> +{
> + gint bearer;
> +
> + switch (network_type) {
> + 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;
> + }
> +
> + return bearer;
> +}
> +
> +static void at_psnt_test_cb(gboolean ok, GAtResult *result,
> + gpointer user_data)
Just a minor nitpick, but we usually call this '_query'.
> +{
> + 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, NULL))
> + return;
> +
> + if (!g_at_result_iter_next_number(&iter,&nt))
> + return;
> +
> + bearer = psnt_to_bearer(nt);
> +
> + 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;
> +
> + bearer = psnt_to_bearer(nt);
> +
> + ofono_gprs_bearer_notify(gprs, bearer);
> +}
> +
> static void cpsb_notify(GAtResult *result, gpointer user_data)
> {
> struct ofono_gprs *gprs = user_data;
> @@ -281,6 +349,14 @@ 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);
> + g_at_chat_send(gd->chat, "AT#PSNT?", psnt_prefix,
> + at_psnt_test_cb, gprs, NULL);
Do you really need to query this? In theory if we are turning off
auto-attach, we should never be in a state where the bearer should be
queried.
> + break;
> default:
> g_at_chat_register(gd->chat, "+CPSB:", cpsb_notify,
> FALSE, gprs, NULL);
Regards,
-Denis
next prev parent reply other threads:[~2012-08-13 14:48 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-13 13:23 [PATCH 6/8] gprs: data bearer for telit with PSNT Christopher Vogl
2012-08-13 14:48 ` Denis Kenzior [this message]
2012-08-14 15:39 ` Christopher Vogl
2012-08-14 6:53 ` Denis Kenzior
2012-08-16 8:11 ` [PATCH] " Christopher Vogl
2012-08-16 6:12 ` Denis Kenzior
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=502913AF.5020603@gmail.com \
--to=denkenz@gmail.com \
--cc=ofono@ofono.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox