diff options
author | Dan Williams <dcbw@redhat.com> | 2012-01-09 12:40:30 -0600 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-15 14:14:48 +0100 |
commit | cb2d6d610524f32fd95633e4a491ba88f983e956 (patch) | |
tree | fa36de9d8a72f2ff94cb93cdf76ec5fcae20ac63 /src | |
parent | 4e06e0e67d1f4180e0ea2c86aae3f63701c176d7 (diff) |
base-modem-at: indicate sequence status to response parsers
Let parsers know if this command is the last in a sequence since
they may want to handle errors differently if that's the case.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-modem-at.c | 6 | ||||
-rw-r--r-- | src/mm-base-modem-at.h | 5 | ||||
-rw-r--r-- | src/mm-broadband-modem.c | 5 |
3 files changed, 15 insertions, 1 deletions
diff --git a/src/mm-base-modem-at.c b/src/mm-base-modem-at.c index 4ecb64de..cd0565c3 100644 --- a/src/mm-base-modem-at.c +++ b/src/mm-base-modem-at.c @@ -140,12 +140,15 @@ at_sequence_parse_response (MMAtSerialPort *port, /* No need to process response, go on to next command */ continue_sequence = TRUE; else { + const MMBaseModemAtCommand *next = ctx->current + 1; + /* Response processor will tell us if we need to keep on the sequence */ continue_sequence = !ctx->current->response_processor ( ctx->self, ctx->response_processor_context, ctx->current->command, response->str, + next->command ? FALSE : TRUE, /* Last command in sequence? */ error, &result, &result_error); @@ -300,6 +303,7 @@ mm_base_modem_response_processor_string (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) @@ -318,6 +322,7 @@ mm_base_modem_response_processor_no_result (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) @@ -336,6 +341,7 @@ mm_base_modem_response_processor_no_result_continue (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) diff --git a/src/mm-base-modem-at.h b/src/mm-base-modem-at.h index 0b39107c..b4b2f651 100644 --- a/src/mm-base-modem-at.h +++ b/src/mm-base-modem-at.h @@ -46,6 +46,7 @@ typedef gboolean (* MMBaseModemAtResponseProcessor) (MMBaseModem *self, gpointer response_processor_context, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error); @@ -95,6 +96,7 @@ gboolean mm_base_modem_response_processor_string (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error); @@ -103,6 +105,7 @@ gboolean mm_base_modem_response_processor_no_result (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error); @@ -111,11 +114,11 @@ gboolean mm_base_modem_response_processor_no_result_continue (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error); - /* Single AT command, returning the whole response string */ void mm_base_modem_at_command (MMBaseModem *self, const gchar *command, diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 2e83ecbb..18c6a0b2 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -331,6 +331,7 @@ parse_caps_gcap (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **variant, GError **result_error) @@ -363,6 +364,7 @@ parse_caps_cpin (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) @@ -395,10 +397,12 @@ parse_caps_cgmm (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) { + /* This check detects some really old Motorola GPRS dongles and phones */ if (strstr (response, "GSM900") || strstr (response, "GSM1800") || strstr (response, "GSM1900") || @@ -2612,6 +2616,7 @@ parse_reg_setup_reply (MMBaseModem *self, gpointer none, const gchar *command, const gchar *response, + gboolean last_command, const GError *error, GVariant **result, GError **result_error) |