diff options
Diffstat (limited to 'packages/gsm/files/numeric.patch')
-rw-r--r-- | packages/gsm/files/numeric.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/gsm/files/numeric.patch b/packages/gsm/files/numeric.patch new file mode 100644 index 0000000000..cd1990cbe5 --- /dev/null +++ b/packages/gsm/files/numeric.patch @@ -0,0 +1,56 @@ +Index: gsm/src/gsmd/atcmd.c +=================================================================== +--- gsm.orig/src/gsmd/atcmd.c 2007-04-02 09:59:16.000000000 +0200 ++++ gsm/src/gsmd/atcmd.c 2007-04-02 10:10:54.000000000 +0200 +@@ -207,7 +207,7 @@ + * TBD + */ + +- if (buf[0] == '+' || buf[0] == '%') { ++ if (buf[0] == '+' || buf[0] == '%' || buf[0] == '@') { + /* an extended response */ + const char *colon = strchr(buf, ':'); + if (!colon) { +@@ -269,14 +269,13 @@ + memcpy(cmd->buf, buf, len); + } + } else { +- if (!strcmp(buf, "RING")) { ++ if (!strcmp(buf, "RING") || buf[0] == '2') { + /* this is the only non-extended unsolicited return + * code, part of Case 'B' */ + return unsolicited_parse(g, buf, len, NULL); + } + +- if (!strcmp(buf, "ERROR") || +- ((g->flags & GSMD_FLAG_V0) && buf[0] == '4')) { ++ if (!strcmp(buf, "ERROR") || buf[0] == '4') { + /* Part of Case 'C' */ + DEBUGP("unspecified error\n"); + if (cmd) +@@ -285,8 +284,7 @@ + goto final_cb; + } + +- if (!strncmp(buf, "OK", 2) +- || ((g->flags & GSMD_FLAG_V0) && buf[0] == '0')) { ++ if (!strncmp(buf, "OK", 2) || buf[0] == '0') { + /* Part of Case 'C' */ + if (cmd) + cmd->ret = 0; +@@ -296,13 +294,13 @@ + + /* FIXME: handling of those special commands in response to + * ATD / ATA */ +- if (!strncmp(buf, "NO CARRIER", 11)) { ++ if (!strncmp(buf, "NO CARRIER", 11) || buf[0] == '3') { + /* Part of Case 'D' */ + final = 1; + goto final_cb; + } + +- if (!strncmp(buf, "BUSY", 4)) { ++ if (!strncmp(buf, "BUSY", 4) || buf[0] == '7') { + /* Part of Case 'D' */ + final = 1; + goto final_cb; |