From 0d0ad722d9da2039ad71ece9c8ae4b1786c7f757 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Sat, 11 Dec 2021 23:01:04 +0100 Subject: iface-modem-3gpp-profile-manager: initialize the 'IndexField' property --- src/mm-broadband-modem-mbim.c | 31 +++++++++++++++++++++---------- src/mm-broadband-modem.c | 8 +++++++- src/mm-iface-modem-3gpp-profile-manager.c | 7 +++++-- src/mm-iface-modem-3gpp-profile-manager.h | 1 + 4 files changed, 34 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/mm-broadband-modem-mbim.c b/src/mm-broadband-modem-mbim.c index e94b957b..55f855ea 100644 --- a/src/mm-broadband-modem-mbim.c +++ b/src/mm-broadband-modem-mbim.c @@ -5946,27 +5946,38 @@ modem_signal_setup_thresholds (MMIfaceModemSignal *self, /* Check support (3GPP profile management interface) */ static gboolean -modem_3gpp_profile_manager_check_support_finish (MMIfaceModem3gppProfileManager *self, +modem_3gpp_profile_manager_check_support_finish (MMIfaceModem3gppProfileManager *_self, GAsyncResult *res, + gchar **index_field, GError **error) { - return g_task_propagate_boolean (G_TASK (res), error); + MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self); + + g_assert (g_task_propagate_boolean (G_TASK (res), NULL)); + + if (mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self))) { + if (self->priv->is_profile_management_ext_supported) { + *index_field = g_strdup ("apn-type"); + return TRUE; + } + if (self->priv->is_profile_management_supported) { + *index_field = g_strdup ("profile-id"); + return TRUE; + } + } + return FALSE; + } static void -modem_3gpp_profile_manager_check_support (MMIfaceModem3gppProfileManager *_self, +modem_3gpp_profile_manager_check_support (MMIfaceModem3gppProfileManager *self, GAsyncReadyCallback callback, gpointer user_data) { - MMBroadbandModemMbim *self = MM_BROADBAND_MODEM_MBIM (_self); - GTask *task; + GTask *task; task = g_task_new (self, NULL, callback, user_data); - - if (mm_iface_modem_is_3gpp (MM_IFACE_MODEM (self)) && self->priv->is_profile_management_supported) - g_task_return_boolean (task, TRUE); - else - g_task_return_boolean (task, FALSE); + g_task_return_boolean (task, TRUE); g_object_unref (task); } diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index a5f46fd7..28a17401 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -10184,9 +10184,15 @@ modem_signal_load_values (MMIfaceModemSignal *self, static gboolean modem_3gpp_profile_manager_check_support_finish (MMIfaceModem3gppProfileManager *self, GAsyncResult *res, + gchar **index_field, GError **error) { - return g_task_propagate_boolean (G_TASK (res), error); + if (g_task_propagate_boolean (G_TASK (res), error)) { + *index_field = g_strdup ("profile-id");; + return TRUE; + } + + return FALSE; } static void diff --git a/src/mm-iface-modem-3gpp-profile-manager.c b/src/mm-iface-modem-3gpp-profile-manager.c index 088bc6c5..0dfa9026 100644 --- a/src/mm-iface-modem-3gpp-profile-manager.c +++ b/src/mm-iface-modem-3gpp-profile-manager.c @@ -1465,19 +1465,22 @@ check_support_ready (MMIfaceModem3gppProfileManager *self, { InitializationContext *ctx; g_autoptr(GError) error = NULL; + g_autofree gchar *index_field = NULL; - if (!MM_IFACE_MODEM_3GPP_PROFILE_MANAGER_GET_INTERFACE (self)->check_support_finish (self, res, &error)) { + ctx = g_task_get_task_data (task); + + if (!MM_IFACE_MODEM_3GPP_PROFILE_MANAGER_GET_INTERFACE (self)->check_support_finish (self, res, &index_field, &error)) { if (error) { /* This error shouldn't be treated as critical */ mm_obj_dbg (self, "profile management support check failed: %s", error->message); } } else { /* profile management is supported! */ + mm_gdbus_modem3gpp_profile_manager_set_index_field (ctx->skeleton, index_field); g_object_set_qdata (G_OBJECT (self), supported_quark, GUINT_TO_POINTER (TRUE)); } /* Go on to next step */ - ctx = g_task_get_task_data (task); ctx->step++; interface_initialization_step (task); } diff --git a/src/mm-iface-modem-3gpp-profile-manager.h b/src/mm-iface-modem-3gpp-profile-manager.h index dcf97895..e6f2833e 100644 --- a/src/mm-iface-modem-3gpp-profile-manager.h +++ b/src/mm-iface-modem-3gpp-profile-manager.h @@ -41,6 +41,7 @@ struct _MMIfaceModem3gppProfileManager { gpointer user_data); gboolean (* check_support_finish) (MMIfaceModem3gppProfileManager *self, GAsyncResult *res, + gchar **index_field, GError **error); /* Asynchronous setup of unsolicited events */ -- cgit v1.2.3-70-g09d2