diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-03-31 18:48:52 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-03-31 18:48:52 -0500 |
commit | 988b24adb0a17ab29dce62c50ab93748e71cb9e7 (patch) | |
tree | bc4bea7d5cd89a2030d79dbb4c85da568446ee36 | |
parent | ee8084c0d02d99cbb0d6835a13b4c1fbb9d1fa0f (diff) | |
download | ofono-988b24adb0a17ab29dce62c50ab93748e71cb9e7.tar.bz2 |
Fix: Introduce PPP data state
Some modems send PPP data introspersed along with the CONNECT final
response. Fixup the parser so we can still detect the final response.
-rw-r--r-- | gatchat/gatsyntax.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gatchat/gatsyntax.c b/gatchat/gatsyntax.c index 6201e4cf..6266e795 100644 --- a/gatchat/gatsyntax.c +++ b/gatchat/gatsyntax.c @@ -42,6 +42,7 @@ enum GSMV1_STATE { GSMV1_STATE_PDU_CR, GSMV1_STATE_PROMPT, GSMV1_STATE_ECHO, + GSMV1_PPP_DATA, }; enum GSM_PERMISSIVE_STATE { @@ -79,6 +80,8 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, case GSMV1_STATE_IDLE: if (byte == '\r') syntax->state = GSMV1_STATE_INITIAL_CR; + else if (byte == '~') + syntax->state = GSMV1_PPP_DATA; else syntax->state = GSMV1_STATE_ECHO; break; @@ -199,6 +202,16 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax, break; + case GSMV1_PPP_DATA: + if (byte == '~') { + syntax->state = GSMV1_STATE_IDLE; + res = G_AT_SYNTAX_RESULT_UNRECOGNIZED; + i += 1; + goto out; + } + + break; + default: break; }; |