summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBertrand Aygon <bertrand.aygon@intel.com>2011-08-08 14:13:19 +0200
committerDenis Kenzior <denkenz@gmail.com>2011-08-09 13:02:21 -0500
commit786bcf70e2a469bab08d515cc43bf9d90676f4e2 (patch)
tree0ca6a8919fd9f3a596366a13e4894c5d3d1418d4
parent65f4f14f52797f0f854a4995a1c6498d584cf844 (diff)
downloadofono-786bcf70e2a469bab08d515cc43bf9d90676f4e2.tar.bz2
huaweicdma: Implement 1X signal strength updates
-rw-r--r--drivers/huaweicdmamodem/network-registration.c28
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);
}