diff options
author | Bertrand Aygon <bertrand.aygon@intel.com> | 2011-08-08 14:13:19 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-08-09 13:02:21 -0500 |
commit | 786bcf70e2a469bab08d515cc43bf9d90676f4e2 (patch) | |
tree | 0ca6a8919fd9f3a596366a13e4894c5d3d1418d4 | |
parent | 65f4f14f52797f0f854a4995a1c6498d584cf844 (diff) | |
download | ofono-786bcf70e2a469bab08d515cc43bf9d90676f4e2.tar.bz2 |
huaweicdma: Implement 1X signal strength updates
-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 4802f799..25c62913 100644 --- a/drivers/huaweicdmamodem/network-registration.c +++ b/drivers/huaweicdmamodem/network-registration.c @@ -116,6 +116,31 @@ static void mode_notify(GAtResult *result, gpointer user_data) sysinfo_cb, netreg, NULL); } +static void rssilvl_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, "^RSSILVL:")) + goto error; + + if (!g_at_result_iter_next_number(&iter, &strength)) + goto error; + + if (strength == 99) + strength = 100; + + ofono_cdma_netreg_strength_notify(netreg, strength); + + return; + +error: + ofono_error("Invalid RSSILVL value"); +} + static void probe_cb(gboolean ok, GAtResult *result, gpointer user_data) { struct ofono_cdma_netreg *netreg = user_data; @@ -129,6 +154,9 @@ static void probe_cb(gboolean ok, GAtResult *result, gpointer user_data) g_at_chat_register(chat, "^MODE:", mode_notify, FALSE, netreg, NULL); + g_at_chat_register(chat, "^RSSILVL:", + rssilvl_notify, FALSE, netreg, NULL); + ofono_cdma_netreg_register(netreg); } |