Open Source Telephony
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: ofono@ofono.org
Subject: Re: [PATCH 1/1] (RFC) Huawei: Modify ^SYSINFO logic
Date: Sun, 18 Jul 2010 15:59:06 -0700	[thread overview]
Message-ID: <1279493946.4572.9.camel@localhost.localdomain> (raw)
In-Reply-To: <20100718220903.GA10397@h02.hostsharing.net>

[-- Attachment #1: Type: text/plain, Size: 5111 bytes --]

Hi Florian,

>  plugins/huawei.c |  114 +++++++++++++++++++++++++++++++++++++++++++++++++----
>  1 files changed, 105 insertions(+), 9 deletions(-)
> 
> diff --git a/plugins/huawei.c b/plugins/huawei.c
> index cfc693d..c14b076 100644
> --- a/plugins/huawei.c
> +++ b/plugins/huawei.c
> @@ -57,12 +57,22 @@
>  
>  static const char *none_prefix[] = { NULL };
>  static const char *sysinfo_prefix[] = { "^SYSINFO:", NULL };
> +static const char *cpin_prefix[] = { "CPIN:", NULL };
> +
> +enum my_sim_state {
> +	SIM_STATE_INVALID_OR_PIN_BLOCKED = 0,
> +	SIM_STATE_NORMAL_SIM_CARD = 1,
> +	SIM_STATE_SIM_NOT_VALID_IN_CS_MODE = 2,
> +	SIM_STATE_SIM_NOT_VALID_IN_PS_MODE = 3,
> +	SIM_STATE_SIM_NOT_VALID_IN_CS_OR_PS_MODE = 4,
> +	SIM_STATE_SIM_NOT_PRESENT = 255
> +};

Using my_ prefix is not really an option ;)

Anyhow, I think using #define here is as good. So just use define and
leave it as gint sim_state in the source.
 
