summaryrefslogtreecommitdiffstats
path: root/gatchat/test-server.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-03-30 15:14:42 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-03-30 15:14:42 -0500
commita77037c0990edf6a2b8bb33a6188a7add027d283 (patch)
tree4bbcfa7a123446519bd27048b691ea9f8f36e3e1 /gatchat/test-server.c
parent6b33c5c4e664c42c5dcf7b940110592dd8f87858 (diff)
downloadofono-a77037c0990edf6a2b8bb33a6188a7add027d283.tar.bz2
Add test implementation for CFUN
Diffstat (limited to 'gatchat/test-server.c')
-rw-r--r--gatchat/test-server.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/gatchat/test-server.c b/gatchat/test-server.c
index 267cf9b0..3b28b09f 100644
--- a/gatchat/test-server.c
+++ b/gatchat/test-server.c
@@ -145,17 +145,49 @@ static void cgsn_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
};
}
+static gboolean send_ok(gpointer user)
+{
+ GAtServer *server = user;
+
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+
+ return FALSE;
+}
+
static void cfun_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
{
GAtServer *server = user;
switch (type) {
case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+ g_at_server_send_info(server, "+CFUN: (0-1)");
g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
break;
+ case G_AT_SERVER_REQUEST_TYPE_SET:
+ {
+ GAtResultIter iter;
+ int mode;
+
+ g_at_result_iter_init(&iter, cmd);
+ g_at_result_iter_next(&iter, "+CFUN=");
+
+ if (g_at_result_iter_next_number(&iter, &mode) == FALSE)
+ goto error;
+
+ if (mode != 0 && mode != 1)
+ goto error;
+
+ g_timeout_add_seconds(3, send_ok, server);
+ break;
+ }
default:
- g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+ goto error;
};
+
+ return;
+
+error:
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
}
static void add_handler(GAtServer *server)