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:
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,
{
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,