From 2ed142de3c975f8f87447b3d3e3fde710aee334e Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 25 Mar 2011 17:19:26 -0500 Subject: gatsyntax: support short prompt in v1 parser --- gatchat/gatsyntax.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'gatchat') diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c index 3e472d65..0d32ec3e 100644 --- a/gatchat/gatsyntax.c +++ b/gatchat/gatsyntax.c @@ -44,6 +44,8 @@ enum GSMV1_STATE { GSMV1_STATE_PROMPT, GSMV1_STATE_ECHO, GSMV1_STATE_PPP_DATA, + GSMV1_STATE_SHORT_PROMPT, + GSMV1_STATE_SHORT_PROMPT_CR, }; enum GSM_PERMISSIVE_STATE { @@ -66,6 +68,9 @@ static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint) case G_AT_SYNTAX_EXPECT_MULTILINE: syntax->state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE; break; + case G_AT_SYNTAX_EXPECT_SHORT_PROMPT: + syntax->state = GSMV1_STATE_SHORT_PROMPT; + break; default: break; }; @@ -228,6 +233,25 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, break; + case GSMV1_STATE_SHORT_PROMPT: + if (byte == '\r') + syntax->state = GSMV1_STATE_SHORT_PROMPT_CR; + else + syntax->state = GSMV1_STATE_ECHO; + + break; + + case GSMV1_STATE_SHORT_PROMPT_CR: + if (byte == '\n') { + syntax->state = GSMV1_STATE_IDLE; + i += 1; + res = G_AT_SYNTAX_RESULT_PROMPT; + goto out; + } + + syntax->state = GSMV1_STATE_RESPONSE; + return G_AT_SYNTAX_RESULT_UNSURE; + default: break; }; -- cgit v1.2.3