diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-07-12 08:22:27 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-06 20:07:22 +0200 |
commit | 6f2fe89ef2f642e22cbea7539aef27bb76da56a0 (patch) | |
tree | 72369cc4cf71f20d02ccb052bdafbb2ed3d8e9b9 /plugins | |
parent | 02cf87b149a44335259f4ec60da401cba2c53f52 (diff) |
huawei: implement unsolicited 3GPP signal change report handling
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 16 |
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 |