diff options
author | Olivier Guiter <olivier.guiter@linux.intel.com> | 2011-03-24 11:03:14 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-03-24 13:27:13 -0500 |
commit | 155cf8f9c45856a8dc8597f90806c5a8b3e30351 (patch) | |
tree | 47e88d65e4c7a4179bba82b61484854e40211269 /gatchat | |
parent | 6e6aebf12b98b43752888576ef0ab8ff4d834d3e (diff) | |
download | ofono-155cf8f9c45856a8dc8597f90806c5a8b3e30351.tar.bz2 |
gatserver: add AT&F command
Diffstat (limited to 'gatchat')
-rw-r--r-- | gatchat/gatserver.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index 57cc58ef..8266ead5 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -274,7 +274,8 @@ static gboolean get_result_value(GAtServer *server, GAtResult *result, if (val < min || val > max) return FALSE; - *value = val; + if (value) + *value = val; return TRUE; } @@ -464,10 +465,33 @@ 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, +static void at_f_cb(GAtServer *server, GAtServerRequestType type, GAtResult *result, gpointer user_data) { + switch (type) { + case G_AT_SERVER_REQUEST_TYPE_SET: + if (!get_result_value(server, result, 0, 0, NULL)) { + g_at_server_send_final(server, + G_AT_SERVER_RESULT_ERROR); + return; + } + /* intentional fallback here */ + case G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY: + /* default behavior on AT&F same as ATZ */ + 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 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); @@ -1134,6 +1158,7 @@ static void basic_command_register(GAtServer *server) 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); + g_at_server_register(server, "&F", at_f_cb, NULL, NULL); } GAtServer *g_at_server_new(GIOChannel *io) |