diff options
author | Dan Williams <dcbw@redhat.com> | 2013-01-08 14:26:31 -0600 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2013-01-14 13:50:26 -0600 |
commit | 01e8e0574f463dc03cccc4a6b8c9dacb754abae1 (patch) | |
tree | 11121328bbdef8ae52ed9145d1e6fa6cc6313e45 /src | |
parent | 48b36b1afae3a316be75c9c613e6f41be2ad64d2 (diff) |
broadband-modem: more compatible CSQ parsing
Some devices (usually CDMA modems like the Sierra MC5725 and others)
don't prefix their +CSQ replies with +CSQ. So don't require that.
The scanf() should ensure the reply is valid even without the +CSQ.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index c30a8c53..b6466339 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -1473,13 +1473,13 @@ signal_quality_csq_ready (MMBroadbandModem *self, } result_str = g_variant_get_string (result, NULL); - if (result_str && - !strncmp (result_str, "+CSQ: ", 6)) { + if (result_str) { /* Got valid reply */ int quality; int ber; - if (sscanf (result_str + 6, "%d, %d", &quality, &ber)) { + result_str = mm_strip_tag (result_str, "+CSQ:"); + if (sscanf (result_str, "%d, %d", &quality, &ber)) { /* 99 means unknown */ if (quality == 99) { g_simple_async_result_take_error ( |