All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Telit HE910
@ 2012-12-17 16:22 Mingli Wu
  2012-12-17 16:22 ` [PATCH 1/3] Support Telit cdc acm device Mingli Wu
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Mingli Wu @ 2012-12-17 16:22 UTC (permalink / raw)
  To: ofono

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

Hi Christopher,

I've been working on the Telit HE910 modem too, as I see from
the mailing list that you have been.

Allow me to send a coule of patches that I have in progress and
that are needed for things to work.  Could you take a look at
these and possibily incorporate them into ofono in a way that's
acceptable to upstream?

The first patch in the series is similar to what you sent to
the mailing list today but sets more options... I can't recall
if setting only baud rate was insufficient, right now, so I'll
just send the entire patch.

Thanks,
Mingli Wu

Mingli Wu (3):
  Support Telit cdc acm device
  Drop checking whether +CMER is supported.
  Delay 10 seconds between CFUN=4 and CFUN=1

 drivers/atmodem/network-registration.c |    2 -
 include/modem.h                        |    3 +
 plugins/telit.c                        |  101 +++++++++++++++++++++++++++++++-
 plugins/udevng.c                       |   30 +++++++++-
 src/modem.c                            |   11 ++++
 5 files changed, 143 insertions(+), 4 deletions(-)

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/3] Support Telit cdc acm device
  2012-12-17 16:22 [PATCH 0/3] Telit HE910 Mingli Wu
@ 2012-12-17 16:22 ` Mingli Wu
  2012-12-17 16:34   ` Denis Kenzior
  2012-12-17 16:22 ` [PATCH 2/3] Drop checking whether +CMER is supported Mingli Wu
  2012-12-17 16:22 ` [PATCH 3/3] Delay 10 seconds between CFUN=4 and CFUN=1 Mingli Wu
  2 siblings, 1 reply; 8+ messages in thread
From: Mingli Wu @ 2012-12-17 16:22 UTC (permalink / raw)
  To: ofono

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

This patch is for Telit HE910 modem. Configure modem and aux ports
of ACM devices. some code of this patch was found on the Internet.
---
 include/modem.h  |    3 +++
 plugins/telit.c  |   24 +++++++++++++++++++++++-
 plugins/udevng.c |   30 +++++++++++++++++++++++++++++-
 src/modem.c      |   11 +++++++++++
 4 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/include/modem.h b/include/modem.h
index 6e08275..303bc24 100644
--- a/include/modem.h
+++ b/include/modem.h
@@ -112,6 +112,9 @@ int ofono_modem_set_boolean(struct ofono_modem *modem,
 ofono_bool_t ofono_modem_get_boolean(struct ofono_modem *modem,
 					const char *key);
 
+void ofono_modem_set_modem_info(struct ofono_modem *omodem, void *modem_info);
+void *ofono_modem_get_modem_info(struct ofono_modem *omodem);
+
 int ofono_modem_driver_register(const struct ofono_modem_driver *);
 void ofono_modem_driver_unregister(const struct ofono_modem_driver *);
 
diff --git a/plugins/telit.c b/plugins/telit.c
index a0f7deb..aaf2a9d 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -180,6 +180,7 @@ static gboolean hw_event_cb(GIOChannel *hw_io, GIOCondition condition,
 	return FALSE;
 }
 
+extern gboolean udevng_match_modem_id(struct ofono_modem *modem, char *vendorid, char *productid);
 static GAtChat *open_device(struct ofono_modem *modem,
 				const char *key, char *debug)
 {
@@ -187,6 +188,7 @@ static GAtChat *open_device(struct ofono_modem *modem,
 	GAtSyntax *syntax;
 	GIOChannel *channel;
 	GAtChat *chat;
+	GHashTable *options = NULL;
 
 	device = ofono_modem_get_string(modem, key);
 	if (device == NULL)
@@ -194,7 +196,27 @@ static GAtChat *open_device(struct ofono_modem *modem,
 
 	DBG("%s %s", key, device);
 
-	channel = g_at_tty_open(device, NULL);
+	/* This is for Telit HE910. */
+	if(udevng_match_modem_id(modem, "1bc7", "0021")){
+		options = g_hash_table_new(g_str_hash, g_str_equal);
+
+		if (options == NULL)
+			return NULL;
+
+		g_hash_table_insert(options, "Baud", "115200");
+		g_hash_table_insert(options, "Parity", "none");
+		g_hash_table_insert(options, "StopBits", "1");
+		g_hash_table_insert(options, "DataBits", "8");
+		g_hash_table_insert(options, "XonXoff", "off");
+		g_hash_table_insert(options, "Local", "on");
+		g_hash_table_insert(options, "RtsCts", "on");
+	}
+
+	channel = g_at_tty_open(device, options);
+	if(options){
+		g_hash_table_destroy(options);
+	}
+
 	if (channel == NULL)
 		return NULL;
 
diff --git a/plugins/udevng.c b/plugins/udevng.c
index afb02ca..b7cdef6 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -57,6 +57,20 @@ struct device_info {
 	char *sysattr;
 };
 
+
+gboolean udevng_match_modem_id(struct ofono_modem *modem, char *vendorid, char *productid)
+{
+	struct modem_info *modem_info = ofono_modem_get_modem_info(modem);
+
+	if(!modem_info){
+		return FALSE;
+	}
+	if (g_strcmp0(modem_info->vendor, vendorid) || g_strcmp0(modem_info->model, productid)){
+		return FALSE;
+	}
+	return TRUE;
+}
+
 static gboolean setup_isi(struct modem_info *modem)
 {
 	const char *node = NULL;
@@ -620,6 +634,17 @@ static gboolean setup_telit(struct modem_info *modem)
 			else if (g_strcmp0(info->number, "03") == 0)
 				aux = info->devnode;
 		}
+		/* This for Telit HE910 */
+		else if (!g_strcmp0(modem->vendor, "1bc7") && !g_strcmp0(modem->model, "0021")){
+			if (g_strcmp0(info->interface, "2/2/1") == 0) {
+				if (g_strcmp0(info->number, "00") == 0)
+					mdm = info->devnode;
+				else if (g_strcmp0(info->number, "02") == 0)
+					diag = info->devnode;
+				else if (g_strcmp0(info->number, "06") == 0)
+					aux = info->devnode;
+			}
+		}
 	}
 
 	if (aux == NULL || mdm == NULL)
@@ -629,7 +654,8 @@ static gboolean setup_telit(struct modem_info *modem)
 
 	ofono_modem_set_string(modem->modem, "Modem", mdm);
 	ofono_modem_set_string(modem->modem, "Aux", aux);
-	ofono_modem_set_string(modem->modem, "GPS", gps);
+	//ofono_modem_set_string(modem->modem, "GPS", gps);
+	ofono_modem_set_string(modem->modem, "Diag", diag);
 
 	return TRUE;
 }
@@ -988,6 +1014,7 @@ static struct {
 	{ "simcom",	"option",	"05c6", "9000"	},
 	{ "telit",	"usbserial",	"1bc7"		},
 	{ "telit",	"option",	"1bc7"		},
+	{ "telit",      "cdc_acm",      "1bc7", "0021"  },
 	{ "nokia",	"option",	"0421", "060e"	},
 	{ "nokia",	"option",	"0421", "0623"	},
 	{ "samsung",	"option",	"04e8", "6889"	},
@@ -1113,6 +1140,7 @@ static gboolean create_modem(gpointer key, gpointer value, gpointer user_data)
 	if (modem->modem == NULL)
 		return TRUE;
 
+	ofono_modem_set_modem_info(modem->modem, modem);
 	for (i = 0; driver_list[i].name; i++) {
 		if (g_str_equal(driver_list[i].name, modem->driver) == FALSE)
 			continue;
diff --git a/src/modem.c b/src/modem.c
index 3c7c80a..207dce8 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -87,6 +87,7 @@ struct ofono_modem {
 	void			*driver_data;
 	char			*driver_type;
 	char			*name;
+	void                    *modem_info;
 };
 
 struct ofono_devinfo {
@@ -119,6 +120,16 @@ struct modem_property {
 	void *value;
 };
 
+void ofono_modem_set_modem_info(struct ofono_modem *omodem, void *modem_info)
+{
+	omodem->modem_info = modem_info;
+}
+
+void *ofono_modem_get_modem_info(struct ofono_modem *omodem)
+{
+	return omodem->modem_info;
+}
+
 static const char *modem_type_to_string(enum ofono_modem_type type)
 {
 	switch (type) {
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/3] Drop checking whether +CMER is supported.
  2012-12-17 16:22 [PATCH 0/3] Telit HE910 Mingli Wu
  2012-12-17 16:22 ` [PATCH 1/3] Support Telit cdc acm device Mingli Wu
