diff options
Diffstat (limited to 'src/mm-serial-parsers.c')
-rw-r--r-- | src/mm-serial-parsers.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/mm-serial-parsers.c b/src/mm-serial-parsers.c index a577faee..d8dc1e5d 100644 --- a/src/mm-serial-parsers.c +++ b/src/mm-serial-parsers.c @@ -160,6 +160,27 @@ mm_serial_parser_v1_add_filter (gpointer data, parser->filter_user_data = user_data; } +void +mm_serial_parser_v1_remove_echo (gpointer data, + GByteArray *response) +{ + guint i; + + if (response->len <= 2) + return; + + for (i = 0; i < (response->len - 1); i++) { + /* If there is any content before the first + * <CR><LF>, assume it's echo or garbage, and skip it */ + if (response->data[i] == '\r' && response->data[i + 1] == '\n') { + if (i > 0) + g_byte_array_remove_range (response, 0, i); + /* else, good, we're already started with <CR><LF> */ + break; + } + } +} + gboolean mm_serial_parser_v1_parse (gpointer data, GString *response, |