---
 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

Reply via email to