diff options
-rw-r--r-- | drivers/atmodem/network-registration.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/atmodem/network-registration.c b/drivers/atmodem/network-registration.c index 7890fb1b..d098d373 100644 --- a/drivers/atmodem/network-registration.c +++ b/drivers/atmodem/network-registration.c @@ -692,12 +692,18 @@ static void ifx_xciev_notify(GAtResult *result, gpointer user_data) if (!g_at_result_iter_next_number(&iter, &ind)) return; - if (ind == 0) + /* + * Radio signal strength indicators are defined for 0-7, + * but in some cases XCIEV just returns CSQ 0-31,99 values. + */ + if (ind == 0 || ind == 99) strength = -1; else if (ind == 7) strength = 100; - else + else if (ind < 7) strength = (ind * 15); + else if (ind > 7) + strength = (ind * 100) / 31; DBG("ind %d strength %d", ind, strength); |