diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-08-13 13:53:25 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-08-13 14:00:43 -0500 |
commit | bdc9cdaaf69e23bf26552015f4d2897c423dd614 (patch) | |
tree | 76fe1fe47f1c733a16795546e166bafda4ff56c1 /drivers/hsomodem/radio-settings.c | |
parent | 72bc61976c3f2b8a43f732db0e71fcbf45105eb4 (diff) | |
download | ofono-bdc9cdaaf69e23bf26552015f4d2897c423dd614.tar.bz2 |
hsomodem: Fix up radio-settings driver
Diffstat (limited to 'drivers/hsomodem/radio-settings.c')
-rw-r--r-- | drivers/hsomodem/radio-settings.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/hsomodem/radio-settings.c b/drivers/hsomodem/radio-settings.c index 3456339b..7dcb2a3f 100644 --- a/drivers/hsomodem/radio-settings.c +++ b/drivers/hsomodem/radio-settings.c @@ -52,23 +52,24 @@ static void opsys_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, "_OPSYS:") == 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: @@ -87,7 +88,12 @@ static void opsys_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 hso_query_rat_mode(struct ofono_radio_settings *rs, @@ -108,13 +114,10 @@ static void opsys_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 hso_set_rat_mode(struct ofono_radio_settings *rs, |