diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2011-07-29 13:11:44 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2011-07-29 13:11:44 +0200 |
commit | a69690b3b5b86f11165efd9df10827f1b922a0ed (patch) | |
tree | cf8a3ca7a0764a45107324073d88a124025ae995 /drivers | |
parent | 7cabd1075c7e8303737c16eaed0e2cd0f1d6bcc7 (diff) | |
download | ofono-a69690b3b5b86f11165efd9df10827f1b922a0ed.tar.bz2 |
atmodem: Add Huawei specific technology reporting
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/atmodem/network-registration.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c index 6dc808e5..de025c2b 100644 --- a/drivers/atmodem/network-registration.c +++ b/drivers/atmodem/network-registration.c @@ -829,6 +829,34 @@ static void huawei_rssi_notify(GAtResult *result, gpointer user_data) at_util_convert_signal_strength(strength)); } +static void huawei_mode_notify(GAtResult *result, gpointer user_data) +{ + struct ofono_netreg *netreg = user_data; + struct netreg_data *nd = ofono_netreg_get_data(netreg); + GAtResultIter iter; + int mode, submode; + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, "^MODE:")) + return; + + if (!g_at_result_iter_next_number(&iter, &mode)) + return; + + if (!g_at_result_iter_next_number(&iter, &submode)) + return; + + switch (mode) { + case 3: + nd->tech = ACCESS_TECHNOLOGY_GSM; + break; + case 5: + nd->tech = ACCESS_TECHNOLOGY_UTRAN; + break; + } +} + static void huawei_nwtime_notify(GAtResult *result, gpointer user_data) { struct ofono_netreg *netreg = user_data; @@ -1351,6 +1379,10 @@ static void at_creg_set_cb(gboolean ok, GAtResult *result, gpointer user_data) g_at_chat_register(nd->chat, "^RSSI:", huawei_rssi_notify, FALSE, netreg, NULL); + /* Register for system mode reports */ + g_at_chat_register(nd->chat, "^MODE:", huawei_mode_notify, + FALSE, netreg, NULL); + /* Register for network time reports */ g_at_chat_register(nd->chat, "^NWTIME:", huawei_nwtime_notify, FALSE, netreg, NULL); |