diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-04-11 17:36:34 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-04-11 17:36:34 +0200 |
commit | 0b2014df05529bb586b2bfbafbacd874295485de (patch) | |
tree | ae49efb528b6f0180eaf1f9bcda5313e32c9b27d /gatchat/test-server.c | |
parent | 46e77907b37d18a78b5f76b8e0b8f2d76331444f (diff) | |
download | ofono-0b2014df05529bb586b2bfbafbacd874295485de.tar.bz2 |
Implement full CFUN handling for AT server
Diffstat (limited to 'gatchat/test-server.c')
-rw-r--r-- | gatchat/test-server.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gatchat/test-server.c b/gatchat/test-server.c index f170d887..8605f7da 100644 --- a/gatchat/test-server.c +++ b/gatchat/test-server.c @@ -49,6 +49,8 @@ #define DEFAULT_TCP_PORT 12346 #define DEFAULT_SOCK_PATH "./server_sock" +static int modem_mode = 0; + struct sock_server{ int server_sock; }; @@ -159,12 +161,18 @@ static gboolean send_ok(gpointer user) static void cfun_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user) { GAtServer *server = user; + char buf[12]; switch (type) { case G_AT_SERVER_REQUEST_TYPE_SUPPORT: g_at_server_send_info(server, "+CFUN: (0-1)", TRUE); g_at_server_send_final(server, G_AT_SERVER_RESULT_OK); break; + case G_AT_SERVER_REQUEST_TYPE_QUERY: + snprintf(buf, sizeof(buf), "+CFUN: %d", modem_mode); + g_at_server_send_info(server, buf, TRUE); + g_at_server_send_final(server, G_AT_SERVER_RESULT_OK); + break; case G_AT_SERVER_REQUEST_TYPE_SET: { GAtResultIter iter; @@ -179,6 +187,12 @@ static void cfun_cb(GAtServerRequestType type, GAtResult *cmd, gpointer user) if (mode != 0 && mode != 1) goto error; + if (modem_mode == mode) { + g_at_server_send_final(server, G_AT_SERVER_RESULT_OK); + break; + } + + modem_mode = mode; g_timeout_add_seconds(3, send_ok, server); break; } |