diff options
author | Guillaume Zajac <guillaume.zajac@linux.intel.com> | 2011-12-06 10:33:43 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-12-07 09:55:28 -0600 |
commit | dcd1730c3aa074312e842d97134c4ce729b93f5b (patch) | |
tree | cc4e345a96e0b0e14dd99af1c96b4af643ea86e5 | |
parent | 1e052ef1fe9c40f661e750bace13bca3f44b09c9 (diff) | |
download | ofono-dcd1730c3aa074312e842d97134c4ce729b93f5b.tar.bz2 |
huaweicdma: Add data strength notification support
-rw-r--r-- | drivers/huaweicdmamodem/network-registration.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/huaweicdmamodem/network-registration.c b/drivers/huaweicdmamodem/network-registration.c index 25c62913..fc054d56 100644 --- a/drivers/huaweicdmamodem/network-registration.c +++ b/drivers/huaweicdmamodem/network-registration.c @@ -141,6 +141,31 @@ error: ofono_error("Invalid RSSILVL value"); } +static void hrssilvl_notify(GAtResult *result, gpointer user_data) +{ + struct ofono_cdma_netreg *netreg = user_data; + int strength; + GAtResultIter iter; + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, "^HRSSILVL:")) + goto error; + + if (!g_at_result_iter_next_number(&iter, &strength)) + goto error; + + if (strength == 99) + strength = 100; + + ofono_cdma_netreg_data_strength_notify(netreg, strength); + + return; + +error: + ofono_error("Invalid HRSSILVL value"); +} + static void probe_cb(gboolean ok, GAtResult *result, gpointer user_data) { struct ofono_cdma_netreg *netreg = user_data; @@ -157,6 +182,9 @@ static void probe_cb(gboolean ok, GAtResult *result, gpointer user_data) g_at_chat_register(chat, "^RSSILVL:", rssilvl_notify, FALSE, netreg, NULL); + g_at_chat_register(chat, "^HRSSILVL:", + hrssilvl_notify, FALSE, netreg, NULL); + ofono_cdma_netreg_register(netreg); } |