From c67fa3459bb78c3c6813ed68eeb720da9431a53f Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 11 Apr 2013 17:37:10 +0200 Subject: broadband-modem-mbim,sim-mbim: consider MBIM result errors --- src/mm-broadband-modem-mbim.c | 4 ++++ src/mm-sim-mbim.c | 56 +++++++++++++++++++++++++------------------ 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); + } } } -- cgit v1.2.3