aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksandermj@chromium.org>2024-03-11 10:42:40 +0000
committerDan Williams <dan@bigw.org>2024-03-13 03:52:35 +0000
commit8512ff444287704a1bba5f3ae8ee9eca5d3b7c5f (patch)
treeed927fec5d9bed044794b522a8a925f520b55857 /src
parent2dac0a9e4f145cac5a43b61ed95d9e48b960bf68 (diff)
fibocom: setup shared fibocom management on AT-only modem
The generic MMBroadbandModemFibocom object uses the shared Fibocom settings to load the update settings. This logic does not use the Private info right now, but there is no reason why it wouldn't do it in the future. Also, for consistency, it makes sense to ensure the shared interface setup is the same in all implementations, we should not have only some allowing to initialize the Private info.
Diffstat (limited to 'src')
-rw-r--r--src/plugins/fibocom/mm-broadband-modem-fibocom.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/fibocom/mm-broadband-modem-fibocom.c b/src/plugins/fibocom/mm-broadband-modem-fibocom.c
index 9fad4d2f..14011f1f 100644
--- a/src/plugins/fibocom/mm-broadband-modem-fibocom.c
+++ b/src/plugins/fibocom/mm-broadband-modem-fibocom.c
@@ -29,12 +29,15 @@ static void iface_modem_init (MMIfaceModem
static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface);
static void iface_modem_3gpp_profile_manager_init (MMIfaceModem3gppProfileManager *iface);
static void iface_modem_firmware_init (MMIfaceModemFirmware *iface);
+static void shared_fibocom_init (MMSharedFibocom *iface);
+static MMIfaceModem3gpp *iface_modem_3gpp_parent;
static MMIfaceModem3gppProfileManager *iface_modem_3gpp_profile_manager_parent;
G_DEFINE_TYPE_EXTENDED (MMBroadbandModemFibocom, mm_broadband_modem_fibocom, MM_TYPE_BROADBAND_MODEM, 0,
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_FIBOCOM, shared_fibocom_init)
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP_PROFILE_MANAGER, iface_modem_3gpp_profile_manager_init)
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init))
@@ -736,6 +739,8 @@ iface_modem_init (MMIfaceModem *iface)
static void
iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
{
+ iface_modem_3gpp_parent = g_type_interface_peek_parent (iface);
+
iface->load_initial_eps_bearer = modem_3gpp_load_initial_eps_bearer;
iface->load_initial_eps_bearer_finish = modem_3gpp_load_initial_eps_bearer_finish;
iface->load_initial_eps_bearer_settings = modem_3gpp_load_initial_eps_bearer_settings;
@@ -760,6 +765,18 @@ iface_modem_firmware_init (MMIfaceModemFirmware *iface)
iface->load_update_settings_finish = mm_shared_fibocom_firmware_load_update_settings_finish;
}
+static MMIfaceModem3gpp *
+peek_parent_3gpp_interface (MMSharedFibocom *self)
+{
+ return iface_modem_3gpp_parent;
+}
+
+static void
+shared_fibocom_init (MMSharedFibocom *iface)
+{
+ iface->peek_parent_3gpp_interface = peek_parent_3gpp_interface;
+}
+
static void
mm_broadband_modem_fibocom_class_init (MMBroadbandModemFibocomClass *klass)
{