aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-07-12 08:22:27 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-08-06 20:07:22 +0200
commit6f2fe89ef2f642e22cbea7539aef27bb76da56a0 (patch)
tree72369cc4cf71f20d02ccb052bdafbb2ed3d8e9b9
parent02cf87b149a44335259f4ec60da401cba2c53f52 (diff)
huawei: implement unsolicited 3GPP signal change report handling
-rw-r--r--plugins/huawei/mm-broadband-modem-huawei.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c
index e0281e43..d850c2fe 100644
--- a/plugins/huawei/mm-broadband-modem-huawei.c
+++ b/plugins/huawei/mm-broadband-modem-huawei.c
@@ -26,6 +26,7 @@
#include "ModemManager.h"
#include "mm-log.h"
#include "mm-errors-types.h"
+#include "mm-common-helpers.h"
#include "mm-base-modem-at.h"
#include "mm-iface-modem.h"
#include "mm-iface-modem-3gpp.h"
@@ -161,6 +162,21 @@ huawei_signal_changed (MMAtSerialPort *port,
GMatchInfo *match_info,
MMBroadbandModemHuawei *self)
{
+ guint quality = 0;
+
+ if (!mm_get_uint_from_match_info (match_info, 1, &quality))
+ return;
+
+ if (quality == 99) {
+ /* 99 means unknown */
+ quality = 0;
+ } else {
+ /* Normalize the quality */
+ quality = CLAMP (quality, 0, 31) * 100 / 31;
+ }
+
+ mm_dbg ("3GPP signal quality: %u", quality);
+ mm_iface_modem_update_signal_quality (MM_IFACE_MODEM (self), (guint)quality);
}
static void