quectel: implement shared quectel logic in MBIM modem
This commit is contained in:
committed by
Dan Williams
parent
87fb47b9ab
commit
306566ad7e
@@ -16,21 +16,25 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include "mm-base-modem-at.h"
|
||||
#include "mm-log-object.h"
|
||||
#include "mm-iface-modem.h"
|
||||
#include "mm-broadband-modem-mbim-quectel.h"
|
||||
#include "mm-iface-modem-firmware.h"
|
||||
#include "mm-iface-modem-location.h"
|
||||
#include "mm-iface-modem-time.h"
|
||||
#include "mm-shared-quectel.h"
|
||||
#include "mm-modem-helpers-quectel.h"
|
||||
#include "mm-broadband-modem-mbim-quectel.h"
|
||||
|
||||
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 iface_modem_time_init (MMIfaceModemTime *iface);
|
||||
static void shared_quectel_init (MMSharedQuectel *iface);
|
||||
|
||||
static MMIfaceModem *iface_modem_parent;
|
||||
static MMIfaceModemLocation *iface_modem_location_parent;
|
||||
|
||||
G_DEFINE_TYPE_EXTENDED (MMBroadbandModemMbimQuectel, mm_broadband_modem_mbim_quectel, MM_TYPE_BROADBAND_MODEM_MBIM, 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_IFACE_MODEM_TIME, iface_modem_time_init)
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_QUECTEL, shared_quectel_init))
|
||||
|
||||
@@ -66,6 +70,16 @@ mm_broadband_modem_mbim_quectel_init (MMBroadbandModemMbimQuectel *self)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
iface_modem_init (MMIfaceModem *iface)
|
||||
{
|
||||
iface_modem_parent = g_type_interface_peek_parent (iface);
|
||||
|
||||
iface->setup_sim_hot_swap = mm_shared_quectel_setup_sim_hot_swap;
|
||||
iface->setup_sim_hot_swap_finish = mm_shared_quectel_setup_sim_hot_swap_finish;
|
||||
iface->cleanup_sim_hot_swap = mm_shared_quectel_cleanup_sim_hot_swap;
|
||||
}
|
||||
|
||||
static void
|
||||
iface_modem_firmware_init (MMIfaceModemFirmware *iface)
|
||||
{
|
||||
@@ -73,6 +87,19 @@ 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 void
|
||||
iface_modem_time_init (MMIfaceModemTime *iface)
|
||||
{
|
||||
@@ -80,12 +107,36 @@ iface_modem_time_init (MMIfaceModemTime *iface)
|
||||
iface->check_support_finish = mm_shared_quectel_time_check_support_finish;
|
||||
}
|
||||
|
||||
static MMIfaceModem *
|
||||
peek_parent_modem_interface (MMSharedQuectel *self)
|
||||
{
|
||||
return iface_modem_parent;
|
||||
}
|
||||
|
||||
static MMIfaceModemLocation *
|
||||
peek_parent_modem_location_interface (MMSharedQuectel *self)
|
||||
{
|
||||
return iface_modem_location_parent;
|
||||
}
|
||||
|
||||
static MMBroadbandModemClass *
|
||||
peek_parent_broadband_modem_class (MMSharedQuectel *self)
|
||||
{
|
||||
return MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_mbim_quectel_parent_class);
|
||||
}
|
||||
|
||||
static void
|
||||
shared_quectel_init (MMSharedQuectel *iface)
|
||||
{
|
||||
iface->peek_parent_modem_interface = peek_parent_modem_interface;
|
||||
iface->peek_parent_modem_location_interface = peek_parent_modem_location_interface;
|
||||
iface->peek_parent_broadband_modem_class = peek_parent_broadband_modem_class;
|
||||
}
|
||||
|
||||
static void
|
||||
mm_broadband_modem_mbim_quectel_class_init (MMBroadbandModemMbimQuectelClass *klass)
|
||||
{
|
||||
MMBroadbandModemClass *broadband_modem_class = MM_BROADBAND_MODEM_CLASS (klass);
|
||||
|
||||
broadband_modem_class->setup_ports = mm_shared_quectel_setup_ports;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user