[PATCH] Fix problem parsing space in CRSM response
Oskar Enoksson
enok at lysator.liu.se
Wed Oct 29 13:56:14 PDT 2014
My modem (Samsung GI-B3740) had whitespace in CRSM responses e.g.
+CRSM: 144, 0, "98641001415070613508" Parsing the response in mm-base-sim.c
failed. With this patch it works. Just skip whitespace after ',' using
conversion specifier "%*[ ]"
---
src/mm-base-sim.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/mm-base-sim.c b/src/mm-base-sim.c
index 104e7f8..db3e83b 100644
--- a/src/mm-base-sim.c
+++ b/src/mm-base-sim.c
@@ -952,11 +952,11 @@ parse_iccid (const gchar *response,
memset (buf, 0, sizeof (buf));
str = mm_strip_tag (response, "+CRSM:");
- if (sscanf (str, "%d,%d,\"%20c\"", &sw1, &sw2, (char *) &buf) == 3)
+ if (sscanf (str, "%d,%*[ ]%d,%*[ ]\"%20c\"", &sw1, &sw2, (char *)
&buf) == 3)
success = TRUE;
else {
/* May not include quotes... */
- if (sscanf (str, "%d,%d,%20c", &sw1, &sw2, (char *) &buf) == 3)
+ if (sscanf (str, "%d,%*[ ]%d,%*[ ]%20c", &sw1, &sw2, (char *)
&buf) == 3)
success = TRUE;
}
@@ -1107,11 +1107,11 @@ parse_mnc_length (const gchar *response,
gchar hex[51];
memset (hex, 0, sizeof (hex));
- if (sscanf (response, "+CRSM:%d,%d,\"%50c\"", &sw1, &sw2, (char *)
&hex) == 3)
+ if (sscanf (response, "+CRSM:%d,%*[ ]%d,%*[ ]\"%50c\"", &sw1, &sw2,
(char *) &hex) == 3)
success = TRUE;
else {
/* May not include quotes... */
- if (sscanf (response, "+CRSM:%d,%d,%50c", &sw1, &sw2, (char *)
&hex) == 3)
+ if (sscanf (response, "+CRSM:%d%*[ ],%d%*[ ],%50c", &sw1, &sw2,
(char *) &hex) == 3)
success = TRUE;
}
--
1.8.4.5
More information about the ModemManager-devel
mailing list