aboutsummaryrefslogtreecommitdiff
path: root/libmm-glib/mm-modem-3gpp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmm-glib/mm-modem-3gpp.c')
-rw-r--r--libmm-glib/mm-modem-3gpp.c40
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().