diff options
Diffstat (limited to 'drivers/atmodem/network-registration.c')
-rw-r--r-- | drivers/atmodem/network-registration.c | 26 |
1 files changed, 26 insertions, 0 deletions
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; @@ -639,6 +658,13 @@ static void at_network_registration_initialized(gboolean ok, GAtResult *result, 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; } |