diff options
author | Zhenhua Zhang <zhenhua.zhang@intel.com> | 2010-02-02 21:23:22 +0800 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-02-02 11:31:23 -0600 |
commit | 2a58101807f91b4425c74ba22e19cb600f61d72c (patch) | |
tree | 168bc5e2b5abdb95634574de8ee673b4095dd4f1 | |
parent | ae25d1e91089b0fd73fd22692aaa81889425aa93 (diff) | |
download | ofono-2a58101807f91b4425c74ba22e19cb600f61d72c.tar.bz2 |
Fix change state immediately when meet the slash
According to V.250 spec section 5.2.4 Repeating a command line, if
the prefix "A/" or "a/" is received, we should execute the last
command immediately. No need to meet \r.
-rw-r--r-- | gatchat/gatserver.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index fe5c3a82..a01ded63 100644 --- a/gatchat/gatserver.c +++ b/gatchat/gatserver.c @@ -35,7 +35,6 @@ enum ParserState { PARSER_STATE_IDLE, PARSER_STATE_A, - PARSER_STATE_SLASH, PARSER_STATE_COMMAND, PARSER_STATE_GARBAGE, }; @@ -214,22 +213,14 @@ static enum ParserResult server_feed(GAtServer *server, i += 1; res = PARSER_RESULT_GARBAGE; goto out; - } else if (byte == '/') - server->parser_state = PARSER_STATE_SLASH; - else if (byte == 'T' || byte == 't') - server->parser_state = PARSER_STATE_COMMAND; - else - server->parser_state = PARSER_STATE_GARBAGE; - - break; - - case PARSER_STATE_SLASH: - if (byte == s3) { + } else if (byte == '/') { server->parser_state = PARSER_STATE_IDLE; - i+= 1; + i += 1; res = PARSER_RESULT_REPEAT_LAST; goto out; - } else if (byte != ' ' && byte != '\t') + } else if (byte == 'T' || byte == 't') + server->parser_state = PARSER_STATE_COMMAND; + else server->parser_state = PARSER_STATE_GARBAGE; break; @@ -246,7 +237,6 @@ static enum ParserResult server_feed(GAtServer *server, case PARSER_STATE_GARBAGE: if (byte == s3) { server->parser_state = PARSER_STATE_IDLE; - i += 1; res = PARSER_RESULT_GARBAGE; goto out; |