diff options
author | Ben Chan <benchan@chromium.org> | 2018-08-14 14:54:14 -0700 |
---|---|---|
committer | Ben Chan <benchan@chromium.org> | 2018-08-18 13:34:06 -0700 |
commit | d46aa0c36a8543857e28f151e134f88462369fc4 (patch) | |
tree | 482c03ac63af9191aa4e56ecf336904b7dadfa4b /src | |
parent | eb327b4203601a6c09f6369927325767391b86e7 (diff) |
modem-3gpp: add 'Pco' property to Modem3gpp interface
This patch adds a 'Pco' property to the Modem3gpp interface for tracking
PCOs that the modem has received from the network.
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-iface-modem-3gpp.c | 29 | ||||
-rw-r--r-- | src/mm-iface-modem-3gpp.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c index 72a9ab6d..d57e5982 100644 --- a/src/mm-iface-modem-3gpp.c +++ b/src/mm-iface-modem-3gpp.c @@ -1540,6 +1540,34 @@ periodic_registration_check_enable (MMIfaceModem3gpp *self) /*****************************************************************************/ +void +mm_iface_modem_3gpp_update_pco_list (MMIfaceModem3gpp *self, + const GList *pco_list) +{ + MmGdbusModem3gpp *skeleton = NULL; + GVariantBuilder builder; + GVariant *variant; + const GList *iter; + + g_object_get (self, + MM_IFACE_MODEM_3GPP_DBUS_SKELETON, &skeleton, + NULL); + if (!skeleton) + return; + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ubay)")); + for (iter = pco_list; iter; iter = g_list_next (iter)) { + g_variant_builder_add_value (&builder, + mm_pco_to_variant (MM_PCO (iter->data))); + } + variant = g_variant_ref_sink (g_variant_builder_end (&builder)); + mm_gdbus_modem3gpp_set_pco (skeleton, variant); + g_variant_unref (variant); + g_object_unref (skeleton); +} + +/*****************************************************************************/ + typedef struct _DisablingContext DisablingContext; static void interface_disabling_step (GTask *task); @@ -2242,6 +2270,7 @@ mm_iface_modem_3gpp_initialize (MMIfaceModem3gpp *self, mm_gdbus_modem3gpp_set_operator_name (skeleton, NULL); mm_gdbus_modem3gpp_set_enabled_facility_locks (skeleton, MM_MODEM_3GPP_FACILITY_NONE); mm_gdbus_modem3gpp_set_subscription_state (skeleton, MM_MODEM_3GPP_SUBSCRIPTION_STATE_UNKNOWN); + mm_gdbus_modem3gpp_set_pco (skeleton, NULL); /* Bind our RegistrationState property */ g_object_bind_property (self, MM_IFACE_MODEM_3GPP_REGISTRATION_STATE, diff --git a/src/mm-iface-modem-3gpp.h b/src/mm-iface-modem-3gpp.h index a08c5fb6..7ea190a2 100644 --- a/src/mm-iface-modem-3gpp.h +++ b/src/mm-iface-modem-3gpp.h @@ -259,6 +259,8 @@ void mm_iface_modem_3gpp_update_location (MMIfaceModem3gpp *self, gulong location_area_code, gulong tracking_area_code, gulong cell_id); +void mm_iface_modem_3gpp_update_pco_list (MMIfaceModem3gpp *self, + const GList *pco_list); /* Run all registration checks */ void mm_iface_modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self, |