summaryrefslogtreecommitdiffstats
path: root/gatchat/test-server.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-04-11 18:10:50 +0200
committerMarcel Holtmann <marcel@holtmann.org>2010-04-11 18:10:50 +0200
commit0cafc1646c6d7af52791e8a818702297266d2aad (patch)
tree3b741e971754af5c15169849d98d1fcd9a9da170 /gatchat/test-server.c
parent2dab6bc3a64a85391126ef0d1c8d9f21f30f08d0 (diff)
downloadofono-0cafc1646c6d7af52791e8a818702297266d2aad.tar.bz2
Add really simple COPS support to AT command server
Diffstat (limited to 'gatchat/test-server.c')
-rw-r--r--gatchat/test-server.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/gatchat/test-server.c b/gatchat/test-server.c
index 8605f7da..16f3e238 100644
--- a/gatchat/test-server.c
+++ b/gatchat/test-server.c
@@ -227,6 +227,49 @@ static void cpin_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
}
}
+static void cops_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
+{
+ GAtServer *server = user;
+
+ if (modem_mode == 0) {
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+ return;
+ }
+
+ switch (type) {
+ case G_AT_SERVER_REQUEST_TYPE_SUPPORT:
+ g_timeout_add_seconds(3, send_ok, server);
+ break;
+ case G_AT_SERVER_REQUEST_TYPE_QUERY:
+ g_at_server_send_info(server, "+COPS: 0", TRUE);
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+ break;
+ case G_AT_SERVER_REQUEST_TYPE_SET:
+ {
+ GAtServerResult result;
+ GAtResultIter iter;
+ int mode;
+
+ g_at_result_iter_init(&iter, cmd);
+ g_at_result_iter_next(&iter, "+COPS=");
+
+ if (g_at_result_iter_next_number(&iter, &mode) == TRUE) {
+ if (mode == 0)
+ result = G_AT_SERVER_RESULT_OK;
+ else
+ result = G_AT_SERVER_RESULT_ERROR;
+ } else
+ result = G_AT_SERVER_RESULT_ERROR;
+
+ g_at_server_send_final(server, result);
+ break;
+ }
+ default:
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+ break;
+ }
+}
+
static void cimi_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user)
{
GAtServer *server = user;
@@ -407,6 +450,7 @@ static void add_handler(GAtServer *server)
g_at_server_register(server, "+CGSN", cgsn_cb, server, NULL);
g_at_server_register(server, "+CFUN", cfun_cb, server, NULL);
g_at_server_register(server, "+CPIN", cpin_cb, server, NULL);
+ g_at_server_register(server, "+COPS", cops_cb, server, NULL);
g_at_server_register(server, "+CIMI", cimi_cb, server, NULL);
g_at_server_register(server, "+CSMS", csms_cb, server, NULL);
g_at_server_register(server, "+CMGF", cmgf_cb, server, NULL);