hsomodem: Fix up radio-settings driver
authorDenis Kenzior <denkenz@gmail.com>
Fri, 13 Aug 2010 18:53:25 +0000 (13:53 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Fri, 13 Aug 2010 19:00:43 +0000 (14:00 -0500)
drivers/hsomodem/radio-settings.c

index 3456339..7dcb2a3 100644 (file)
@@ -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,