--- gatchat/gatserver.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index e9b1cf4..5a234d6 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -427,6 +427,56 @@ done: return res; } +static GAtServerResult at_v_cb(GAtServerRequestType type, GAtResult *result, + gpointer user_data) +{ + GAtServerResult res = G_AT_SERVER_RESULT_ERROR; + GAtServer *server = user_data; + GSList *text = NULL; + char buf[20]; + + if (type == G_AT_SERVER_REQUEST_TYPE_SET) { + GAtResultIter iter; + int val; + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, "V")) + goto done; + + if (!g_at_result_iter_next_number(&iter, &val)) + goto done; + + if (val < 0 || val > 1) + goto done; + + server->v250.is_v1 = val; + + res = G_AT_SERVER_RESULT_OK; + } else if (type == G_AT_SERVER_REQUEST_TYPE_QUERY) { + sprintf(buf, "V: %u", server->v250.is_v1); + text = g_slist_append(NULL, buf); + g_at_server_send_info_text(server, text); + + res = G_AT_SERVER_RESULT_OK; + } else if (type == G_AT_SERVER_REQUEST_TYPE_SUPPORT) { + sprintf(buf, "V: (0-1)"); + text = g_slist_append(NULL, buf); + g_at_server_send_info_text(server, text); + + res = G_AT_SERVER_RESULT_OK; + } else if (type == G_AT_SERVER_REQUEST_TYPE_COMMAND_ONLY) { + server->v250.is_v1 = 1; + res = G_AT_SERVER_RESULT_OK; + } + + if (text) + g_slist_free(text); + +done: + return res; +} + static inline gboolean is_extended_command_prefix(const char c) { switch (c) { @@ -1089,6 +1139,7 @@ static void basic_command_register(GAtServer *server) g_at_server_register(server, "S5", at_s5_cb, server, NULL); g_at_server_register(server, "E", at_e_cb, server, NULL); g_at_server_register(server, "Q", at_q_cb, server, NULL); + g_at_server_register(server, "V", at_v_cb, server, NULL); } GAtServer *g_at_server_new(GIOChannel *io) -- 1.6.6.1 _______________________________________________ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono