comparison uptools/atcmd/resp_parse.c @ 352:02d6c8469535

fcup-smdump implemented, compiles
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 05 Feb 2018 08:47:45 +0000
parents
children
comparison
equal deleted inserted replaced
351:f0e9bb28b4d6 352:02d6c8469535
1 /*
2 * Parsing of structured responses to AT commands
3 */
4
5 #include <ctype.h>
6 #include <stdio.h>
7 #include <stdlib.h>
8 #include "resp_parse.h"
9
10 parse_structured_response(start, fields, max_fields)
11 char *start;
12 struct resp_field *fields;
13 int max_fields;
14 {
15 char *cp;
16 int fieldcnt;
17
18 cp = start;
19 for (fieldcnt = 0; fieldcnt < max_fields; fieldcnt++) {
20 if (*cp == '\0')
21 break;
22 if (isdigit(*cp)) {
23 fields[fieldcnt].type = RESP_FIELD_NUMBER;
24 fields[fieldcnt].num = strtoul(cp, 0, 10);
25 while (isdigit(*cp))
26 cp++;
27 } else if (*cp == '"') {
28 cp++;
29 fields[fieldcnt].type = RESP_FIELD_STRING;
30 fields[fieldcnt].str = cp;
31 while (*cp && *cp != '"')
32 cp++;
33 if (*cp != '"')
34 return(-1);
35 *cp++ = '\0';
36 } else if (*cp == ',')
37 fields[fieldcnt].type = RESP_FIELD_EMPTY;
38 else
39 return(-1);
40 if (*cp == ',')
41 cp++;
42 else if (*cp)
43 return(-1);
44 }
45 return fieldcnt;
46 }