summaryrefslogtreecommitdiff
path: root/src/gsmd/atcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gsmd/atcmd.c')
-rw-r--r--src/gsmd/atcmd.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/gsmd/atcmd.c b/src/gsmd/atcmd.c
index 11e9251..53a7501 100644
--- a/src/gsmd/atcmd.c
+++ b/src/gsmd/atcmd.c
@@ -33,6 +33,7 @@
#include "gsmd.h"
+#include <gsmd/ts0705.h>
#include <gsmd/ts0707.h>
#include <gsmd/gsmd.h>
#include <gsmd/atcmd.h>
@@ -50,7 +51,8 @@ enum final_result_codes {
static const char *final_results[] = {
"OK",
"ERROR",
- "+CME ERROR:"
+ "+CME ERROR:",
+ "+CMS ERROR:",
};
/* we basically implement a parse that can deal with
@@ -223,6 +225,16 @@ static int ml_parse(const char *buf, int len, void *ctx)
final = 1;
goto final_cb;
}
+ if (!strncmp(buf+1, "CMS ERROR", 9)) {
+ /* Part of Case 'C' */
+ unsigned long err_nr;
+ err_nr = strtoul(colon+1, NULL, 10);
+ DEBUGP("error number %lu\n", err_nr);
+ if (cmd)
+ cmd->ret = err_nr;
+ final = 1;
+ goto final_cb;
+ }
if (!cmd || strncmp(buf, &cmd->buf[2], colon-buf)) {
/* Assuming Case 'B' */
personal git repositories of Harald Welte. Your mileage may vary