From: Zhenhua Zhang Date: Tue, 2 Feb 2010 13:23:22 +0000 (+0800) Subject: Fix change state immediately when meet the slash X-Git-Tag: 0.18~80 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2a58101807f91b4425c74ba22e19cb600f61d72c;p=platform%2Fupstream%2Fofono.git 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. --- diff --git a/gatchat/gatserver.c b/gatchat/gatserver.c index fe5c3a8..a01ded6 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;