From 988b24adb0a17ab29dce62c50ab93748e71cb9e7 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Wed, 31 Mar 2010 18:48:52 -0500 Subject: [PATCH] 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. --- gatchat/gatsyntax.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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; };