summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-03-31 18:48:52 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-03-31 18:48:52 -0500
commit988b24adb0a17ab29dce62c50ab93748e71cb9e7 (patch)
treebc4bea7d5cd89a2030d79dbb4c85da568446ee36
parentee8084c0d02d99cbb0d6835a13b4c1fbb9d1fa0f (diff)
downloadofono-988b24adb0a17ab29dce62c50ab93748e71cb9e7.tar.bz2
Fix: Introduce PPP data state
Some modems send PPP data introspersed along with the CONNECT final response. Fixup the parser so we can still detect the final response.
-rw-r--r--gatchat/gatsyntax.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c
index 6201e4cf..6266e795 100644
--- a/gatchat/gatsyntax.c
+++ b/gatchat/gatsyntax.c
@@ -42,6 +42,7 @@ enum GSMV1_STATE {
GSMV1_STATE_PDU_CR,
GSMV1_STATE_PROMPT,
GSMV1_STATE_ECHO,
+ GSMV1_PPP_DATA,
};
enum GSM_PERMISSIVE_STATE {
@@ -79,6 +80,8 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
case GSMV1_STATE_IDLE:
if (byte == '\r')
syntax->state = GSMV1_STATE_INITIAL_CR;
+ else if (byte == '~')
+ syntax->state = GSMV1_PPP_DATA;
else
syntax->state = GSMV1_STATE_ECHO;
break;
@@ -199,6 +202,16 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
break;
+ case GSMV1_PPP_DATA:
+ if (byte == '~') {
+ syntax->state = GSMV1_STATE_IDLE;
+ res = G_AT_SYNTAX_RESULT_UNRECOGNIZED;
+ i += 1;
+ goto out;
+ }
+
+ break;
+
default:
break;
};