Open Source Telephony
 help / color / mirror / Atom feed
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

  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