gatsyntax: support short prompt in v1 parser

This commit is contained in:
Denis Kenzior 2011-03-25 17:19:26 -05:00
parent b6d6282158
commit 2ed142de3c
1 changed files with 24 additions and 0 deletions

View File

@ -44,6 +44,8 @@ enum GSMV1_STATE {
GSMV1_STATE_PROMPT,
GSMV1_STATE_ECHO,
GSMV1_STATE_PPP_DATA,
GSMV1_STATE_SHORT_PROMPT,
GSMV1_STATE_SHORT_PROMPT_CR,
};
enum GSM_PERMISSIVE_STATE {
@ -66,6 +68,9 @@ static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint)
case G_AT_SYNTAX_EXPECT_MULTILINE:
syntax->state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
break;
case G_AT_SYNTAX_EXPECT_SHORT_PROMPT:
syntax->state = GSMV1_STATE_SHORT_PROMPT;
break;
default:
break;
};
@ -228,6 +233,25 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
break;
case GSMV1_STATE_SHORT_PROMPT:
if (byte == '\r')
syntax->state = GSMV1_STATE_SHORT_PROMPT_CR;
else
syntax->state = GSMV1_STATE_ECHO;
break;
case GSMV1_STATE_SHORT_PROMPT_CR:
if (byte == '\n') {
syntax->state = GSMV1_STATE_IDLE;
i += 1;
res = G_AT_SYNTAX_RESULT_PROMPT;
goto out;
}
syntax->state = GSMV1_STATE_RESPONSE;
return G_AT_SYNTAX_RESULT_UNSURE;
default:
break;
};