diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-08-16 11:41:10 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-09-09 10:19:20 +0200 |
commit | 72be4f1d570c5a748963f6a831e765e620a4073d (patch) | |
tree | 8e66956a463d08d334f441b778f875c3a975faaa /src | |
parent | 959c7b9cde2aac56e63825a56ed9d33999ea288f (diff) |
broadband-modem-qmi: implement OMA Setup()
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-broadband-modem-qmi.c | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c index d09fc48f..bbebf237 100644 --- a/src/mm-broadband-modem-qmi.c +++ b/src/mm-broadband-modem-qmi.c @@ -8072,7 +8072,7 @@ oma_get_feature_setting_ready (QmiClientOma *client, enabled) features |= MM_OMA_FEATURE_DEVICE_PROVISIONING; - if (qmi_message_oma_get_feature_setting_output_get_prl_service_update_config ( + if (qmi_message_oma_get_feature_setting_output_get_prl_update_service_config ( output, &enabled, NULL) && @@ -8121,6 +8121,80 @@ oma_load_features (MMIfaceModemOma *self, } /*****************************************************************************/ +/* Setup (OMA interface) */ + +static gboolean +oma_setup_finish (MMIfaceModemOma *self, + GAsyncResult *res, + GError **error) +{ + return !g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error); +} + +static void +oma_set_feature_setting_ready (QmiClientOma *client, + GAsyncResult *res, + GSimpleAsyncResult *simple) +{ + QmiMessageOmaSetFeatureSettingOutput *output; + GError *error = NULL; + + output = qmi_client_oma_set_feature_setting_finish (client, res, &error); + if (!output || !qmi_message_oma_set_feature_setting_output_get_result (output, &error)) + g_simple_async_result_take_error (simple, error); + else + g_simple_async_result_set_op_res_gboolean (simple, TRUE); + + if (output) + qmi_message_oma_set_feature_setting_output_unref (output); + + g_simple_async_result_complete (simple); + g_object_unref (simple); +} + +static void +oma_setup (MMIfaceModemOma *self, + MMOmaFeature features, + GAsyncReadyCallback callback, + gpointer user_data) +{ + QmiClient *client = NULL; + QmiMessageOmaSetFeatureSettingInput *input; + + if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self), + QMI_SERVICE_OMA, &client, + callback, user_data)) + return; + + input = qmi_message_oma_set_feature_setting_input_new (); + qmi_message_oma_set_feature_setting_input_set_device_provisioning_service_update_config ( + input, + !!(features & MM_OMA_FEATURE_DEVICE_PROVISIONING), + NULL); + qmi_message_oma_set_feature_setting_input_set_prl_update_service_config ( + input, + !!(features & MM_OMA_FEATURE_PRL_UPDATE), + NULL); + qmi_message_oma_set_feature_setting_input_set_hfa_feature_config ( + input, + !!(features & MM_OMA_FEATURE_HANDS_FREE_ACTIVATION), + NULL); + + qmi_client_oma_set_feature_setting ( + QMI_CLIENT_OMA (client), + input, + 5, + NULL, + (GAsyncReadyCallback)oma_set_feature_setting_ready, + g_simple_async_result_new (G_OBJECT (self), + callback, + user_data, + oma_setup)); + + qmi_message_oma_set_feature_setting_input_unref (input); +} + +/*****************************************************************************/ /* Setup/Cleanup unsolicited event handlers (OMA interface) */ static void @@ -9997,6 +10071,8 @@ iface_modem_oma_init (MMIfaceModemOma *iface) iface->check_support_finish = oma_check_support_finish; iface->load_features = oma_load_features; iface->load_features_finish = oma_load_features_finish; + iface->setup = oma_setup; + iface->setup_finish = oma_setup_finish; iface->setup_unsolicited_events = oma_setup_unsolicited_events; iface->setup_unsolicited_events_finish = common_oma_setup_cleanup_unsolicited_events_finish; iface->cleanup_unsolicited_events = oma_cleanup_unsolicited_events; |