All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] Make fetch command function as external
@ 2010-07-13 10:29 Yang Gu
  2010-07-13 10:30 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Yang Gu @ 2010-07-13 10:29 UTC (permalink / raw)
  To: ofono

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

---
 Makefile.am                |    1 +
 drivers/atmodem/sim-poll.c |   55 +------------------------------------------
 drivers/atmodem/stk.c      |   51 ++++++++++++++++++++++++++++++++++++++++
 drivers/atmodem/stk.h      |   22 +++++++++++++++++
 4 files changed, 76 insertions(+), 53 deletions(-)
 create mode 100644 drivers/atmodem/stk.h

diff --git a/Makefile.am b/Makefile.am
index 24aa886..e256841 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -143,6 +143,7 @@ builtin_sources += $(gatchat_sources) \
 				drivers/atmodem/network-registration.c \
 				drivers/atmodem/sim.c \
 				drivers/atmodem/stk.c \
+				drivers/atmodem/stk.h \
 				drivers/atmodem/sim-poll.c \
 				drivers/atmodem/sim-poll.h \
 				drivers/atmodem/ussd.c \
diff --git a/drivers/atmodem/sim-poll.c b/drivers/atmodem/sim-poll.c
index f1a83e3..3f1a355 100644
--- a/drivers/atmodem/sim-poll.c
+++ b/drivers/atmodem/sim-poll.c
@@ -39,6 +39,7 @@
 
 #include "atmodem.h"
 #include "sim-poll.h"
