diff options
Diffstat (limited to 'libmm-glib/mm-modem-3gpp.c')
-rw-r--r-- | libmm-glib/mm-modem-3gpp.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/libmm-glib/mm-modem-3gpp.c b/libmm-glib/mm-modem-3gpp.c index 69edc276..360aaef6 100644 --- a/libmm-glib/mm-modem-3gpp.c +++ b/libmm-glib/mm-modem-3gpp.c @@ -26,6 +26,7 @@ #include "mm-helpers.h" #include "mm-errors-types.h" #include "mm-modem-3gpp.h" +#include "mm-pco.h" /** * SECTION: mm-modem-3gpp @@ -299,6 +300,45 @@ mm_modem_3gpp_get_eps_ue_mode_operation (MMModem3gpp *self) /*****************************************************************************/ /** + * mm_modem_3gpp_get_pco: + * @self: A #MMModem3gpp. + * + * Get the list of #MMPco received from the network. + * + * The caller is responsible for freeing the returned #GList with + * mm_pco_list_free(). + * + * Returns: (transfer full): A list of #MMPco. + */ +GList * +mm_modem_3gpp_get_pco (MMModem3gpp *self) +{ + GList *pco_list = NULL; + GVariant *container, *child; + GVariantIter iter; + + g_return_val_if_fail (MM_IS_MODEM_3GPP (self), NULL); + + container = mm_gdbus_modem3gpp_get_pco (MM_GDBUS_MODEM3GPP (self)); + + g_return_val_if_fail (g_variant_is_of_type (container, G_VARIANT_TYPE ("a(ubay)")), + NULL); + g_variant_iter_init (&iter, container); + while ((child = g_variant_iter_next_value (&iter))) { + MMPco *pco; + + pco = mm_pco_from_variant (child, NULL); + pco_list = mm_pco_list_add (pco_list, pco); + g_object_unref (pco); + g_variant_unref (child); + } + + return pco_list; +} + +/*****************************************************************************/ + +/** * mm_modem_3gpp_register_finish: * @self: A #MMModem3gpp. * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to mm_modem_3gpp_register(). |