From d7e784d517f9c0a1cf1a131e457c94d44027cbfb Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Mon, 29 Mar 2010 16:38:00 -0500 Subject: Fix: Treat garbage as echo --- gatchat/gatsyntax.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'gatchat') diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c index 37344eac..6201e4cf 100644 --- a/gatchat/gatsyntax.c +++ b/gatchat/gatsyntax.c @@ -41,8 +41,7 @@ enum GSMV1_STATE { GSMV1_STATE_PDU, GSMV1_STATE_PDU_CR, GSMV1_STATE_PROMPT, - GSMV1_STATE_GARBAGE, - GSMV1_STATE_GARBAGE_CHECK_LF, + GSMV1_STATE_ECHO, }; enum GSM_PERMISSIVE_STATE { @@ -81,14 +80,14 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, if (byte == '\r') syntax->state = GSMV1_STATE_INITIAL_CR; else - syntax->state = GSMV1_STATE_GARBAGE; + syntax->state = GSMV1_STATE_ECHO; break; case GSMV1_STATE_INITIAL_CR: if (byte == '\n') syntax->state = GSMV1_STATE_INITIAL_LF; else - syntax->state = GSMV1_STATE_GARBAGE; + syntax->state = GSMV1_STATE_ECHO; break; case GSMV1_STATE_INITIAL_LF: @@ -187,13 +186,11 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, syntax->state = GSMV1_STATE_RESPONSE; return G_AT_SYNTAX_RESULT_UNSURE; - case GSMV1_STATE_GARBAGE: - if (byte == '\r') - syntax->state = GSMV1_STATE_GARBAGE_CHECK_LF; + case GSMV1_STATE_ECHO: /* This handles the case of echo of the PDU terminated * by CtrlZ character */ - else if (byte == 26) { + if (byte == 26 || byte == '\r') { syntax->state = GSMV1_STATE_IDLE; res = G_AT_SYNTAX_RESULT_UNRECOGNIZED; i += 1; @@ -202,15 +199,6 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, break; - case GSMV1_STATE_GARBAGE_CHECK_LF: - syntax->state = GSMV1_STATE_IDLE; - res = G_AT_SYNTAX_RESULT_UNRECOGNIZED; - - if (byte == '\n') - i += 1; - - goto out; - default: break; }; -- cgit v1.2.3