---
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
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono