From: Bernhard Guillon <[email protected]> *UC864 has an incompatible CIND *add a Telit specific check for "not measurable" strength
Co-authored-by: Christopher Vogl <[email protected]> --- drivers/atmodem/network-registration.c | 40 +++++++++++++++++++++++++++++-- 1 files changed, 37 insertions(+), 3 deletions(-) diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c index b3aa511..984e85e 100644 --- a/drivers/atmodem/network-registration.c +++ b/drivers/atmodem/network-registration.c @@ -666,7 +666,20 @@ static void ciev_notify(GAtResult *result, gpointer user_data) if (!g_at_result_iter_next_number(&iter, &strength)) return; - strength = (strength * 100) / (nd->signal_max - nd->signal_min); + switch (nd->vendor) { + case OFONO_VENDOR_TELIT: + /* Check for "signal not measurable" */ + if (strength == 99) + strength = 0; + else + strength = (strength * 100) / (nd->signal_max - + nd->signal_min); + break; + default: + strength = (strength * 100) / (nd->signal_max - nd->signal_min); + break; + } + ofono_netreg_strength_notify(netreg, strength); } @@ -798,8 +811,19 @@ static void cind_cb(gboolean ok, GAtResult *result, gpointer user_data) g_at_result_iter_next_number(&iter, &strength); - strength = (strength * 100) / (nd->signal_max - nd->signal_min); - + switch (nd->vendor) { + case OFONO_VENDOR_TELIT: + /* Check for "signal not measurable" */ + if (strength == 99) + strength = 0; + else + strength = (strength * 100) / (nd->signal_max - + nd->signal_min); + break; + default: + strength = (strength * 100) / (nd->signal_max - nd->signal_min); + break; + } cb(&error, strength, cbd->data); } @@ -1302,6 +1326,16 @@ static void at_creg_set_cb(gboolean ok, GAtResult *result, gpointer user_data) case OFONO_VENDOR_NOKIA: /* Signal strength reporting via CIND is not supported */ break; + case OFONO_VENDOR_TELIT: + /* Use RSSI instead of signal.*/ + nd->signal_index = 9; + nd->signal_min = 0; + nd->signal_max = 5; + g_at_chat_send(nd->chat, "AT+CIND=1", cind_prefix, + NULL, NULL, NULL); + g_at_chat_register(nd->chat, "+CIEV:", ciev_notify, + FALSE, netreg, NULL); + break; default: g_at_chat_send(nd->chat, "AT+CIND=?", cind_prefix, cind_support_cb, netreg, NULL); -- 1.7.0.4 -- Scanned by MailScanner. _______________________________________________ ofono mailing list [email protected] http://lists.ofono.org/listinfo/ofono
