summaryrefslogtreecommitdiffstats
path: root/gatchat/gatsyntax.c
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-03-29 16:38:00 -0500
committerDenis Kenzior <denkenz@gmail.com>2010-03-30 19:16:47 -0500
commitd7e784d517f9c0a1cf1a131e457c94d44027cbfb (patch)
treecebf6e0b96536d9b7dfd9b02b2bb931499b92b09 /gatchat/gatsyntax.c
parent46ebde6965ebf0adedfbbe16f508bccc36346e0a (diff)
downloadofono-d7e784d517f9c0a1cf1a131e457c94d44027cbfb.tar.bz2
Fix: Treat garbage as echo
Diffstat (limited to 'gatchat/gatsyntax.c')
-rw-r--r--gatchat/gatsyntax.c22
1 files changed, 5 insertions, 17 deletions
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;
};