Hi Jarko, On 03/11/2011 06:23 AM, Jarko Poutiainen wrote: > --- > gatchat/gatsyntax.c | 19 +++++++++++++++++++ > 1 files changed, 19 insertions(+), 0 deletions(-) > > diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c > index 2fc70b8..f1d896b 100644 > --- a/gatchat/gatsyntax.c > +++ b/gatchat/gatsyntax.c > @@ -64,6 +64,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_PROMPT; > + break; > default: > break; > }; > @@ -195,6 +198,13 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, > i += 1; > res = G_AT_SYNTAX_RESULT_PROMPT; > goto out; > + } else if (byte == '\r') > + break; > + else if (byte == '\n') { > + syntax->state = GSMV1_STATE_IDLE; > + i += 1; > + res = G_AT_SYNTAX_RESULT_PROMPT; > + goto out; Please just create a dedicated state for this one and don't hack the PROMPT state. > } > > syntax->state = GSMV1_STATE_RESPONSE; > @@ -239,6 +249,8 @@ static void gsm_permissive_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint) > { > if (hint == G_AT_SYNTAX_EXPECT_PDU) > syntax->state = GSM_PERMISSIVE_STATE_GUESS_PDU; > + else if (hint == G_AT_SYNTAX_EXPECT_SHORT_PROMPT) > + syntax->state = GSM_PERMISSIVE_STATE_PROMPT; > } > > static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax, > @@ -298,6 +310,13 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax, > i += 1; > res = G_AT_SYNTAX_RESULT_PROMPT; > goto out; > + } else if (byte == '\r') > + break; > + else if (byte == '\n') { > + syntax->state = GSM_PERMISSIVE_STATE_IDLE; > + i += 1; > + res = G_AT_SYNTAX_RESULT_PROMPT; > + goto out; Same comment here, and man you better pray that your modem doesn't insert unsolicited notifications between you sending a CPOSR and you receiving a prompt ;) > } > > syntax->state = GSM_PERMISSIVE_STATE_RESPONSE; Regards, -Denis