* [PATCH 0/4] huawei: minor cleanups
@ 2010-05-25 14:23 Kalle Valo
2010-05-25 14:23 ` [PATCH 1/4] huawei: use g_at_result_iter_skip_next() Kalle Valo
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Kalle Valo @ 2010-05-25 14:23 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 404 bytes --]
Some more love to Huawei, based on Dennis' comments.
---
Kalle Valo (4):
huawei: remove voicecall support
huawei: send a prefix with AT commands
huawei: properly notify sim state to ofono
huawei: use g_at_result_iter_skip_next()
plugins/huawei.c | 67 +++++++++++++++++++++++++++++-------------------------
1 files changed, 36 insertions(+), 31 deletions(-)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/4] huawei: use g_at_result_iter_skip_next()
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
@ 2010-05-25 14:23 ` Kalle Valo
2010-05-25 14:23 ` [PATCH 2/4] huawei: properly notify sim state to ofono Kalle Valo
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2010-05-25 14:23 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1222 bytes --]
---
plugins/huawei.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/plugins/huawei.c b/plugins/huawei.c
index a2492a7..1c44be1 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -91,7 +91,7 @@ static void sysinfo_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
struct huawei_data *data = ofono_modem_get_data(modem);
- gint srv_status, srv_domain, roam, sys_mode, sim_state;
+ gint sim_state;
GAtResultIter iter;
if (!ok)
@@ -102,16 +102,16 @@ static void sysinfo_cb(gboolean ok, GAtResult *result, gpointer user_data)
if (!g_at_result_iter_next(&iter, "^SYSINFO:"))
return;
- if (!g_at_result_iter_next_number(&iter, &srv_status))
+ if (!g_at_result_iter_skip_next(&iter))
return;
- if (!g_at_result_iter_next_number(&iter, &srv_domain))
+ if (!g_at_result_iter_skip_next(&iter))
return;
- if (!g_at_result_iter_next_number(&iter, &roam))
+ if (!g_at_result_iter_skip_next(&iter))
return;
- if (!g_at_result_iter_next_number(&iter, &sys_mode))
+ if (!g_at_result_iter_skip_next(&iter))
return;
if (!g_at_result_iter_next_number(&iter, &sim_state))
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/4] huawei: properly notify sim state to ofono
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
2010-05-25 14:23 ` [PATCH 1/4] huawei: use g_at_result_iter_skip_next() Kalle Valo
@ 2010-05-25 14:23 ` Kalle Valo
2010-05-25 14:23 ` [PATCH 3/4] huawei: send a prefix with AT commands Kalle Valo
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2010-05-25 14:23 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 4484 bytes --]
Instead of using ofono_modem_set_powered(), use ofono_sim_inserted_notify()
which is the proper way to notify about sim state changes.
Now the problem is that voicecall commands fail with my Huawei E1552:
ofonod[12395]: > AT+CRC=1\r
ofonod[12395]: src/sim.c:ofono_sim_add_state_watch() 0x1bf8e50
ofonod[12395]: src/sim.c:ofono_sim_add_state_watch() 0x1bf8e50
ofonod[12395]: < \r\n+CME ERROR: SIM busy\r\n
ofonod[12395]: > AT+CLIP=1\r
ofonod[12395]: < \r\n+CME ERROR: SIM busy\r\n
ofonod[12395]: > AT+COLP=1\r
ofonod[12395]: < \r\n+CME ERROR: SIM busy\r\n
ofonod[12395]: > AT+CCWA=1\r
ofonod[12395]: < \r\n+CME ERROR: SIM busy\r\n
ofonod[12395]: drivers/atmodem/voicecall.c:at_voicecall_initialized()
voicecall_init: registering to notifications
ofonod[12395]: src/sim.c:ofono_sim_add_state_watch() 0x1bf8e50
ofonod[12395]: > AT^SYSINFO\r
ofonod[12395]: < \r\n^SYSINFO:0,0,0,0,255,,0\r\n\r\nOK\r\n
ofonod[12395]: > AT+CGMI\r
ofonod[12395]: < \r\nhuawei\r\n\r\nOK\r\n
ofonod[12395]: EventChannel: < \r\n^STIN:0,0,0\r\n
ofonod[12395]: > AT+CLCC\r
ofonod[12395]: < \r\n+CME ERROR: SIM busy\r\n
But as I can't make voice calls with this modem anyway, I don't worry
about them right now.
---
plugins/huawei.c | 44 +++++++++++++++++++++++---------------------
1 files changed, 23 insertions(+), 21 deletions(-)
diff --git a/plugins/huawei.c b/plugins/huawei.c
index 1c44be1..962895a 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -50,6 +50,7 @@
struct huawei_data {
GAtChat *chat;
GAtChat *event;
+ struct ofono_sim *sim;
gint sim_state;
};
@@ -87,6 +88,17 @@ static void huawei_debug(const char *str, void *user_data)
ofono_info("%s%s", prefix, str);
}
+static void notify_sim_state(struct huawei_data *data, gint sim_state)
+{
+ 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;
+ }
+}
+
static void sysinfo_cb(gboolean ok, GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
@@ -117,10 +129,7 @@ static void sysinfo_cb(gboolean ok, GAtResult *result, gpointer user_data)
if (!g_at_result_iter_next_number(&iter, &sim_state))
return;
- if (data->sim_state == 0 && sim_state == 1) {
- ofono_modem_set_powered(modem, TRUE);
- data->sim_state = sim_state;
- }
+ notify_sim_state(data, sim_state);
}
static void simst_notify(GAtResult *result, gpointer user_data)
@@ -138,10 +147,7 @@ static void simst_notify(GAtResult *result, gpointer user_data)
if (!g_at_result_iter_next_number(&iter, &state))
return;
- if (data->sim_state == 0 && state == 1) {
- ofono_modem_set_powered(modem, TRUE);
- data->sim_state = state;
- }
+ notify_sim_state(data, state);
}
static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
@@ -151,12 +157,16 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
DBG("");
- if (!ok) {
- ofono_modem_set_powered(modem, FALSE);
+ ofono_modem_set_powered(modem, ok);
+
+ if (!ok)
return;
- }
- /* check sim state */
+ /* follow sim state */
+ g_at_chat_register(data->event, "^SIMST:", simst_notify,
+ FALSE, modem, NULL);
+
+ /* query current sim state */
g_at_chat_send(data->chat, "AT^SYSINFO", NULL, sysinfo_cb, modem, NULL);
}
@@ -221,10 +231,6 @@ static int huawei_enable(struct ofono_modem *modem)
data->sim_state = 0;
- /* follow sim state */
- g_at_chat_register(data->event, "^SIMST:", simst_notify,
- FALSE, modem, NULL);
-
g_at_chat_send(data->chat, "ATE0", NULL, NULL, NULL, NULL);
g_at_chat_send(data->chat, "AT+CFUN=1", NULL,
@@ -274,16 +280,12 @@ static int huawei_disable(struct ofono_modem *modem)
static void huawei_pre_sim(struct ofono_modem *modem)
{
struct huawei_data *data = ofono_modem_get_data(modem);
- struct ofono_sim *sim;
DBG("%p", modem);
ofono_devinfo_create(modem, 0, "atmodem", data->chat);
- sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
+ data->sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
ofono_voicecall_create(modem, 0, "atmodem", data->chat);
-
- if (sim)
- ofono_sim_inserted_notify(sim, TRUE);
}
static void cgreg_notify(GAtResult *result, gpointer user_data)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/4] huawei: send a prefix with AT commands
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
2010-05-25 14:23 ` [PATCH 1/4] huawei: use g_at_result_iter_skip_next() Kalle Valo
2010-05-25 14:23 ` [PATCH 2/4] huawei: properly notify sim state to ofono Kalle Valo
@ 2010-05-25 14:23 ` Kalle Valo
2010-05-25 14:23 ` [PATCH 4/4] huawei: remove voicecall support Kalle Valo
2010-05-25 14:52 ` [PATCH 0/4] huawei: minor cleanups Denis Kenzior
4 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2010-05-25 14:23 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1619 bytes --]
---
plugins/huawei.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/plugins/huawei.c b/plugins/huawei.c
index 962895a..d7697b9 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -47,6 +47,9 @@
#include <drivers/atmodem/atutil.h>
#include <drivers/atmodem/vendor.h>
+static const char *none_prefix[] = { NULL };
+static const char *sysinfo_prefix[] = { "^SYSINFO:", NULL };
+
struct huawei_data {
GAtChat *chat;
GAtChat *event;
@@ -167,7 +170,8 @@ static void cfun_enable(gboolean ok, GAtResult *result, gpointer user_data)
FALSE, modem, NULL);
/* query current sim state */
- g_at_chat_send(data->chat, "AT^SYSINFO", NULL, sysinfo_cb, modem, NULL);
+ g_at_chat_send(data->chat, "AT^SYSINFO", sysinfo_prefix,
+ sysinfo_cb, modem, NULL);
}
static GAtChat *create_port(const char *device)
@@ -231,9 +235,9 @@ static int huawei_enable(struct ofono_modem *modem)
data->sim_state = 0;
- g_at_chat_send(data->chat, "ATE0", NULL, NULL, NULL, NULL);
+ g_at_chat_send(data->chat, "ATE0", none_prefix, NULL, NULL, NULL);
- g_at_chat_send(data->chat, "AT+CFUN=1", NULL,
+ g_at_chat_send(data->chat, "AT+CFUN=1", none_prefix,
cfun_enable, modem, NULL);
return -EINPROGRESS;
@@ -271,7 +275,7 @@ static int huawei_disable(struct ofono_modem *modem)
g_at_chat_cancel_all(data->chat);
g_at_chat_unregister_all(data->chat);
- g_at_chat_send(data->chat, "AT+CFUN=0", NULL,
+ g_at_chat_send(data->chat, "AT+CFUN=0", none_prefix,
cfun_disable, modem, NULL);
return -EINPROGRESS;
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/4] huawei: remove voicecall support
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
` (2 preceding siblings ...)
2010-05-25 14:23 ` [PATCH 3/4] huawei: send a prefix with AT commands Kalle Valo
@ 2010-05-25 14:23 ` Kalle Valo
2010-05-25 14:52 ` [PATCH 0/4] huawei: minor cleanups Denis Kenzior
4 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2010-05-25 14:23 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 622 bytes --]
These modems don't support voicecall anyway. Recommended by Denis.
---
plugins/huawei.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/plugins/huawei.c b/plugins/huawei.c
index d7697b9..1b7a185 100644
--- a/plugins/huawei.c
+++ b/plugins/huawei.c
@@ -289,7 +289,6 @@ static void huawei_pre_sim(struct ofono_modem *modem)
ofono_devinfo_create(modem, 0, "atmodem", data->chat);
data->sim = ofono_sim_create(modem, 0, "atmodem", data->chat);
- ofono_voicecall_create(modem, 0, "atmodem", data->chat);
}
static void cgreg_notify(GAtResult *result, gpointer user_data)
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 0/4] huawei: minor cleanups
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
` (3 preceding siblings ...)
2010-05-25 14:23 ` [PATCH 4/4] huawei: remove voicecall support Kalle Valo
@ 2010-05-25 14:52 ` Denis Kenzior
4 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2010-05-25 14:52 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 142 bytes --]
Hi Kalle,
> Some more love to Huawei, based on Dennis' comments.
>
> ---
All four have been pushed now, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-05-25 14:52 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-25 14:23 [PATCH 0/4] huawei: minor cleanups Kalle Valo
2010-05-25 14:23 ` [PATCH 1/4] huawei: use g_at_result_iter_skip_next() Kalle Valo
2010-05-25 14:23 ` [PATCH 2/4] huawei: properly notify sim state to ofono Kalle Valo
2010-05-25 14:23 ` [PATCH 3/4] huawei: send a prefix with AT commands Kalle Valo
2010-05-25 14:23 ` [PATCH 4/4] huawei: remove voicecall support Kalle Valo
2010-05-25 14:52 ` [PATCH 0/4] huawei: minor cleanups Denis Kenzior
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.