>  struct huawei_data {
>  	GAtChat *modem;
>  	GAtChat *pcui;
>  	struct ofono_sim *sim;
> -	gint sim_state;
> +	enum my_sim_state sim_state;
>  	struct ofono_gprs *gprs;
>  	struct ofono_gprs_context *gc;
>  };
> @@ -101,19 +111,105 @@ static void huawei_debug(const char *str, void *user_data)
>  	ofono_info("%s%s", prefix, str);
>  }
>  
> -static void notify_sim_state(struct ofono_modem *modem, gint sim_state)
> +static void notify_sim_state(struct ofono_modem *modem, enum my_sim_state sim_state)
>  {
>  	struct huawei_data *data = ofono_modem_get_data(modem);
>  
> -	if (data->sim_state == 0 && sim_state == 1) {
> -		ofono_sim_inserted_notify(data->sim, TRUE);
> -		data->sim_state = sim_state;
> -	} else if (data->sim_state == 1 && sim_state == 0) {
> -		ofono_sim_inserted_notify(data->sim, FALSE);
> -		data->sim_state = sim_state;
> +	switch (sim_state) {
> +	case SIM_STATE_INVALID_OR_PIN_BLOCKED:
> +		if (data->sim_state != sim_state) {
> +			/* TODO copy code from mbm.c function init_simpin_check and ff */
> +			ofono_sim_inserted_notify(data->sim, TRUE);
> +		}
> +
> +		break;

No empty line needed before break here.

> +	case SIM_STATE_NORMAL_SIM_CARD:
> +		if (data->sim_state != sim_state) {
> +			ofono_sim_inserted_notify(data->sim, TRUE);
> +		}

For single line statement we don't do { }

> +
> +		break;
> +
> +	case SIM_STATE_SIM_NOT_VALID_IN_CS_MODE:
> +		if (data->sim_state != sim_state) {
> +			ofono_sim_inserted_notify(data->sim, FALSE);
> +		}
> +
> +		break;
> +
> +	case SIM_STATE_SIM_NOT_VALID_IN_PS_MODE:
> +		if (data->sim_state != sim_state) {
> +			ofono_sim_inserted_notify(data->sim, FALSE);
> +		}
> +
> +		break;
> +
> +	case SIM_STATE_SIM_NOT_VALID_IN_CS_OR_PS_MODE:
> +		if (data->sim_state != sim_state) {
> +			ofono_sim_inserted_notify(data->sim, FALSE);
> +		}
> +
> +		break;
> +
> +	case SIM_STATE_SIM_NOT_PRESENT:
> +		if (data->sim_state != sim_state) {
> +			ofono_sim_inserted_notify(data->sim, FALSE);
> +		}
> +
> +		break;

Just combining these into one might be better:

	case SIM_STATE_SIM_NOT_VALID_IN_CS_OR_PS_MODE:
	case SIM_STATE_SIM_NOT_PRESENT:

and so on.

> +
> +	default:
> +		break;
>  	}
> +	data->sim_state = sim_state;

And here I would prefer an extra empty line after the switch block.

>  }
>  
> +/*
> + *
> + * SYSINFO = a,b,c,d,e,f
> + *
> + * a :
> + *   0 - no network access 
> + *   1 - limited access to the network 
> + *   2 - normal access to the network 
> + *   3 - limited access to networks in your area 
> + *   4 - Power saving mode 
> + * b:
> + *   0 - no access to the call date 
> + *   1 - only the circuit switching 
> + *   2 - only the packet switching 
> + *   3 - PS + SC 
> + *   4 - had not registered 
> + * c:
> + *   0 - registered in your home network 
> + *   1 - registered in roaming 
> + * d:
> + *   0 - no network access 
> + *   1 - APMs 
> + *   2 - CDMA 
> + *   3 - GSM / GPRS 
> + *   4 - HDR 
> + *   5 - WCDMA 
> + *   6 - GPS 
> + * e:
> + *   0 - invalid SIM card or PIN code blocked 
> + *   1 - normal SIM card 
> + *   2 - SIM card not valid in CS mode 
> + *   3 - SIM card not valid in PS mode 
> + *   4 - SIM card not valid in PS or CS mode 
> + * f:
> + *   0 - no network access 
> + *   1 - GSM mode 
> + *   2 - GPRS 
> + *   3 - Mode EDGE 
> + *   4 - WCDMA mode 
> + *   5 - HSDPA mode 
> + *   6 - HSUPA mode 
> + *   7 - mode HSPA 
> + *   8 - HSPA + mode
> + *
> + */

Do we wanna keep this inside the source or better create doc/huawei.txt
which explains all the Huawei specific vendor codes we know about. I
think the latter might be more useful.

>  static void sysinfo_cb(gboolean ok, GAtResult *result, gpointer user_data)
>  {
>  	struct ofono_modem *modem = user_data;
> @@ -277,7 +373,7 @@ static int huawei_enable(struct ofono_modem *modem)
>  		return -EIO;
>  	}
>  
> -	data->sim_state = 0;
> +	data->sim_state = SIM_STATE_SIM_NOT_PRESENT;
>  
>  	g_at_chat_send(data->pcui, "ATE0", none_prefix, NULL, NULL, NULL);
>  

Regards

Marcel



  reply	other threads:[~2010-07-18 22:59 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-18 11:04 Huawei E176 - not online Florian Steinel
2010-07-18 14:55 ` Denis Kenzior
2010-07-18 20:19   ` Florian Steinel
2010-07-18 22:09     ` [PATCH 1/1] (RFC) Huawei: Modify ^SYSINFO logic Florian Steinel
2010-07-18 22:59       ` Marcel Holtmann [this message]
2010-07-19  1:42     ` Huawei E176 - not online Denis Kenzior
2010-07-21  8:56 ` Kalle Valo
2010-07-21  9:06   ` Kalle Valo

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=1279493946.4572.9.camel@localhost.localdomain \
    --to=marcel@holtmann.org \
    --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