From f51b8af585ceb2ede7de167834a9fbc83e9795a2 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Fri, 13 Aug 2010 13:57:18 -0500 Subject: [PATCH] nwemodem: Fix up radio-settings driver --- drivers/nwmodem/radio-settings.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/nwmodem/radio-settings.c b/drivers/nwmodem/radio-settings.c index 64ceaf34..179a0ad3 100644 --- a/drivers/nwmodem/radio-settings.c +++ b/drivers/nwmodem/radio-settings.c @@ -52,23 +52,24 @@ static void nwrat_query_cb(gboolean ok, GAtResult *result, gpointer user_data) struct cb_data *cbd = user_data; ofono_radio_settings_rat_mode_query_cb_t cb = cbd->cb; enum ofono_radio_access_mode mode; + struct ofono_error error; GAtResultIter iter; int value; + decode_at_error(&error, g_at_result_final_response(result)); + if (!ok) { - CALLBACK_WITH_FAILURE(cb, -1, cbd->data); + cb(&error, -1, cbd->data); return; } g_at_result_iter_init(&iter, result); if (g_at_result_iter_next(&iter, "$NWRAT:") == FALSE) - return; + goto error; - if (g_at_result_iter_next_number(&iter, &value) == FALSE) { - CALLBACK_WITH_FAILURE(cb, -1, cbd->data); - return; - } + if (g_at_result_iter_next_number(&iter, &value) == FALSE) + goto error; switch (value) { case 0: @@ -85,7 +86,12 @@ static void nwrat_query_cb(gboolean ok, GAtResult *result, gpointer user_data) return; } - CALLBACK_WITH_SUCCESS(cb, mode, cbd->data); + cb(&error, mode, cbd->data); + + return; + +error: + CALLBACK_WITH_FAILURE(cb, -1, cbd->data); } static void nw_query_rat_mode(struct ofono_radio_settings *rs, @@ -106,13 +112,10 @@ static void nwrat_modify_cb(gboolean ok, GAtResult *result, gpointer user_data) { struct cb_data *cbd = user_data; ofono_radio_settings_rat_mode_set_cb_t cb = cbd->cb; + struct ofono_error error; - if (!ok) { - CALLBACK_WITH_FAILURE(cb, cbd->data); - return; - } - - CALLBACK_WITH_SUCCESS(cb, cbd->data); + decode_at_error(&error, g_at_result_final_response(result)); + cb(&error, cbd->data); } static void nw_set_rat_mode(struct ofono_radio_settings *rs,