summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Zajac <guillaume.zajac@linux.intel.com>2011-12-06 10:33:43 +0100
committerDenis Kenzior <denkenz@gmail.com>2011-12-07 09:55:28 -0600
commitdcd1730c3aa074312e842d97134c4ce729b93f5b (patch)
treecc4e345a96e0b0e14dd99af1c96b4af643ea86e5
parent1e052ef1fe9c40f661e750bace13bca3f44b09c9 (diff)
downloadofono-dcd1730c3aa074312e842d97134c4ce729b93f5b.tar.bz2
huaweicdma: Add data strength notification support
-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 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);
}