diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-03-29 16:38:00 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-03-30 19:16:47 -0500 |
commit | d7e784d517f9c0a1cf1a131e457c94d44027cbfb (patch) | |
tree | cebf6e0b96536d9b7dfd9b02b2bb931499b92b09 /gatchat | |
parent | 46ebde6965ebf0adedfbbe16f508bccc36346e0a (diff) | |
download | ofono-d7e784d517f9c0a1cf1a131e457c94d44027cbfb.tar.bz2 |
Fix: Treat garbage as echo
Diffstat (limited to 'gatchat')
-rw-r--r-- | gatchat/gatsyntax.c | 22 |
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; }; |