summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-08-11 04:14:30 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-08-14 22:56:45 -0500
commit7893cc3ef24782a7f49e9366dc30f74ea6edd2f0 (patch)
tree99abc09148ff7f141af0d22bcb92e3f55a9c4bb8 /drivers
parentd4687e9529429e621eebc4f00193f1572161b8c9 (diff)
downloadofono-7893cc3ef24782a7f49e9366dc30f74ea6edd2f0.tar.bz2
stk: Use phonesim vendor for modem-handled cmds
Diffstat (limited to 'drivers')
-rw-r--r--drivers/atmodem/stk.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/atmodem/stk.c b/drivers/atmodem/stk.c
index 879c0930..c448e54a 100644
--- a/drivers/atmodem/stk.c
+++ b/drivers/atmodem/stk.c
@@ -152,6 +152,24 @@ static void phonesim_cusatp_notify(GAtResult *result, gpointer user_data)
ofono_stk_proactive_command_notify(stk, len, response);
}
+static void phonesim_hcmd_notify(GAtResult *result, gpointer user_data)
+{
+ struct ofono_stk *stk = user_data;
+ GAtResultIter iter;
+ const guint8 *response;
+ gint len;
+
+ g_at_result_iter_init(&iter, result);
+
+ if (!g_at_result_iter_next(&iter, "*HCMD:"))
+ return;
+
+ if (!g_at_result_iter_next_hexstring(&iter, &response, &len))
+ return;
+
+ ofono_stk_proactive_command_handled_notify(stk, len, response);
+}
+
static void phonesim_cusatend_notify(GAtResult *result, gpointer user_data)
{
struct ofono_stk *stk = user_data;
@@ -170,6 +188,10 @@ static gboolean at_stk_register(gpointer user)
g_at_chat_register(sd->chat, "+CUSATEND", phonesim_cusatend_notify,
FALSE, stk, NULL);
+ if (sd->vendor == OFONO_VENDOR_PHONESIM)
+ g_at_chat_register(sd->chat, "*HCMD:", phonesim_hcmd_notify,
+ FALSE, stk, NULL);
+
ofono_stk_register(stk);
return FALSE;