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;
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;
} else if (p->state == PARSER_STATE_INITIAL_CR) {

View File

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