Add extra_pdu_crlf quirk

This commit is contained in:
Denis Kenzior 2009-07-15 15:44:23 -05:00
parent a90d89e8c1
commit 86864c819c
2 changed files with 10 additions and 1 deletions

View File

@ -675,7 +675,15 @@ static void new_bytes(GAtChat *p)
len -= p->read_so_far; len -= p->read_so_far;
wrap -= p->read_so_far; wrap -= p->read_so_far;
have_pdu(p); /* Some modems like the TI Calypso send a CMT style
* notification with an extra CRLF thrown in
*/
if ((p->flags & G_AT_CHAT_FLAG_EXTRA_PDU_CRLF) &&
p->read_so_far == 2) {
p->state = PARSER_STATE_PDU;
ring_buffer_drain(p->buf, p->read_so_far);
} else
have_pdu(p);
p->read_so_far = 0; p->read_so_far = 0;
} else if (p->state == PARSER_STATE_INITIAL_CR) { } else if (p->state == PARSER_STATE_INITIAL_CR) {

View File

@ -39,6 +39,7 @@ typedef void (*GAtDisconnectFunc)(gpointer user_data);
enum _GAtChatFlags { enum _GAtChatFlags {
G_AT_CHAT_FLAG_NO_LEADING_CRLF = 1, /* Some emulators are broken */ G_AT_CHAT_FLAG_NO_LEADING_CRLF = 1, /* Some emulators are broken */
G_AT_CHAT_FLAG_EXTRA_PDU_CRLF = 2,
}; };
typedef enum _GAtChatFlags GAtChatFlags; typedef enum _GAtChatFlags GAtChatFlags;