diff options
author | Olivier Guiter <olivier.guiter@linux.intel.com> | 2011-02-22 15:54:45 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-02-22 09:45:59 -0600 |
commit | 4ae645d7e67b04a9517abd86bd0714e8297150a8 (patch) | |
tree | 96203bd4b609ec7d938870459f6777b4ad765d9c /gatchat/gatserver.c | |
parent | 80c1cec0c02c2202c821c2429d5049a5e56dc5ae (diff) | |
download | ofono-4ae645d7e67b04a9517abd86bd0714e8297150a8.tar.bz2 |
gatserver: Add various ATSx handlers
Diffstat (limited to 'gatchat/gatserver.c')
-rw-r--r-- | gatchat/gatserver.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index b092a68c..cd867819 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -80,10 +80,14 @@ static const char *server_result_to_string(GAtServerResult result) /* Basic command setting for V.250 */ struct v250_settings { + char s0; /* set by S0=<val> */ char s3; /* set by S3=<val> */ char s4; /* set by S4=<val> */ char s5; /* set by S5=<val> */ int s6; /* set by S6=<val> */ + int s7; /* set by S7=<val> */ + int s8; /* set by S8=<val> */ + int s10; /* set by S10=<val> */ gboolean echo; /* set by E<val> */ gboolean quiet; /* set by Q<val> */ gboolean is_v1; /* set by V<val>, v0 or v1 */ @@ -319,6 +323,12 @@ static void s_template_cb(GAtServerRequestType type, GAtResult *result, } } +static void at_s0_cb(GAtServer *server, GAtServerRequestType type, + GAtResult *result, gpointer user_data) +{ + s_template_cb(type, result, server, &server->v250.s0, "S0", 0, 7); +} + static void at_s3_cb(GAtServer *server, GAtServerRequestType type, GAtResult *result, gpointer user_data) { @@ -412,6 +422,24 @@ static void at_s6_cb(GAtServer *server, GAtServerRequestType type, at_template_cb(type, result, server, &server->v250.s6, "S6", 0, 1, 1); } +static void at_s7_cb(GAtServer *server, GAtServerRequestType type, + GAtResult *result, gpointer user_data) +{ + at_template_cb(type, result, server, &server->v250.s7, "S7", 1, 255, 50); +} + +static void at_s8_cb(GAtServer *server, GAtServerRequestType type, + GAtResult *result, gpointer user_data) +{ + at_template_cb(type, result, server, &server->v250.s8, "S8", 1, 255, 2); +} + +static void at_s10_cb(GAtServer *server, GAtServerRequestType type, + GAtResult *result, gpointer user_data) +{ + at_template_cb(type, result, server, &server->v250.s10, "S10", 1, 254, 2); +} + static void at_c109_cb(GAtServer *server, GAtServerRequestType type, GAtResult *result, gpointer user_data) { @@ -1044,10 +1072,14 @@ static void server_wakeup_writer(GAtServer *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; @@ -1068,6 +1100,7 @@ static void at_notify_node_destroy(gpointer data) static void basic_command_register(GAtServer *server) { + g_at_server_register(server, "S0", at_s0_cb, NULL, NULL); g_at_server_register(server, "S3", at_s3_cb, NULL, NULL); g_at_server_register(server, "S4", at_s4_cb, NULL, NULL); g_at_server_register(server, "S5", at_s5_cb, NULL, NULL); @@ -1076,6 +1109,9 @@ static void basic_command_register(GAtServer *server) g_at_server_register(server, "V", at_v_cb, NULL, NULL); g_at_server_register(server, "X", at_x_cb, NULL, NULL); g_at_server_register(server, "S6", at_s6_cb, NULL, NULL); + g_at_server_register(server, "S7", at_s7_cb, NULL, NULL); + g_at_server_register(server, "S8", at_s8_cb, NULL, NULL); + 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); } |