mirror of git://git.sysmocom.de/ofono
Be more lenient for PDU lines
This commit is contained in:
parent
e3466d9b92
commit
d2c106b4db
|
@ -36,6 +36,8 @@ enum GSMV1_STATE_ {
|
|||
GSMV1_STATE_GUESS_MULTILINE_RESPONSE,
|
||||
GSMV1_STATE_MULTILINE_RESPONSE,
|
||||
GSMV1_STATE_MULTILINE_TERMINATOR_CR,
|
||||
GSMV1_STATE_PDU_CHECK_EXTRA_CR,
|
||||
GSMV1_STATE_PDU_CHECK_EXTRA_LF,
|
||||
GSMV1_STATE_PDU,
|
||||
GSMV1_STATE_PDU_CR,
|
||||
GSMV1_STATE_PROMPT,
|
||||
|
@ -47,7 +49,7 @@ static void gsmv1_hint(GAtSyntax *syntax, GAtSyntaxExpectHint hint)
|
|||
{
|
||||
switch (hint) {
|
||||
case G_AT_SYNTAX_EXPECT_PDU:
|
||||
syntax->state = GSMV1_STATE_PDU;
|
||||
syntax->state = GSMV1_STATE_PDU_CHECK_EXTRA_CR;
|
||||
break;
|
||||
case G_AT_SYNTAX_EXPECT_MULTILINE:
|
||||
syntax->state = GSMV1_STATE_GUESS_MULTILINE_RESPONSE;
|
||||
|
@ -129,6 +131,27 @@ static GAtSyntaxResult gsmv1_feed(GAtSyntax *syntax,
|
|||
|
||||
goto out;
|
||||
|
||||
/* Some 27.007 compliant modems still get this wrong. They
|
||||
* insert an extra CRLF between the command and he PDU,
|
||||
* in effect making them two separate lines. We try to
|
||||
* handle this case gracefully
|
||||
*/
|
||||
case GSMV1_STATE_PDU_CHECK_EXTRA_CR:
|
||||
if (byte == '\r')
|
||||
syntax->state = GSMV1_STATE_PDU_CHECK_EXTRA_LF;
|
||||
else
|
||||
syntax->state = GSMV1_STATE_PDU;
|
||||
break;
|
||||
|
||||
case GSMV1_STATE_PDU_CHECK_EXTRA_LF:
|
||||
res = G_AT_SYNTAX_RESULT_UNRECOGNIZED;
|
||||
syntax->state = GSMV1_STATE_PDU;
|
||||
|
||||
if (byte == '\n')
|
||||
i += 1;
|
||||
|
||||
goto out;
|
||||
|
||||
case GSMV1_STATE_PDU:
|
||||
if (byte == '\r')
|
||||
syntax->state = GSMV1_STATE_PDU_CR;
|
||||
|
|
Loading…
Reference in New Issue