@ 2012-12-17 16:22 ` Mingli Wu
  2012-12-17 16:27   ` Denis Kenzior
  2012-12-18 10:08   ` Christopher Vogl
  2012-12-17 16:22 ` [PATCH 3/3] Delay 10 seconds between CFUN=4 and CFUN=1 Mingli Wu
  2 siblings, 2 replies; 8+ messages in thread
From: Mingli Wu @ 2012-12-17 16:22 UTC (permalink / raw)
  To: ofono

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

For Telit HE910,  ofono always got "\r\n+CME ERROR: 14\r\n"
after issuing "AT+CMER=3,0,0,2\r" command. "CME ERROR: 14"
means that SIM is busy. Now we igonre the result of the
command "AT+CMER=3,0,0,2\r", and register network anyway.
---
 drivers/atmodem/network-registration.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c
index 19b19b2..518a548 100644
--- a/drivers/atmodem/network-registration.c
+++ b/drivers/atmodem/network-registration.c
@@ -1480,7 +1480,6 @@ static void at_cmer_not_supported(struct ofono_netreg *netreg)
 	ofono_error("+CMER not supported by this modem.  If this is an error"
 			" please submit patches to support this hardware");
 
-	ofono_netreg_remove(netreg);
 }
 
 static void at_cmer_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -1490,7 +1489,6 @@ static void at_cmer_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
 
 	if (!ok) {
 		at_cmer_not_supported(netreg);
-		return;
 	}
 
 	/*
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/3] Delay 10 seconds between CFUN=4 and CFUN=1
  2012-12-17 16:22 [PATCH 0/3] Telit HE910 Mingli Wu
  2012-12-17 16:22 ` [PATCH 1/3] Support Telit cdc acm device Mingli Wu
  2012-12-17 16:22 ` [PATCH 2/3] Drop checking whether +CMER is supported Mingli Wu
@ 2012-12-17 16:22 ` Mingli Wu
  2 siblings, 0 replies; 8+ messages in thread
From: Mingli Wu @ 2012-12-17 16:22 UTC (permalink / raw)
  To: ofono

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

According Telit software user guide:
Note: the protocol implementation of the module requires a
delay between consecutive activation of CFUN=1 and CFUN=4
(or vice versa) modes. It is suggested to use a delay of
10 sec.
---
 plugins/telit.c |   77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/plugins/telit.c b/plugins/telit.c
index aaf2a9d..8938425 100644
--- a/plugins/telit.c
+++ b/plugins/telit.c
@@ -31,6 +31,7 @@
 #include <termios.h>
 #include <string.h>
 #include <sys/socket.h>
+#include <time.h>
 
 #include <glib.h>
 #include <gatchat.h>
@@ -75,6 +76,10 @@ struct telit_data {
 	GIOChannel *hw_io;
 	guint bt_watch;
 	guint hw_watch;
+	int cfun_cmd;
+	time_t cfun_time;
+	struct cb_data *cbd;
+	ofono_bool_t online;
 };
 
 static void telit_debug(const char *str, void *user_data)
@@ -408,6 +413,10 @@ static int telit_enable(struct ofono_modem *modem)
 	g_at_chat_send(data->chat, "AT+CFUN=1", none_prefix,
 				cfun_enable_cb, modem, NULL);
 
+	data->cfun_time = time(NULL);
+	data->cfun_cmd = 1;
+	data->online = FALSE;
+
 	return -EINPROGRESS;
 }
 
@@ -614,6 +623,20 @@ static void telit_pre_sim(struct ofono_modem *modem)
 	ofono_voicecall_create(modem, 0, "atmodem", data->chat);
 }
 
+static gboolean post_sim_offline_timeout_cb(gpointer user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct telit_data *data = ofono_modem_get_data(modem);
+
+	if (!ofono_modem_get_online(modem)){
+		g_at_chat_send(data->chat, "AT+CFUN=4", none_prefix,
+				NULL, NULL, NULL);
+		data->cfun_time = time(NULL);		
+		data->cfun_cmd = 4;
+		data->online = FALSE;
+	}
+}
+
 static void telit_post_sim(struct ofono_modem *modem)
 {
 	struct telit_data *data = ofono_modem_get_data(modem);
@@ -632,9 +655,13 @@ static void telit_post_sim(struct ofono_modem *modem)
 	if (gprs && gc)
 		ofono_gprs_add_context(gprs, gc);
 
+	/* Wait for 10 secs, and then check whether it should be online */
+	g_timeout_add_seconds(10, post_sim_offline_timeout_cb, modem);
+#if 0
 	if (!ofono_modem_get_online(modem))
 		g_at_chat_send(data->chat, "AT+CFUN=4", none_prefix,
 				NULL, NULL, NULL);
