aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-04-11 17:37:10 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-04-17 15:19:39 +0200
commitc67fa3459bb78c3c6813ed68eeb720da9431a53f (patch)
treece2062a6e50931969538ce006d438e6a7aa7ae5e
parent8a8dc23f5071b5155a21bd96356a7b3a38993d6a (diff)
broadband-modem-mbim,sim-mbim: consider MBIM result errors
-rw-r--r--src/mm-broadband-modem-mbim.c4
-rw-r--r--src/mm-sim-mbim.c56
2 files changed, 37 insertions, 23 deletions
diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c
index 4c7778ad..eabb29b9 100644
--- a/src/mm-broadband-modem-mbim.c
+++ b/src/mm-broadband-modem-mbim.c
@@ -120,6 +120,7 @@ device_caps_query_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
mbim_message_basic_connect_device_caps_query_response_parse (
response,
NULL, /* device_type */
@@ -381,6 +382,7 @@ pin_query_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
mbim_message_basic_connect_pin_query_response_parse (
response,
&pin_type,
@@ -459,6 +461,7 @@ pin_query_unlock_retries_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
mbim_message_basic_connect_pin_query_response_parse (
response,
&pin_type,
@@ -549,6 +552,7 @@ radio_state_query_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
+ mbim_message_command_done_get_result (response, &error) &&
mbim_message_basic_connect_radio_state_query_response_parse (
response,
&hardware_radio_state,
diff --git a/src/mm-sim-mbim.c b/src/mm-sim-mbim.c
index f1baf391..7233acd5 100644
--- a/src/mm-sim-mbim.c
+++ b/src/mm-sim-mbim.c
@@ -86,17 +86,23 @@ pin_set_enter_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
- mbim_message_basic_connect_pin_set_response_parse (
- response,
- &pin_type,
- &pin_state,
- NULL,
- &error)) {
- /* Create the errors ourselves */
- if (pin_type == MBIM_PIN_TYPE_PIN1 && pin_state == MBIM_PIN_STATE_LOCKED)
- error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_INCORRECT_PASSWORD);
- else if (pin_type == MBIM_PIN_TYPE_PUK1 && pin_state == MBIM_PIN_STATE_LOCKED)
- error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_SIM_PUK);
+ !mbim_message_command_done_get_result (response, &error)) {
+ /* Sending PIN failed, build a better error to report */
+ if (mbim_message_basic_connect_pin_set_response_parse (
+ response,
+ &pin_type,
+ &pin_state,
+ NULL,
+ NULL)) {
+ /* Create the errors ourselves */
+ if (pin_type == MBIM_PIN_TYPE_PIN1 && pin_state == MBIM_PIN_STATE_LOCKED) {
+ g_error_free (error);
+ error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_INCORRECT_PASSWORD);
+ } else if (pin_type == MBIM_PIN_TYPE_PUK1 && pin_state == MBIM_PIN_STATE_LOCKED) {
+ g_error_free (error);
+ error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_SIM_PUK);
+ }
+ }
}
if (error)
@@ -172,18 +178,22 @@ puk_set_enter_ready (MbimDevice *device,
response = mbim_device_command_finish (device, res, &error);
if (response &&
- mbim_message_basic_connect_pin_set_response_parse (
- response,
- &pin_type,
- &pin_state,
- &remaining_attempts,
- &error)) {
- /* Create the errors ourselves */
- if (pin_type == MBIM_PIN_TYPE_PUK1 && pin_state == MBIM_PIN_STATE_LOCKED) {
- if (remaining_attempts == 0)
- error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG);
- else
- error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_INCORRECT_PASSWORD);
+ !mbim_message_command_done_get_result (response, &error)) {
+ /* Sending PUK failed, build a better error to report */
+ if (mbim_message_basic_connect_pin_set_response_parse (
+ response,
+ &pin_type,
+ &pin_state,
+ &remaining_attempts,
+ NULL)) {
+ /* Create the errors ourselves */
+ if (pin_type == MBIM_PIN_TYPE_PUK1 && pin_state == MBIM_PIN_STATE_LOCKED) {
+ g_error_free (error);
+ if (remaining_attempts == 0)
+ error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_SIM_WRONG);
+ else
+ error = mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_INCORRECT_PASSWORD);
+ }
}
}