summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2011-10-13 13:47:56 -0500
committerDenis Kenzior <denkenz@gmail.com>2011-10-13 13:47:56 -0500
commit066690b17f16ccc98e027b481cd26baeaaade68f (patch)
tree0503e4c656e04c018eba05f92672cf64eb03ad8e /drivers
parent86cb93d410816b43ea7d5407cb5b76337bbb4ca2 (diff)
downloadofono-066690b17f16ccc98e027b481cd26baeaaade68f.tar.bz2
handsfree: Pass the error information to the core
if available. This is the preferred way, so that the core can take into account the error information in the future if required.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/hfpmodem/handsfree.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/hfpmodem/handsfree.c b/drivers/hfpmodem/handsfree.c
index 16a395b9..c9bae653 100644
--- a/drivers/hfpmodem/handsfree.c
+++ b/drivers/hfpmodem/handsfree.c
@@ -95,14 +95,18 @@ static void hfp_request_phone_number_cb(gboolean ok, GAtResult *result,
{
struct cb_data *cbd = user_data;
ofono_handsfree_phone_cb_t cb = cbd->cb;
- void *data = cbd->data;
GAtResultIter iter;
+ struct ofono_error error;
const char *num;
int type;
struct ofono_phone_number phone_number;
- if (!ok)
- goto fail;
+ decode_at_error(&error, g_at_result_final_response(result));
+
+ if (!ok) {
+ cb(&error, NULL, cbd->data);
+ return;
+ }
g_at_result_iter_init(&iter, result);
@@ -122,11 +126,11 @@ static void hfp_request_phone_number_cb(gboolean ok, GAtResult *result,
phone_number.number[OFONO_MAX_PHONE_NUMBER_LENGTH] = '\0';
phone_number.type = type;
- CALLBACK_WITH_SUCCESS(cb, &phone_number, data);
+ cb(&error, &phone_number, cbd->data);
return;
fail:
- CALLBACK_WITH_FAILURE(cb, NULL, data);
+ CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
}
static void hfp_request_phone_number(struct ofono_handsfree *hf,