+#include "stk.h"
 
 struct sim_poll_data {
 	GAtChat *chat;
@@ -58,58 +59,6 @@ struct sim_poll_data {
 static const char *csim_prefix[] = { "+CSIM:", NULL };
 
 static gboolean sim_status_poll(gpointer user_data);
-static void sim_fetch_command(struct sim_poll_data *spd, int length);
-
-static void at_csim_fetch_cb(gboolean ok, GAtResult *result,
-		gpointer user_data)
-{
-	struct sim_poll_data *spd = user_data;
-	GAtResultIter iter;
-	const guint8 *response;
-	gint rlen, len;
-
-	if (!ok)
-		return;
-
-	g_at_result_iter_init(&iter, result);
-
-	if (!g_at_result_iter_next(&iter, "+CSIM:"))
-		return;
-
-	if (!g_at_result_iter_next_number(&iter, &rlen))
-		return;
-
-	if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
-		return;
-
-	if (rlen != len * 2 || len < 2)
-		return;
-
-	/* Check that SW1 indicates success */
-	if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
-		return;
-
-	if (response[len - 2] == 0x90 && response[len - 1] != 0)
-		return;
-
-	DBG("csim_fetch_cb: %i", len);
-
-	ofono_stk_proactive_command_notify(spd->stk, len - 2, response);
-
-	/* Can this happen? */
-	if (response[len - 2] == 0x91)
-		sim_fetch_command(spd, response[len - 1]);
-}
-
-static void sim_fetch_command(struct sim_poll_data *spd, int length)
-{
-	char buf[64];
-
-	snprintf(buf, sizeof(buf), "AT+CSIM=10,A0120000%02hhX", length);
-
-	g_at_chat_send(spd->chat, buf, csim_prefix,
-			at_csim_fetch_cb, spd, NULL);
-}
 
 static void sim_status_poll_schedule(struct sim_poll_data *spd)
 {
@@ -196,7 +145,7 @@ static void at_csim_status_cb(gboolean ok, GAtResult *result,
 		return;
 
 	/* We have a proactive command pending, FETCH it */
-	sim_fetch_command(spd, response[len - 1]);
+	at_sim_fetch_command(spd->stk, response[len - 1]);
 }
 
 static gboolean sim_status_poll(gpointer user_data)
diff --git a/drivers/atmodem/stk.c b/drivers/atmodem/stk.c
index aede668..1283cca 100644
--- a/drivers/atmodem/stk.c
+++ b/drivers/atmodem/stk.c
@@ -38,6 +38,7 @@
 #include "gatresult.h"
 
 #include "atmodem.h"
+#include "stk.h"
 
 struct stk_data {
 	GAtChat *chat;
@@ -45,6 +46,56 @@ struct stk_data {
 
 static const char *csim_prefix[] = { "+CSIM:", NULL };
 
+static void csim_fetch_cb(gboolean ok, GAtResult *result,
+		gpointer user_data)
+{
+	struct ofono_stk *stk = user_data;
+	GAtResultIter iter;
+	const guint8 *response;
+	gint rlen, len;
+
+	if (!ok)
+		return;
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "+CSIM:"))
+		return;
+
+	if (!g_at_result_iter_next_number(&iter, &rlen))
+		return;
+
+	if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
+		return;
+
+	if (rlen != len * 2 || len < 2)
+		return;
+
+	/* Check that SW1 indicates success */
+	if (response[len - 2] != 0x90 && response[len - 2] != 0x91)
+		return;
+
+	if (response[len - 2] == 0x90 && response[len - 1] != 0)
+		return;
+
+	DBG("csim_fetch_cb: %i", len);
+
+	ofono_stk_proactive_command_notify(stk, len - 2, response);
+
+	/* Can this happen? */
+	if (response[len - 2] == 0x91)
+		at_sim_fetch_command(stk, response[len - 1]);
+}
+
+void at_sim_fetch_command(struct ofono_stk *stk, int length)
+{
+	char buf[64];
+	struct stk_data *sd = ofono_stk_get_data(stk);
+
+	snprintf(buf, sizeof(buf), "AT+CSIM=10,A0120000%02hhX", length);
+	g_at_chat_send(sd->chat, buf, csim_prefix, csim_fetch_cb, stk, NULL);
+}
+
 static void at_csim_envelope_cb(gboolean ok, GAtResult *result,
 				gpointer user_data)
 {
diff --git a/drivers/atmodem/stk.h b/drivers/atmodem/stk.h
new file mode 100644
index 0000000..265ac2e
--- /dev/null
+++ b/drivers/atmodem/stk.h
@@ -0,0 +1,22 @@
+/*
+ *
+ *  oFono - Open Source Telephony
+ *
+ *  Copyright (C) 2008-2010  Intel Corporation. All rights reserved.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *
+ */
+
+void at_sim_fetch_command(struct ofono_stk *stk, int length);
-- 
1.7.0.4


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

* [PATCH 2/3] Support phonesim proactive command notification
  2010-07-13 10:29 [PATCH 1/3] Make fetch command function as external Yang Gu
@ 2010-07-13 10:30 ` Yang Gu
  2010-07-13 14:56   ` Denis Kenzior
  2010-07-13 10:30 ` [PATCH 3/3] Use specific vendor for phonesim stk Yang Gu
  2010-07-13 14:55 ` [PATCH 1/3] Make fetch command function as external Denis Kenzior
  2 siblings, 1 reply; 8+ messages in thread
From: Yang Gu @ 2010-07-13 10:30 UTC (permalink / raw)
  To: ofono

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

---
 drivers/atmodem/stk.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/drivers/atmodem/stk.c b/drivers/atmodem/stk.c
index 1283cca..3850f15 100644
--- a/drivers/atmodem/stk.c
+++ b/drivers/atmodem/stk.c
@@ -39,9 +39,11 @@
 
 #include "atmodem.h"
 #include "stk.h"
+#include "vendor.h"
 
 struct stk_data {
 	GAtChat *chat;
+	unsigned int vendor;
 };
 
 static const char *csim_prefix[] = { "+CSIM:", NULL };
@@ -262,10 +264,32 @@ error:
 	CALLBACK_WITH_FAILURE(cb, data);
 }
 
+static void phonesim_tcmd_notify(GAtResult *result, gpointer user_data)
+{
+	struct ofono_stk *stk = user_data;
+	struct stk_data *data = ofono_stk_get_data(stk);
+	GAtResultIter iter;
+	int length;
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "*TCMD:"))
+		return;
+
+	if (!g_at_result_iter_next_number(&iter, &length))
+		return;
+
+	at_sim_fetch_command(data->chat, stk, length);
+}
+
 static gboolean at_stk_register(gpointer user)
 {
 	struct ofono_stk *stk = user;
+	struct stk_data *sd = ofono_stk_get_data(stk);
 
+	if (sd->vendor == OFONO_VENDOR_PHONESIM)
+		g_at_chat_register(sd->chat, "*TCMD", phonesim_tcmd_notify,
+							FALSE, stk, NULL);
 	ofono_stk_register(stk);
 
 	return FALSE;
@@ -278,6 +302,7 @@ static int at_stk_probe(struct ofono_stk *stk, unsigned int vendor, void *data)
 
 	sd = g_new0(struct stk_data, 1);
 	sd->chat = chat;
+	sd->vendor = vendor;
 
 	ofono_stk_set_data(stk, sd);
 	g_idle_add(at_stk_register, stk);
-- 
1.7.0.4


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

* [PATCH 3/3] Use specific vendor for phonesim stk
  2010-07-13 10:29 [PATCH 1/3] Make fetch command function as external Yang Gu
  2010-07-13 10:30 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
@ 2010-07-13 10:30 ` Yang Gu
  2010-07-13 14:56   ` Denis Kenzior
  2010-07-13 14:55 ` [PATCH 1/3] Make fetch command function as external Denis Kenzior
  2 siblings, 1 reply; 8+ messages in thread
From: Yang Gu @ 2010-07-13 10:30 UTC (permalink / raw)
  To: ofono

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

---
 plugins/phonesim.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/plugins/phonesim.c b/plugins/phonesim.c
index d0cd7f3..9c5b2cb 100644
--- a/plugins/phonesim.c
+++ b/plugins/phonesim.c
@@ -289,7 +289,7 @@ static void phonesim_pre_sim(struct ofono_modem *modem)
 	else
 		ofono_voicecall_create(modem, 0, "atmodem", data->chat);
 
-	ofono_stk_create(modem, 0, "atmodem", data->chat);
+	ofono_stk_create(modem, OFONO_VENDOR_PHONESIM, "atmodem", data->chat);
 
 	if (sim)
 		ofono_sim_inserted_notify(sim, TRUE);
-- 
1.7.0.4


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

* Re: [PATCH 1/3] Make fetch command function as external
  2010-07-13 10:29 [PATCH 1/3] Make fetch command function as external Yang Gu
  2010-07-13 10:30 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
  2010-07-13 10:30 ` [PATCH 3/3] Use specific vendor for phonesim stk Yang Gu
@ 2010-07-13 14:55 ` Denis Kenzior
  2 siblings, 0 replies; 8+ messages in thread
From: Denis Kenzior @ 2010-07-13 14:55 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

On 07/13/2010 05:29 AM, Yang Gu wrote:
> ---
>  Makefile.am                |    1 +
>  drivers/atmodem/sim-poll.c |   55 +------------------------------------------
>  drivers/atmodem/stk.c      |   51 ++++++++++++++++++++++++++++++++++++++++
>  drivers/atmodem/stk.h      |   22 +++++++++++++++++
>  4 files changed, 76 insertions(+), 53 deletions(-)
>  create mode 100644 drivers/atmodem/stk.h

Applied, thanks.

Regards,
-Denis

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

* Re: [PATCH 2/3] Support phonesim proactive command notification
  2010-07-13 10:30 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
@ 2010-07-13 14:56   ` Denis Kenzior
  0 siblings, 0 replies; 8+ messages in thread
From: Denis Kenzior @ 2010-07-13 14:56 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

> +static void phonesim_tcmd_notify(GAtResult *result, gpointer user_data)
> +{
> +	struct ofono_stk *stk = user_data;
> +	struct stk_data *data = ofono_stk_get_data(stk);
> +	GAtResultIter iter;
> +	int length;
> +
> +	g_at_result_iter_init(&iter, result);
> +
> +	if (!g_at_result_iter_next(&iter, "*TCMD:"))
> +		return;
> +
> +	if (!g_at_result_iter_next_number(&iter, &length))
> +		return;
> +
> +	at_sim_fetch_command(data->chat, stk, length);
> +}
> +

drivers/atmodem/stk.c: In function ‘phonesim_tcmd_notify’:
drivers/atmodem/stk.c:282: error: passing argument 1 of
‘at_sim_fetch_command’ from incompatible pointer type
drivers/atmodem/stk.c:92: note: expected ‘struct ofono_stk *’ but
argument is of type ‘struct GAtChat *’
drivers/atmodem/stk.c:282: error: passing argument 2 of
‘at_sim_fetch_command’ makes integer from pointer without a cast
drivers/atmodem/stk.c:92: note: expected ‘int’ but argument is of type
‘struct ofono_stk *’
drivers/atmodem/stk.c:282: error: too many arguments to function
‘at_sim_fetch_command’

I fixed this up for you since it was trivial, however please at least
compile-check your patches ;)

Regards,
-Denis

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

* Re: [PATCH 3/3] Use specific vendor for phonesim stk
  2010-07-13 10:30 ` [PATCH 3/3] Use specific vendor for phonesim stk Yang Gu
@ 2010-07-13 14:56   ` Denis Kenzior
  0 siblings, 0 replies; 8+ messages in thread
From: Denis Kenzior @ 2010-07-13 14:56 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

On 07/13/2010 05:30 AM, Yang Gu wrote:
> ---
>  plugins/phonesim.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/plugins/phonesim.c b/plugins/phonesim.c
> index d0cd7f3..9c5b2cb 100644
> --- a/plugins/phonesim.c
> +++ b/plugins/phonesim.c
> @@ -289,7 +289,7 @@ static void phonesim_pre_sim(struct ofono_modem *modem)
>  	else
>  		ofono_voicecall_create(modem, 0, "atmodem", data->chat);
>  
> -	ofono_stk_create(modem, 0, "atmodem", data->chat);
> +	ofono_stk_create(modem, OFONO_VENDOR_PHONESIM, "atmodem", data->chat);
>  
>  	if (sim)
>  		ofono_sim_inserted_notify(sim, TRUE);

Applied, thanks.

Regards,
-Denis

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

* Re: [PATCH 2/3] Support phonesim proactive command notification
  2010-07-09 14:52 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
@ 2010-07-09 17:18   ` Denis Kenzior
  0 siblings, 0 replies; 8+ messages in thread
From: Denis Kenzior @ 2010-07-09 17:18 UTC (permalink / raw)
  To: ofono

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

Hi Yang,

On 07/09/2010 09:52 AM, Yang Gu wrote:
> ---
>  drivers/atmodem/stk.c |   25 +++++++++++++++++++++++++
>  plugins/phonesim.c    |    2 +-
>  2 files changed, 26 insertions(+), 1 deletions(-)

If possible, please break up your patches when crossing a directory
boundary.  E.g. a patch for drivers/atmodem and a patch for
plugins/phonesim.

Thanks,
-Denis

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

* [PATCH 2/3] Support phonesim proactive command notification
  2010-07-09 14:52 Yang Gu
@ 2010-07-09 14:52 ` Yang Gu
  2010-07-09 17:18   ` Denis Kenzior
  0 siblings, 1 reply; 8+ messages in thread
From: Yang Gu @ 2010-07-09 14:52 UTC (permalink / raw)
  To: ofono

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

---
 drivers/atmodem/stk.c |   25 +++++++++++++++++++++++++
 plugins/phonesim.c    |    2 +-
 2 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/drivers/atmodem/stk.c b/drivers/atmodem/stk.c
index 6058d69..91b9195 100644
--- a/drivers/atmodem/stk.c
+++ b/drivers/atmodem/stk.c
@@ -39,9 +39,11 @@
 
 #include "atmodem.h"
 #include "stk.h"
+#include "vendor.h"
 
 struct stk_data {
 	GAtChat *chat;
+	unsigned int vendor;
 };
 
 static const char *csim_prefix[] = { "+CSIM:", NULL };
@@ -264,10 +266,32 @@ error:
 	CALLBACK_WITH_FAILURE(cb, data);
 }
 
+static void phonesim_tcmd_notify(GAtResult *result, gpointer user_data)
+{
+	struct ofono_stk *stk = user_data;
+	struct stk_data *data = ofono_stk_get_data(stk);
+	GAtResultIter iter;
+	int length;
+
+	g_at_result_iter_init(&iter, result);
+
+	if (!g_at_result_iter_next(&iter, "*TCMD:"))
+		return;
+
+	if (!g_at_result_iter_next_number(&iter, &length))
+		return;
+
+	at_sim_fetch_command(data->chat, stk, length);
+}
+
 static gboolean at_stk_register(gpointer user)
 {
 	struct ofono_stk *stk = user;
+	struct stk_data *sd = ofono_stk_get_data(stk);
 
+	if (sd->vendor == OFONO_VENDOR_PHONESIM)
+		g_at_chat_register(sd->chat, "*TCMD", phonesim_tcmd_notify,
+							FALSE, stk, NULL);
 	ofono_stk_register(stk);
 
 	return FALSE;
@@ -280,6 +304,7 @@ static int at_stk_probe(struct ofono_stk *stk, unsigned int vendor, void *data)
 
 	sd = g_new0(struct stk_data, 1);
 	sd->chat = chat;
+	sd->vendor = vendor;
 
 	ofono_stk_set_data(stk, sd);
 	g_idle_add(at_stk_register, stk);
diff --git a/plugins/phonesim.c b/plugins/phonesim.c
index d0cd7f3..9c5b2cb 100644
--- a/plugins/phonesim.c
+++ b/plugins/phonesim.c
@@ -289,7 +289,7 @@ static void phonesim_pre_sim(struct ofono_modem *modem)
 	else
 		ofono_voicecall_create(modem, 0, "atmodem", data->chat);
 
-	ofono_stk_create(modem, 0, "atmodem", data->chat);
+	ofono_stk_create(modem, OFONO_VENDOR_PHONESIM, "atmodem", data->chat);
 
 	if (sim)
 		ofono_sim_inserted_notify(sim, TRUE);
-- 
1.7.0.4


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

end of thread, other threads:[~2010-07-13 14:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-13 10:29 [PATCH 1/3] Make fetch command function as external Yang Gu
2010-07-13 10:30 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
2010-07-13 14:56   ` Denis Kenzior
2010-07-13 10:30 ` [PATCH 3/3] Use specific vendor for phonesim stk Yang Gu
2010-07-13 14:56   ` Denis Kenzior
2010-07-13 14:55 ` [PATCH 1/3] Make fetch command function as external Denis Kenzior
  -- strict thread matches above, loose matches on Subject: below --
2010-07-09 14:52 Yang Gu
2010-07-09 14:52 ` [PATCH 2/3] Support phonesim proactive command notification Yang Gu
2010-07-09 17:18   ` 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.