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 /gatchat/gatsyntax.c | |
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.
Diffstat (limited to 'gatchat/gatsyntax.c')
-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; }; |