diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-04-03 12:24:18 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-04-04 19:26:51 +0200 |
commit | 4e4d139e309c890b2c5c44b747aeaf9a5deac9bc (patch) | |
tree | 5c8b1edfd18a514946cc9ed2213641f25b601c8e /src/mm-serial-parsers.h | |
parent | 38b120c8617724ba97ac212c9e01d01c850abdc8 (diff) |
serial-parsers: allow specifying a custom response filter
The serial parser will now allow specifying a custom user-provided filter, which
is applied before even trying to match successful/error responses. This filter
provides a very early barrier to detect strings that are clearly not going to
match.
E.g. this filter may be used during port probing to early detect non-AT ports.
Diffstat (limited to 'src/mm-serial-parsers.h')
-rw-r--r-- | src/mm-serial-parsers.h | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/src/mm-serial-parsers.h b/src/mm-serial-parsers.h index 81e7a2d0..641c5e0f 100644 --- a/src/mm-serial-parsers.h +++ b/src/mm-serial-parsers.h @@ -18,14 +18,24 @@ #include <glib.h> -gpointer mm_serial_parser_v1_new (void); -void mm_serial_parser_v1_set_custom_regex (gpointer data, - GRegex *successful, - GRegex *error); -gboolean mm_serial_parser_v1_parse (gpointer parser, - GString *response, - GError **error); -void mm_serial_parser_v1_destroy (gpointer parser); -gboolean mm_serial_parser_v1_is_known_error (const GError *error); +gpointer mm_serial_parser_v1_new (void); +void mm_serial_parser_v1_set_custom_regex (gpointer data, + GRegex *successful, + GRegex *error); +gboolean mm_serial_parser_v1_parse (gpointer parser, + GString *response, + GError **error); +void mm_serial_parser_v1_destroy (gpointer parser); +gboolean mm_serial_parser_v1_is_known_error (const GError *error); + +/* Parser filter: when FALSE returned, error should be set. This error will be + * reported to the response listener right away. */ +typedef gboolean (* mm_serial_parser_v1_filter_fn) (gpointer data, + gpointer user_data, + GString *response, + GError **error); +void mm_serial_parser_v1_add_filter (gpointer data, + mm_serial_parser_v1_filter_fn callback, + gpointer user_data); #endif /* MM_SERIAL_PARSERS_H */ |