summaryrefslogtreecommitdiffstats
path: root/gatchat
diff options
context:
space:
mode:
authorOlivier Guiter <olivier.guiter@linux.intel.com>2011-03-23 17:31:24 +0100
committerDenis Kenzior <denkenz@gmail.com>2011-03-23 15:01:36 -0500
commitcc17e8fd8cf04e7282795c8d0434b9d8457b98f2 (patch)
treedea9801ddaa61408d69bf815cd21cc11e50574db /gatchat
parent351c701aaca34831c3569aa2bfe1b952be5fa74a (diff)
downloadofono-cc17e8fd8cf04e7282795c8d0434b9d8457b98f2.tar.bz2
gatserver: add ATZ command
Diffstat (limited to 'gatchat')
-rw-r--r--gatchat/gatserver.c53
1 files changed, 35 insertions, 18 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c
index 4a211adc..57cc58ef 100644
--- a/gatchat/gatserver.c
+++ b/gatchat/gatserver.c
@@ -279,6 +279,24 @@ static gboolean get_result_value(GAtServer *server, GAtResult *result,
return TRUE;
}
+static void v250_settings_create(struct v250_settings *v250)
+{
+ v250->s0 = 0;
+ v250->s3 = '\r';
+ v250->s4 = '\n';
+ v250->s5 = '\b';
+ v250->s6 = 2;
+ v250->s7 = 50;
+ v250->s8 = 2;
+ v250->s10 = 2;
+ v250->echo = TRUE;
+ v250->quiet = FALSE;
+ v250->is_v1 = TRUE;
+ v250->res_format = 0;
+ v250->c109 = 1;
+ v250->c108 = 0;
+}
+
static void s_template_cb(GAtServerRequestType type, GAtResult *result,
GAtServer *server, char *sreg,
const char *prefix, int min, int max)
@@ -446,6 +464,22 @@ static void at_c108_cb(GAtServer *server, GAtServerRequestType type,
at_template_cb(type, result, server, &server->v250.c108, "&D", 0, 2, 2);
}
+static void at_z_cb(GAtServer *server, GAtServerRequestType type,
+ GAtResult *result, gpointer user_data)
+{
+
+ switch (type) {
+ case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY:
+ v250_settings_create(&server->v250);
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_OK);
+ break;
+
+ default:
+ g_at_server_send_final(server, G_AT_SERVER_RESULT_ERROR);
+ break;
+ }
+}
+
static inline gboolean is_extended_command_prefix(const char c)
{
switch (c) {
@@ -1073,24 +1107,6 @@ static void server_resume(GAtServer *server)
g_at_io_set_read_handler(server->io, new_bytes, server);
}
-static void v250_settings_create(struct v250_settings *v250)
-{
- v250->s0 = 0;
- v250->s3 = '\r';
- v250->s4 = '\n';
- v250->s5 = '\b';
- v250->s6 = 2;
- v250->s7 = 50;
- v250->s8 = 2;
- v250->s10 = 2;
- v250->echo = TRUE;
- v250->quiet = FALSE;
- v250->is_v1 = TRUE;
- v250->res_format = 0;
- v250->c109 = 1;
- v250->c108 = 0;
-}
-
static void at_notify_node_destroy(gpointer data)
{
struct at_command *node = data;
@@ -1117,6 +1133,7 @@ static void basic_command_register(GAtServer *server)
g_at_server_register(server, "S10", at_s10_cb, NULL, NULL);
g_at_server_register(server, "&C", at_c109_cb, NULL, NULL);
g_at_server_register(server, "&D", at_c108_cb, NULL, NULL);
+ g_at_server_register(server, "Z", at_z_cb, NULL, NULL);
}
GAtServer *g_at_server_new(GIOChannel *io)