atmodem: Fix handling of IFX signal strength indication

This commit is contained in:
Marcel Holtmann 2012-02-14 15:23:59 +01:00
parent 286b4a8530
commit 1ed0b9997c
1 changed files with 8 additions and 2 deletions

View File

@ -692,12 +692,18 @@ static void ifx_xciev_notify(GAtResult *result, gpointer user_data)
if (!g_at_result_iter_next_number(&iter, &ind)) if (!g_at_result_iter_next_number(&iter, &ind))
return; 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; strength = -1;
else if (ind == 7) else if (ind == 7)
strength = 100; strength = 100;
else else if (ind < 7)
strength = (ind * 15); strength = (ind * 15);
else if (ind > 7)
strength = (ind * 100) / 31;
DBG("ind %d strength %d", ind, strength); DBG("ind %d strength %d", ind, strength);