[PATCH 08/12] gatchat: fix gatsyntax to support +CPOS
--- gatchat/gatsyntax.c | 27 +++ 1 files changed, 27 insertions(+), 0 deletions(-) diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c index 2fc70b8..469ffc3 100644 --- a/gatchat/gatsyntax.c +++ b/gatchat/gatsyntax.c @@ -44,6 +44,7 @@ enum GSMV1_STATE { GSMV1_STATE_PROMPT, GSMV1_STATE_ECHO, GSMV1_PPP_DATA, + GSMV1_STATE_SHORT_PROMPT, }; enum GSM_PERMISSIVE_STATE { @@ -53,6 +54,7 @@ enum GSM_PERMISSIVE_STATE { GSM_PERMISSIVE_STATE_GUESS_PDU, GSM_PERMISSIVE_STATE_PDU, GSM_PERMISSIVE_STATE_PROMPT, + GSM_PERMISSIVE_STATE_SHORT_PROMPT, }; static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint) @@ -64,6 +66,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; }; @@ -200,6 +205,16 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, syntax-state = GSMV1_STATE_RESPONSE; return G_AT_SYNTAX_RESULT_UNSURE; + case GSMV1_STATE_SHORT_PROMPT: + if (byte == '\r') + break; + else if (byte == '\n') { + syntax-state = GSMV1_STATE_IDLE; + i += 1; + res = G_AT_SYNTAX_RESULT_PROMPT; + goto out; + } + case GSMV1_STATE_ECHO: /* This handles the case of echo of the PDU terminated * by CtrlZ character @@ -239,6 +254,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_SHORT_PROMPT; } static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax, @@ -303,6 +320,16 @@ static GAtSyntaxResult gsm_permissive_feed(GAtSyntax *syntax, syntax-state = GSM_PERMISSIVE_STATE_RESPONSE; return G_AT_SYNTAX_RESULT_UNSURE; + case GSM_PERMISSIVE_STATE_SHORT_PROMPT: + if (byte == '\r') + break; + else if (byte == '\n') { + syntax-state = GSM_PERMISSIVE_STATE_IDLE; + i += 1; + res = G_AT_SYNTAX_RESULT_PROMPT; + goto out; + } + default: break; }; -- 1.7.0.4 ___ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono
Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS
Hi Denis, On Fri, 2011-03-18 at 06:53 +0200, Denis Kenzior wrote: 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. Ok, good point. } 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 ;) Yep. Btw now that I think about it, shouldn't the patch that I proposed to ste.c help? I know it's ste specific solution but still.. } syntax-state = GSM_PERMISSIVE_STATE_RESPONSE; Regards, -Denis Br, Jarko ___ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono
Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS
Hi Jarko, @@ -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 ;) Yep. Btw now that I think about it, shouldn't the patch that I proposed to ste.c help? I know it's ste specific solution but still.. If you mean running GNSS on a dedicated mux channel, then yes it will help ;) But really, using a proper prompt would be way better. Regards, -Denis ___ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono
Re: [PATCH 08/12] gatchat: fix gatsyntax to support +CPOS
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 ___ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono
[PATCH 08/12] gatchat: fix gatsyntax to support +CPOS
--- 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; } 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; } syntax-state = GSM_PERMISSIVE_STATE_RESPONSE; -- 1.7.0.4 ___ ofono mailing list ofono@ofono.org http://lists.ofono.org/listinfo/ofono