summaryrefslogtreecommitdiffstats
path: root/tools/stktest.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2012-09-28 10:37:07 -0500
committerDenis Kenzior <denkenz@gmail.com>2012-10-03 09:10:42 -0500
commit42a318892aaf21a0e9dc86d194553270e1a70492 (patch)
tree2b5a9cba62f88aa1fd87ac88f1e04cc7561a6117 /tools/stktest.c
parent10b7b7f4f523c8df525fff33a6996df5d6d21f50 (diff)
downloadofono-42a318892aaf21a0e9dc86d194553270e1a70492.tar.bz2
stktest: implement CUSATT handler
Diffstat (limited to 'tools/stktest.c')
-rw-r--r--tools/stktest.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/tools/stktest.c b/tools/stktest.c
index c1a05610..32fa4c64 100644
--- a/tools/stktest.c
+++ b/tools/stktest.c
@@ -253,6 +253,42 @@ error:
g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
}
+static void cusatt_cb(GAtServer *server, GAtServerRequestType type,
+ GAtResult *cmd, gpointer user)
+{
+ char buf[12];
+
+ switch (type) {
+ case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+ break;
+ case G_AT_SERVER_REQUEST_TYPE_QUERY:
+ g_at_server_send_ext_final(server, "+CME ERROR: 4");
+ break;
+ case G_AT_SERVER_REQUEST_TYPE_SET:
+ {
+ GAtResultIter iter;
+ const unsigned char *pdu;
+ int len;
+
+ g_at_result_iter_init(&iter, cmd);
+ g_at_result_iter_next(&iter, "");
+
+ if (g_at_result_iter_next_hexstring(&iter, &pdu, &len) == FALSE)
+ goto error;
+
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+ break;
+ }
+ default:
+ goto error;
+ };
+
+ return;
+
+error:
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+}
static void listen_again(gpointer user_data)
{
if (create_tcp() == TRUE)
@@ -271,6 +307,7 @@ static void setup_emulator(GAtServer *server)
g_at_server_register(server, "+CGMR", cgmr_cb, NULL, NULL);
g_at_server_register(server, "+CGSN", cgsn_cb, NULL, NULL);
g_at_server_register(server, "+CFUN", cfun_cb, NULL, NULL);
+ g_at_server_register(server, "+CUSATT", cusatt_cb, NULL, NULL);
g_at_server_set_disconnect_function(server, listen_again, NULL);
}