From 58dbb68fa0c0a30d33d93969016f39880b142920 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Sun, 28 Jun 2020 15:05:14 +0200 Subject: [PATCH] quectel,qmi: add QGPS based fallback support --- .../quectel/mm-broadband-modem-qmi-quectel.c | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/plugins/quectel/mm-broadband-modem-qmi-quectel.c b/plugins/quectel/mm-broadband-modem-qmi-quectel.c index 96eda0e5..800c2341 100644 --- a/plugins/quectel/mm-broadband-modem-qmi-quectel.c +++ b/plugins/quectel/mm-broadband-modem-qmi-quectel.c @@ -19,13 +19,17 @@ #include "mm-shared-quectel.h" #include "mm-iface-modem-firmware.h" -static void iface_modem_init (MMIfaceModem *iface); -static void shared_quectel_init (MMSharedQuectel *iface); +static void iface_modem_init (MMIfaceModem *iface); static void iface_modem_firmware_init (MMIfaceModemFirmware *iface); +static void iface_modem_location_init (MMIfaceModemLocation *iface); +static void shared_quectel_init (MMSharedQuectel *iface); + +static MMIfaceModemLocation *iface_modem_location_parent; G_DEFINE_TYPE_EXTENDED (MMBroadbandModemQmiQuectel, mm_broadband_modem_qmi_quectel, MM_TYPE_BROADBAND_MODEM_QMI, 0, G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init) G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init) + G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init) G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_QUECTEL, shared_quectel_init)) /*****************************************************************************/ @@ -65,9 +69,29 @@ iface_modem_firmware_init (MMIfaceModemFirmware *iface) iface->load_update_settings_finish = mm_shared_quectel_firmware_load_update_settings_finish; } +static void +iface_modem_location_init (MMIfaceModemLocation *iface) +{ + iface_modem_location_parent = g_type_interface_peek_parent (iface); + + iface->load_capabilities = mm_shared_quectel_location_load_capabilities; + iface->load_capabilities_finish = mm_shared_quectel_location_load_capabilities_finish; + iface->enable_location_gathering = mm_shared_quectel_enable_location_gathering; + iface->enable_location_gathering_finish = mm_shared_quectel_enable_location_gathering_finish; + iface->disable_location_gathering = mm_shared_quectel_disable_location_gathering; + iface->disable_location_gathering_finish = mm_shared_quectel_disable_location_gathering_finish; +} + +static MMIfaceModemLocation * +peek_parent_location_interface (MMSharedQuectel *self) +{ + return iface_modem_location_parent; +} + static void shared_quectel_init (MMSharedQuectel *iface) { + iface->peek_parent_location_interface = peek_parent_location_interface; } static void