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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ 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; 6+ 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] 6+ messages in thread

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

Thread overview: 6+ 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

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.