From 5b12b25ce6bb689cd19f62255c9d5ce58a57fd59 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 7 Dec 2009 15:09:25 -0600 Subject: [PATCH] Add support for HSO signal quality reporting --- drivers/atmodem/network-registration.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c index df3ce0d9..a49254bb 100644 --- a/drivers/atmodem/network-registration.c +++ b/drivers/atmodem/network-registration.c @@ -524,6 +524,25 @@ static void calypso_csq_notify(GAtResult *result, gpointer user_data) report_signal_strength(netreg, strength); } +static void option_osigq_notify(GAtResult *result, gpointer user_data) +{ + struct ofono_netreg *netreg = user_data; + int strength; + GAtResultIter iter; + + dump_response("option_osigq_notify", TRUE, result); + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, "_OSIGQ:")) + return; + + if (!g_at_result_iter_next_number(&iter, &strength)) + return; + + report_signal_strength(netreg, strength); +} + static void csq_cb(gboolean ok, GAtResult *result, gpointer user_data) { struct cb_data *cbd = user_data; @@ -638,6 +657,13 @@ static void at_network_registration_initialized(gboolean ok, GAtResult *result, g_at_chat_register(nd->chat, "%CSQ:", calypso_csq_notify, FALSE, netreg, NULL); + break; + case OFONO_VENDOR_OPTION_HSO: + g_at_chat_send(nd->chat, "AT_OSQI=1", none_prefix, + NULL, NULL, NULL); + g_at_chat_register(nd->chat, "_OSIGQ:", option_osigq_notify, + FALSE, netreg, NULL); + break; default: break;