+#endif
 }
 
 static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
@@ -647,17 +674,67 @@ static void set_online_cb(gboolean ok, GAtResult *result, gpointer user_data)
 	cb(&error, cbd->data);
 }
 
+static gboolean set_online_timeout_cb(gpointer user_data)
+{
+	struct ofono_modem *modem = user_data;
+	struct telit_data *data = ofono_modem_get_data(modem);
+	int cfun_cmd = data->online ? 1 : 4;
+
+	char const *command = data->online ? "AT+CFUN=1,0" : "AT+CFUN=4,0";
+
+	/* Before timeout, online status might already be changed */
+	if(data->cfun_cmd == cfun_cmd){
+		return;
+	}
+
+	g_at_chat_send(data->chat, command, none_prefix, set_online_cb,
+				data->cbd, g_free);
+
+	data->cfun_time = time(NULL);
+	data->cfun_cmd = cfun_cmd;
+
+	if (data->online) {
+		/* 
+		 * Query current sim state in case it changed while we
+		 * were offline and ignoring the QSS: 0 reports.
+		 */
+		g_at_chat_send(data->chat, "AT#QSS?", qss_prefix,
+		telit_qss_cb, modem, NULL);
+	}
+}
+
 static void telit_set_online(struct ofono_modem *modem, ofono_bool_t online,
 				ofono_modem_online_cb_t cb, void *user_data)
 {
 	struct telit_data *data = ofono_modem_get_data(modem);
 	struct cb_data *cbd = cb_data_new(cb, user_data);
 	char const *command = online ? "AT+CFUN=1,0" : "AT+CFUN=4,0";
+	int cfun_cmd = online ? 1 : 4;
 
 	DBG("modem %p %s", modem, online ? "online" : "offline");
+	
+	data->online = online;
+	if(data->cfun_cmd != cfun_cmd){
+		time_t val = abs(time(NULL) - data->cfun_time);
+
+		/*
+		 * According Telit software user guide:
+		 * the protocol implementation of the module
+		 * requires a delay between consecutive activation 
+		 * of CFUN=1 and CFUN=4 (or vice versa) modes. 
+		 * It is suggested to use a delay of 10 sec.
+		 */
+		if(val < 10){
+			data->cbd = cbd;
+			g_timeout_add_seconds(10 - val, set_online_timeout_cb, modem);
+			return;
+		}
+	}
 
 	g_at_chat_send(data->chat, command, none_prefix, set_online_cb,
 						cbd, g_free);
+	data->cfun_time = time(NULL);
+	data->cfun_cmd = cfun_cmd;
 
 	if (online) {
 		/* Query current sim state in case it changed while we
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] Drop checking whether +CMER is supported.
  2012-12-17 16:22 ` [PATCH 2/3] Drop checking whether +CMER is supported Mingli Wu
@ 2012-12-17 16:27   ` Denis Kenzior
  2012-12-18 10:08   ` Christopher Vogl
  1 sibling, 0 replies; 8+ messages in thread
From: Denis Kenzior @ 2012-12-17 16:27 UTC (permalink / raw)
  To: ofono

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

Hi Mingli,

On 12/17/2012 10:22 AM, Mingli Wu wrote:
> For Telit HE910,  ofono always got "\r\n+CME ERROR: 14\r\n"
> after issuing "AT+CMER=3,0,0,2\r" command. "CME ERROR: 14"
> means that SIM is busy. Now we igonre the result of the
> command "AT+CMER=3,0,0,2\r", and register network anyway.
> ---
>   drivers/atmodem/network-registration.c |    2 --
>   1 file changed, 2 deletions(-)
>
> diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c
> index 19b19b2..518a548 100644
> --- a/drivers/atmodem/network-registration.c
> +++ b/drivers/atmodem/network-registration.c
> @@ -1480,7 +1480,6 @@ static void at_cmer_not_supported(struct ofono_netreg *netreg)
>   	ofono_error("+CMER not supported by this modem.  If this is an error"
>   			" please submit patches to support this hardware");
>
> -	ofono_netreg_remove(netreg);

You are changing the global behavior of the driver here.  This affects 
other modems than HE910...

>   }
>
>   static void at_cmer_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
> @@ -1490,7 +1489,6 @@ static void at_cmer_set_cb(gboolean ok, GAtResult *result, gpointer user_data)
>
>   	if (!ok) {
>   		at_cmer_not_supported(netreg);
> -		return;
>   	}
>
>   	/*

Regards,
-Denis

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Support Telit cdc acm device
  2012-12-17 16:22 ` [PATCH 1/3] Support Telit cdc acm device Mingli Wu
@ 2012-12-17 16:34   ` Denis Kenzior
  2012-12-17 18:39     ` Ming Li Wu
  0 siblings, 1 reply; 8+ messages in thread
From: Denis Kenzior @ 2012-12-17 16:34 UTC (permalink / raw)
  To: ofono

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

Hi Mingli,

On 12/17/2012 10:22 AM, Mingli Wu wrote:
> This patch is for Telit HE910 modem. Configure modem and aux ports
> of ACM devices. some code of this patch was found on the Internet.
> ---
>   include/modem.h  |    3 +++
>   plugins/telit.c  |   24 +++++++++++++++++++++++-
>   plugins/udevng.c |   30 +++++++++++++++++++++++++++++-
>   src/modem.c      |   11 +++++++++++
>   4 files changed, 66 insertions(+), 2 deletions(-)

You need to break up these patches, see our patch submission guidelines 
in HACKING document, 'Submitting Patches' section.  Also please review 
the coding style guidelines in doc/coding-style.txt.

>
> diff --git a/include/modem.h b/include/modem.h
> index 6e08275..303bc24 100644
> --- a/include/modem.h
> +++ b/include/modem.h
> @@ -112,6 +112,9 @@ int ofono_modem_set_boolean(struct ofono_modem *modem,
>   ofono_bool_t ofono_modem_get_boolean(struct ofono_modem *modem,
>   					const char *key);
>
> +void ofono_modem_set_modem_info(struct ofono_modem *omodem, void *modem_info);
> +void *ofono_modem_get_modem_info(struct ofono_modem *omodem);
> +

This is not required, ofono_modem_set_string, set_integer, set_boolean 
are already enough.

>   int ofono_modem_driver_register(const struct ofono_modem_driver *);
>   void ofono_modem_driver_unregister(const struct ofono_modem_driver *);
>
> diff --git a/plugins/telit.c b/plugins/telit.c
> index a0f7deb..aaf2a9d 100644
> --- a/plugins/telit.c
> +++ b/plugins/telit.c
> @@ -180,6 +180,7 @@ static gboolean hw_event_cb(GIOChannel *hw_io, GIOCondition condition,
>   	return FALSE;
>   }
>
> +extern gboolean udevng_match_modem_id(struct ofono_modem *modem, char *vendorid, char *productid);
>   static GAtChat *open_device(struct ofono_modem *modem,
>   				const char *key, char *debug)
>   {
> @@ -187,6 +188,7 @@ static GAtChat *open_device(struct ofono_modem *modem,
>   	GAtSyntax *syntax;
>   	GIOChannel *channel;
>   	GAtChat *chat;
> +	GHashTable *options = NULL;
>
>   	device = ofono_modem_get_string(modem, key);
>   	if (device == NULL)
> @@ -194,7 +196,27 @@ static GAtChat *open_device(struct ofono_modem *modem,
>
>   	DBG("%s %s", key, device);
>
> -	channel = g_at_tty_open(device, NULL);
> +	/* This is for Telit HE910. */
> +	if(udevng_match_modem_id(modem, "1bc7", "0021")){
> +		options = g_hash_table_new(g_str_hash, g_str_equal);
> +
> +		if (options == NULL)
> +			return NULL;
> +
> +		g_hash_table_insert(options, "Baud", "115200");
> +		g_hash_table_insert(options, "Parity", "none");
> +		g_hash_table_insert(options, "StopBits", "1");
> +		g_hash_table_insert(options, "DataBits", "8");
> +		g_hash_table_insert(options, "XonXoff", "off");
> +		g_hash_table_insert(options, "Local", "on");
> +		g_hash_table_insert(options, "RtsCts", "on");
> +	}
> +
> +	channel = g_at_tty_open(device, options);
> +	if(options){
> +		g_hash_table_destroy(options);
> +	}
> +

This was already taken care of by the patch from Christopher that was 
applied today.

>   	if (channel == NULL)
>   		return NULL;
>
> diff --git a/plugins/udevng.c b/plugins/udevng.c
> index afb02ca..b7cdef6 100644
> --- a/plugins/udevng.c
> +++ b/plugins/udevng.c
> @@ -57,6 +57,20 @@ struct device_info {
>   	char *sysattr;
>   };
>
> +
> +gboolean udevng_match_modem_id(struct ofono_modem *modem, char *vendorid, char *productid)
> +{
> +	struct modem_info *modem_info = ofono_modem_get_modem_info(modem);
> +
> +	if(!modem_info){
> +		return FALSE;
> +	}
> +	if (g_strcmp0(modem_info->vendor, vendorid) || g_strcmp0(modem_info->model, productid)){
> +		return FALSE;
> +	}
> +	return TRUE;
> +}
> +
>   static gboolean setup_isi(struct modem_info *modem)
>   {
>   	const char *node = NULL;
> @@ -620,6 +634,17 @@ static gboolean setup_telit(struct modem_info *modem)
>   			else if (g_strcmp0(info->number, "03") == 0)
>   				aux = info->devnode;
>   		}
> +		/* This for Telit HE910 */
> +		else if (!g_strcmp0(modem->vendor, "1bc7")&&  !g_strcmp0(modem->model, "0021")){
> +			if (g_strcmp0(info->interface, "2/2/1") == 0) {
> +				if (g_strcmp0(info->number, "00") == 0)
> +					mdm = info->devnode;
> +				else if (g_strcmp0(info->number, "02") == 0)
> +					diag = info->devnode;
> +				else if (g_strcmp0(info->number, "06") == 0)
> +					aux = info->devnode;
> +			}
> +		}
>   	}
>
>   	if (aux == NULL || mdm == NULL)
> @@ -629,7 +654,8 @@ static gboolean setup_telit(struct modem_info *modem)
>
>   	ofono_modem_set_string(modem->modem, "Modem", mdm);
>   	ofono_modem_set_string(modem->modem, "Aux", aux);
> -	ofono_modem_set_string(modem->modem, "GPS", gps);
> +	//ofono_modem_set_string(modem->modem, "GPS", gps);
> +	ofono_modem_set_string(modem->modem, "Diag", diag);

Please do not leave dead code in your patch submissions.

>
>   	return TRUE;
>   }
> @@ -988,6 +1014,7 @@ static struct {
>   	{ "simcom",	"option",	"05c6", "9000"	},
>   	{ "telit",	"usbserial",	"1bc7"		},
>   	{ "telit",	"option",	"1bc7"		},
> +	{ "telit",      "cdc_acm",      "1bc7", "0021"  },
>   	{ "nokia",	"option",	"0421", "060e"	},
>   	{ "nokia",	"option",	"0421", "0623"	},
>   	{ "samsung",	"option",	"04e8", "6889"	},
> @@ -1113,6 +1140,7 @@ static gboolean create_modem(gpointer key, gpointer value, gpointer user_data)
>   	if (modem->modem == NULL)
>   		return TRUE;
>
> +	ofono_modem_set_modem_info(modem->modem, modem);
>   	for (i = 0; driver_list[i].name; i++) {
>   		if (g_str_equal(driver_list[i].name, modem->driver) == FALSE)
>   			continue;
> diff --git a/src/modem.c b/src/modem.c
> index 3c7c80a..207dce8 100644
> --- a/src/modem.c
> +++ b/src/modem.c
> @@ -87,6 +87,7 @@ struct ofono_modem {
>   	void			*driver_data;
>   	char			*driver_type;
>   	char			*name;
> +	void                    *modem_info;
>   };
>
>   struct ofono_devinfo {
> @@ -119,6 +120,16 @@ struct modem_property {
>   	void *value;
>   };
>
> +void ofono_modem_set_modem_info(struct ofono_modem *omodem, void *modem_info)
> +{
> +	omodem->modem_info = modem_info;
> +}
> +
> +void *ofono_modem_get_modem_info(struct ofono_modem *omodem)
> +{
> +	return omodem->modem_info;
> +}
> +
>   static const char *modem_type_to_string(enum ofono_modem_type type)
>   {
>   	switch (type) {

Regards,
-Denis

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/3] Support Telit cdc acm device
  2012-12-17 16:34   ` Denis Kenzior
@ 2012-12-17 18:39     ` Ming Li Wu
  0 siblings, 0 replies; 8+ messages in thread
From: Ming Li Wu @ 2012-12-17 18:39 UTC (permalink / raw)
  To: ofono

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

Hi Denis,
>> +    /* This is for Telit HE910. */
>> +    if(udevng_match_modem_id(modem, "1bc7", "0021")){
>> +        options = g_hash_table_new(g_str_hash, g_str_equal);
>> +
>> +        if (options == NULL)
>> +            return NULL;
>> +
>> +        g_hash_table_insert(options, "Baud", "115200");
>> +        g_hash_table_insert(options, "Parity", "none");
>> +        g_hash_table_insert(options, "StopBits", "1");
>> +        g_hash_table_insert(options, "DataBits", "8");
>> +        g_hash_table_insert(options, "XonXoff", "off");
>> +        g_hash_table_insert(options, "Local", "on");
>> +        g_hash_table_insert(options, "RtsCts", "on");
>> +    }
>> +
>> +    channel = g_at_tty_open(device, options);
>> +    if(options){
>> +        g_hash_table_destroy(options);
>> +    }
>> +
>
> This was already taken care of by the patch from Christopher that was 
> applied today.
>

I have two questions about settings of serial ports:

1. Are the following settings necessary?
         g_hash_table_insert(options, "XonXoff", "off");
         g_hash_table_insert(options, "Local", "on");
         g_hash_table_insert(options, "RtsCts", "on");

2.Should settings of modem port and aux port be different?


Thanks!

Mingli

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 2/3] Drop checking whether +CMER is supported.
  2012-12-17 16:22 ` [PATCH 2/3] Drop checking whether +CMER is supported Mingli Wu
  2012-12-17 16:27   ` Denis Kenzior
@ 2012-12-18 10:08   ` Christopher Vogl
  1 sibling, 0 replies; 8+ messages in thread
From: Christopher Vogl @ 2012-12-18 10:08 UTC (permalink / raw)
  To: ofono

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

On 17/12/12 17:22, Mingli Wu wrote:
> For Telit HE910,  ofono always got "\r\n+CME ERROR: 14\r\n"
> after issuing "AT+CMER=3,0,0,2\r" command. "CME ERROR: 14"
> means that SIM is busy. Now we igonre the result of the
> command "AT+CMER=3,0,0,2\r", and register network anyway.
> ---

I submitted some patches which will solve this problem.
You should not get CME ERROR: 14 anymore and hence
the netreg atom will not be removed.
There is not need to make changes in the network registration atom.
Telit supports +CMER but without waiting for the modem to be ready
the command will fail.

Regards,
Christopher

--
Scanned by MailScanner.


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-12-18 10:08 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-17 16:22 [PATCH 0/3] Telit HE910 Mingli Wu
2012-12-17 16:22 ` [PATCH 1/3] Support Telit cdc acm device Mingli Wu
2012-12-17 16:34   ` Denis Kenzior
2012-12-17 18:39     ` Ming Li Wu
2012-12-17 16:22 ` [PATCH 2/3] Drop checking whether +CMER is supported Mingli Wu
2012-12-17 16:27   ` Denis Kenzior
2012-12-18 10:08   ` Christopher Vogl
2012-12-17 16:22 ` [PATCH 3/3] Delay 10 seconds between CFUN=4 and CFUN=1 Mingli Wu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.