shared-qmi: new interface to handle common QMI implementations
This new interface will include implementations that are shared between the MMBroadbandModemQmi and the MMBroadbandModemMbim. For now, it just provides a way to implement the common client allocation methods.
This commit is contained in:

committed by
Dan Williams

parent
f9cbe045e5
commit
811a80e5ea
@@ -366,6 +366,8 @@ endif
|
||||
# Additional QMI support in ModemManager
|
||||
if WITH_QMI
|
||||
ModemManager_SOURCES += \
|
||||
mm-shared-qmi.h \
|
||||
mm-shared-qmi.c \
|
||||
mm-sms-qmi.h \
|
||||
mm-sms-qmi.c \
|
||||
mm-sim-qmi.h \
|
||||
|
@@ -39,6 +39,7 @@
|
||||
#include "mm-iface-modem-firmware.h"
|
||||
#include "mm-iface-modem-signal.h"
|
||||
#include "mm-iface-modem-oma.h"
|
||||
#include "mm-shared-qmi.h"
|
||||
#include "mm-sim-qmi.h"
|
||||
#include "mm-bearer-qmi.h"
|
||||
#include "mm-sms-qmi.h"
|
||||
@@ -54,6 +55,7 @@ static void iface_modem_location_init (MMIfaceModemLocation *iface);
|
||||
static void iface_modem_oma_init (MMIfaceModemOma *iface);
|
||||
static void iface_modem_firmware_init (MMIfaceModemFirmware *iface);
|
||||
static void iface_modem_signal_init (MMIfaceModemSignal *iface);
|
||||
static void shared_qmi_init (MMSharedQmi *iface);
|
||||
|
||||
static MMIfaceModemMessaging *iface_modem_messaging_parent;
|
||||
static MMIfaceModemLocation *iface_modem_location_parent;
|
||||
@@ -67,7 +69,8 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemQmi, mm_broadband_modem_qmi, MM_TYPE_BRO
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init)
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_SIGNAL, iface_modem_signal_init)
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_OMA, iface_modem_oma_init)
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init))
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init)
|
||||
G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_QMI, shared_qmi_init))
|
||||
|
||||
struct _MMBroadbandModemQmiPrivate {
|
||||
/* Cached device IDs, retrieved by the modem interface when loading device
|
||||
@@ -134,9 +137,10 @@ struct _MMBroadbandModemQmiPrivate {
|
||||
/*****************************************************************************/
|
||||
|
||||
static QmiClient *
|
||||
peek_qmi_client (MMBroadbandModemQmi *self,
|
||||
QmiService service,
|
||||
GError **error)
|
||||
shared_qmi_peek_client (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
MMPortQmiFlag flag,
|
||||
GError **error)
|
||||
{
|
||||
MMPortQmi *port;
|
||||
QmiClient *client;
|
||||
@@ -150,9 +154,7 @@ peek_qmi_client (MMBroadbandModemQmi *self,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
client = mm_port_qmi_peek_client (port,
|
||||
service,
|
||||
MM_PORT_QMI_FLAG_DEFAULT);
|
||||
client = mm_port_qmi_peek_client (port, service, flag);
|
||||
if (!client)
|
||||
g_set_error (error,
|
||||
MM_CORE_ERROR,
|
||||
@@ -163,26 +165,6 @@ peek_qmi_client (MMBroadbandModemQmi *self,
|
||||
return client;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
ensure_qmi_client (MMBroadbandModemQmi *self,
|
||||
QmiService service,
|
||||
QmiClient **o_client,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *error = NULL;
|
||||
QmiClient *client;
|
||||
|
||||
client = peek_qmi_client (self, service, &error);
|
||||
if (!client) {
|
||||
g_task_report_error (self, callback, user_data, ensure_qmi_client, error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*o_client = client;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Power cycle */
|
||||
|
||||
@@ -264,9 +246,9 @@ power_cycle (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -522,14 +504,14 @@ modem_load_current_capabilities (MMIfaceModem *self,
|
||||
|
||||
mm_dbg ("loading current capabilities...");
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &nas_client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &nas_client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &dms_client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &dms_client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (LoadCurrentCapabilitiesContext);
|
||||
@@ -655,9 +637,9 @@ modem_load_supported_capabilities (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading supported capabilities...");
|
||||
@@ -879,9 +861,9 @@ set_current_capabilities (MMIfaceModem *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (SetCurrentCapabilitiesContext);
|
||||
@@ -948,9 +930,9 @@ modem_load_manufacturer (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading manufacturer...");
|
||||
@@ -1008,9 +990,9 @@ modem_load_model (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading model...");
|
||||
@@ -1068,9 +1050,9 @@ modem_load_revision (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading revision...");
|
||||
@@ -1128,9 +1110,9 @@ modem_load_hardware_revision (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading hardware revision...");
|
||||
@@ -1239,9 +1221,9 @@ modem_load_equipment_identifier (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading equipment identifier...");
|
||||
@@ -1332,9 +1314,9 @@ modem_load_own_numbers (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading own numbers...");
|
||||
@@ -1766,7 +1748,10 @@ load_unlock_required_context_step (GTask *task)
|
||||
case LOAD_UNLOCK_REQUIRED_STEP_DMS:
|
||||
if (!self->priv->dms_uim_deprecated) {
|
||||
/* Failure to get DMS client is hard really */
|
||||
client = peek_qmi_client (self, QMI_SERVICE_DMS, &error);
|
||||
client = mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
&error);
|
||||
if (!client) {
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
@@ -1787,7 +1772,10 @@ load_unlock_required_context_step (GTask *task)
|
||||
|
||||
case LOAD_UNLOCK_REQUIRED_STEP_UIM:
|
||||
/* Failure to get UIM client at this point is hard as well */
|
||||
client = peek_qmi_client (self, QMI_SERVICE_UIM, &error);
|
||||
client = mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_UIM,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
&error);
|
||||
if (!client) {
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
@@ -1883,7 +1871,10 @@ uim_load_unlock_retries (MMBroadbandModemQmi *self,
|
||||
QmiClient *client;
|
||||
GError *error = NULL;
|
||||
|
||||
client = peek_qmi_client (self, QMI_SERVICE_UIM, &error);
|
||||
client = mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_UIM,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
&error);
|
||||
if (!client) {
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
@@ -1972,7 +1963,10 @@ dms_uim_load_unlock_retries (MMBroadbandModemQmi *self,
|
||||
{
|
||||
QmiClient *client;
|
||||
|
||||
client = peek_qmi_client (self, QMI_SERVICE_DMS, NULL);
|
||||
client = mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
NULL);
|
||||
if (!client) {
|
||||
/* Very unlikely that this will ever happen, but anyway, try with
|
||||
* UIM service instead */
|
||||
@@ -2083,9 +2077,9 @@ modem_load_supported_bands (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("loading band capabilities...");
|
||||
@@ -2216,9 +2210,9 @@ modem_load_current_bands (MMIfaceModem *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -2297,9 +2291,9 @@ set_current_bands (MMIfaceModem *_self,
|
||||
QmiNasBandPreference qmi_bands = 0;
|
||||
QmiNasLteBandPreference qmi_lte_bands = 0;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -2815,9 +2809,9 @@ load_signal_quality (MMIfaceModem *self,
|
||||
QmiClient *client = NULL;
|
||||
GTask *task;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -3028,9 +3022,9 @@ common_power_up_down_off (MMIfaceModem *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
/* Setup context */
|
||||
@@ -3156,9 +3150,9 @@ load_power_state (MMIfaceModem *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("Getting device operating mode...");
|
||||
@@ -3279,9 +3273,9 @@ modem_factory_reset (MMIfaceModem *self,
|
||||
QmiClient *client = NULL;
|
||||
GError *error = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -3518,9 +3512,9 @@ load_current_modes (MMIfaceModem *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_new0 (LoadCurrentModesContext, 1);
|
||||
@@ -3752,9 +3746,9 @@ set_current_modes (MMIfaceModem *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (SetCurrentModesContext);
|
||||
@@ -4014,9 +4008,9 @@ modem_3gpp_load_enabled_facility_locks (MMIfaceModem3gpp *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_new (LoadEnabledFacilityLocksContext, 1);
|
||||
@@ -4183,9 +4177,9 @@ modem_3gpp_scan_networks (MMIfaceModem3gpp *self,
|
||||
* passed to the caller and deallocated afterwards */
|
||||
g_assert (callback != NULL);
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
mm_dbg ("Scanning networks...");
|
||||
@@ -4331,9 +4325,9 @@ modem_3gpp_register_in_network (MMIfaceModem3gpp *self,
|
||||
}
|
||||
|
||||
/* Get NAS client */
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
input = qmi_message_nas_initiate_network_register_input_new ();
|
||||
@@ -5123,9 +5117,9 @@ modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -5277,9 +5271,9 @@ modem_3gpp_disable_unsolicited_registration_events (MMIfaceModem3gpp *_self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = unsolicited_registration_events_task_new (self,
|
||||
@@ -5324,9 +5318,9 @@ modem_3gpp_enable_unsolicited_registration_events (MMIfaceModem3gpp *_self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (self,
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = unsolicited_registration_events_task_new (self,
|
||||
@@ -5582,9 +5576,9 @@ modem_cdma_run_registration_checks (MMIfaceModemCdma *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
/* TODO: Run Get System Info in NAS >= 1.8 */
|
||||
@@ -5661,9 +5655,9 @@ modem_cdma_load_activation_state (MMIfaceModemCdma *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
qmi_client_dms_get_activation_state (QMI_CLIENT_DMS (client),
|
||||
@@ -6148,9 +6142,9 @@ modem_cdma_activate (MMIfaceModemCdma *_self,
|
||||
CdmaActivationContext *ctx;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -6194,9 +6188,9 @@ modem_cdma_activate_manual (MMIfaceModemCdma *_self,
|
||||
CdmaActivationContext *ctx;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -6333,9 +6327,9 @@ common_setup_cleanup_unsolicited_registration_events (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -6710,9 +6704,9 @@ common_enable_disable_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -6902,9 +6896,9 @@ common_setup_cleanup_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -7053,13 +7047,14 @@ messaging_check_support (MMIfaceModemMessaging *self,
|
||||
gpointer user_data)
|
||||
{
|
||||
GTask *task;
|
||||
MMPortQmi *port;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
|
||||
port = mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self));
|
||||
/* If we have support for the WMS client, messaging is supported */
|
||||
if (!port || !mm_port_qmi_peek_client (port, QMI_SERVICE_WMS, MM_PORT_QMI_FLAG_DEFAULT)) {
|
||||
if (!mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_WMS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
NULL)) {
|
||||
/* Try to fallback to AT support */
|
||||
iface_modem_messaging_parent->check_support (
|
||||
self,
|
||||
@@ -7223,9 +7218,9 @@ messaging_set_default_storage (MMIfaceModemMessaging *_self,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
/* Build routes array and add it as input
|
||||
@@ -7664,9 +7659,9 @@ load_initial_sms_parts (MMIfaceModemMessaging *_self,
|
||||
return iface_modem_messaging_parent->load_initial_sms_parts (_self, storage, callback, user_data);
|
||||
}
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (LoadInitialSmsPartsContext);
|
||||
@@ -7832,9 +7827,9 @@ common_setup_cleanup_messaging_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -7983,9 +7978,9 @@ common_enable_disable_messaging_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessageWmsSetEventReportInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_WMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -8108,7 +8103,6 @@ parent_load_capabilities_ready (MMIfaceModemLocation *self,
|
||||
{
|
||||
MMModemLocationSource sources;
|
||||
GError *error = NULL;
|
||||
MMPortQmi *port;
|
||||
|
||||
sources = iface_modem_location_parent->load_capabilities_finish (self, res, &error);
|
||||
if (error) {
|
||||
@@ -8117,14 +8111,13 @@ parent_load_capabilities_ready (MMIfaceModemLocation *self,
|
||||
return;
|
||||
}
|
||||
|
||||
port = mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self));
|
||||
|
||||
/* Now our own checks */
|
||||
|
||||
/* If we have support for the PDS client, GPS and A-GPS location is supported */
|
||||
if (port && mm_port_qmi_peek_client (port,
|
||||
QMI_SERVICE_PDS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT))
|
||||
if (mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_PDS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
NULL))
|
||||
sources |= (MM_MODEM_LOCATION_SOURCE_GPS_NMEA |
|
||||
MM_MODEM_LOCATION_SOURCE_GPS_RAW |
|
||||
MM_MODEM_LOCATION_SOURCE_AGPS);
|
||||
@@ -8244,9 +8237,9 @@ location_load_supl_server (MMIfaceModemLocation *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessagePdsGetAgpsConfigInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -8364,9 +8357,9 @@ location_set_supl_server (MMIfaceModemLocation *self,
|
||||
guint32 port;
|
||||
GArray *url;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -8601,9 +8594,9 @@ disable_location_gathering (MMIfaceModemLocation *_self,
|
||||
}
|
||||
|
||||
/* Setup context and client */
|
||||
if (!ensure_qmi_client (self,
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_PDS, &client,
|
||||
callback, user_data)) {
|
||||
g_object_unref (task);
|
||||
return;
|
||||
}
|
||||
@@ -9005,7 +8998,10 @@ parent_enable_location_gathering_ready (MMIfaceModemLocation *_self,
|
||||
}
|
||||
|
||||
/* Setup context and client */
|
||||
client = peek_qmi_client (self, QMI_SERVICE_PDS, &error);
|
||||
client = mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_PDS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
&error);
|
||||
if (!client) {
|
||||
g_task_return_error (task, error);
|
||||
g_object_unref (task);
|
||||
@@ -9099,13 +9095,14 @@ oma_check_support (MMIfaceModemOma *self,
|
||||
gpointer user_data)
|
||||
{
|
||||
GTask *task;
|
||||
MMPortQmi *port;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
|
||||
port = mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self));
|
||||
/* If we have support for the OMA client, OMA is supported */
|
||||
if (!port || !mm_port_qmi_peek_client (port, QMI_SERVICE_OMA, MM_PORT_QMI_FLAG_DEFAULT)) {
|
||||
if (!mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
NULL)) {
|
||||
mm_dbg ("OMA capabilities not supported");
|
||||
g_task_return_boolean (task, FALSE);
|
||||
} else {
|
||||
@@ -9187,9 +9184,9 @@ oma_load_features (MMIfaceModemOma *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
qmi_client_oma_get_feature_setting (
|
||||
@@ -9241,9 +9238,9 @@ oma_setup (MMIfaceModemOma *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessageOmaSetFeatureSettingInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
input = qmi_message_oma_set_feature_setting_input_new ();
|
||||
@@ -9311,9 +9308,9 @@ oma_start_client_initiated_session (MMIfaceModemOma *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessageOmaStartSessionInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
/* It's already checked in mm-iface-modem-oma; so just assert if this is not ok */
|
||||
@@ -9378,9 +9375,9 @@ oma_accept_network_initiated_session (MMIfaceModemOma *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessageOmaSendSelectionInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
input = qmi_message_oma_send_selection_input_new ();
|
||||
@@ -9439,9 +9436,9 @@ oma_cancel_session (MMIfaceModemOma *self,
|
||||
{
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
qmi_client_oma_cancel_session (
|
||||
@@ -9520,9 +9517,9 @@ common_setup_cleanup_oma_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -9635,9 +9632,9 @@ common_enable_disable_oma_unsolicited_events (MMBroadbandModemQmi *self,
|
||||
QmiClient *client = NULL;
|
||||
QmiMessageOmaSetEventReportInput *input;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_OMA, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
@@ -10041,9 +10038,9 @@ firmware_check_support (MMIfaceModemFirmware *self,
|
||||
GTask *task;
|
||||
QmiClient *client = NULL;
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (FirmwareCheckSupportContext);
|
||||
@@ -10260,9 +10257,9 @@ firmware_change_current (MMIfaceModemFirmware *_self,
|
||||
guint8 *tmp;
|
||||
gsize tmp_len;
|
||||
|
||||
if (!ensure_qmi_client (self,
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_DMS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (FirmwareChangeCurrentContext);
|
||||
@@ -10370,20 +10367,21 @@ signal_check_support (MMIfaceModemSignal *self,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
MMPortQmi *port;
|
||||
gboolean supported = FALSE;
|
||||
GTask *task;
|
||||
|
||||
port = mm_base_modem_peek_port_qmi (MM_BASE_MODEM (self));
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
|
||||
/* If NAS service is available, assume either signal info or signal strength are supported */
|
||||
if (port)
|
||||
supported = !!mm_port_qmi_peek_client (port, QMI_SERVICE_NAS, MM_PORT_QMI_FLAG_DEFAULT);
|
||||
|
||||
mm_dbg ("Extended signal capabilities %ssupported", supported ? "" : "not ");
|
||||
|
||||
task = g_task_new (self, NULL, callback, user_data);
|
||||
g_task_return_boolean (task, supported);
|
||||
if (!mm_shared_qmi_peek_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS,
|
||||
MM_PORT_QMI_FLAG_DEFAULT,
|
||||
NULL)) {
|
||||
mm_dbg ("Extended signal capabilities not supported");
|
||||
g_task_return_boolean (task, FALSE);
|
||||
} else {
|
||||
mm_dbg ("Extended signal capabilities supported");
|
||||
g_task_return_boolean (task, TRUE);
|
||||
}
|
||||
g_object_unref (task);
|
||||
}
|
||||
|
||||
@@ -10809,9 +10807,9 @@ signal_load_values (MMIfaceModemSignal *self,
|
||||
|
||||
mm_dbg ("loading extended signal information...");
|
||||
|
||||
if (!ensure_qmi_client (MM_BROADBAND_MODEM_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
if (!mm_shared_qmi_ensure_client (MM_SHARED_QMI (self),
|
||||
QMI_SERVICE_NAS, &client,
|
||||
callback, user_data))
|
||||
return;
|
||||
|
||||
ctx = g_slice_new0 (SignalLoadValuesContext);
|
||||
@@ -11442,6 +11440,12 @@ iface_modem_firmware_init (MMIfaceModemFirmware *iface)
|
||||
iface->change_current_finish = firmware_change_current_finish;
|
||||
}
|
||||
|
||||
static void
|
||||
shared_qmi_init (MMSharedQmi *iface)
|
||||
{
|
||||
iface->peek_client = shared_qmi_peek_client;
|
||||
}
|
||||
|
||||
static void
|
||||
mm_broadband_modem_qmi_class_init (MMBroadbandModemQmiClass *klass)
|
||||
{
|
||||
|
84
src/mm-shared-qmi.c
Normal file
84
src/mm-shared-qmi.c
Normal file
@@ -0,0 +1,84 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
#define _LIBMM_INSIDE_MM
|
||||
#include <libmm-glib.h>
|
||||
|
||||
#include <libqmi-glib.h>
|
||||
|
||||
#include "mm-iface-modem.h"
|
||||
#include "mm-shared-qmi.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
QmiClient *
|
||||
mm_shared_qmi_peek_client (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
MMPortQmiFlag flag,
|
||||
GError **error)
|
||||
{
|
||||
g_assert (MM_SHARED_QMI_GET_INTERFACE (self)->peek_client);
|
||||
return MM_SHARED_QMI_GET_INTERFACE (self)->peek_client (self, service, flag, error);
|
||||
}
|
||||
|
||||
gboolean
|
||||
mm_shared_qmi_ensure_client (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
QmiClient **o_client,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data)
|
||||
{
|
||||
GError *error = NULL;
|
||||
QmiClient *client;
|
||||
|
||||
client = mm_shared_qmi_peek_client (self, service, MM_PORT_QMI_FLAG_DEFAULT, &error);
|
||||
if (!client) {
|
||||
g_task_report_error (self, callback, user_data, mm_shared_qmi_ensure_client, error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*o_client = client;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
shared_qmi_init (gpointer g_iface)
|
||||
{
|
||||
}
|
||||
|
||||
GType
|
||||
mm_shared_qmi_get_type (void)
|
||||
{
|
||||
static GType shared_qmi_type = 0;
|
||||
|
||||
if (!G_UNLIKELY (shared_qmi_type)) {
|
||||
static const GTypeInfo info = {
|
||||
sizeof (MMSharedQmi), /* class_size */
|
||||
shared_qmi_init, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
};
|
||||
|
||||
shared_qmi_type = g_type_register_static (G_TYPE_INTERFACE, "MMSharedQmi", &info, 0);
|
||||
g_type_interface_add_prerequisite (shared_qmi_type, MM_TYPE_IFACE_MODEM);
|
||||
}
|
||||
|
||||
return shared_qmi_type;
|
||||
}
|
60
src/mm-shared-qmi.h
Normal file
60
src/mm-shared-qmi.h
Normal file
@@ -0,0 +1,60 @@
|
||||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details:
|
||||
*
|
||||
* Copyright (C) 2018 Aleksander Morgado <aleksander@aleksander.es>
|
||||
*/
|
||||
|
||||
#ifndef MM_SHARED_QMI_H
|
||||
#define MM_SHARED_QMI_H
|
||||
|
||||
#include <glib-object.h>
|
||||
#include <gio/gio.h>
|
||||
|
||||
#define _LIBMM_INSIDE_MM
|
||||
#include <libmm-glib.h>
|
||||
|
||||
#include <libqmi-glib.h>
|
||||
|
||||
#include "mm-iface-modem.h"
|
||||
#include "mm-port-qmi.h"
|
||||
|
||||
#define MM_TYPE_SHARED_QMI (mm_shared_qmi_get_type ())
|
||||
#define MM_SHARED_QMI(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MM_TYPE_SHARED_QMI, MMSharedQmi))
|
||||
#define MM_IS_SHARED_QMI(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MM_TYPE_SHARED_QMI))
|
||||
#define MM_SHARED_QMI_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), MM_TYPE_SHARED_QMI, MMSharedQmi))
|
||||
|
||||
typedef struct _MMSharedQmi MMSharedQmi;
|
||||
|
||||
struct _MMSharedQmi {
|
||||
GTypeInterface g_iface;
|
||||
|
||||
QmiClient * (* peek_client) (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
MMPortQmiFlag flag,
|
||||
GError **error);
|
||||
};
|
||||
|
||||
GType mm_shared_qmi_get_type (void);
|
||||
|
||||
QmiClient *mm_shared_qmi_peek_client (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
MMPortQmiFlag flag,
|
||||
GError **error);
|
||||
|
||||
gboolean mm_shared_qmi_ensure_client (MMSharedQmi *self,
|
||||
QmiService service,
|
||||
QmiClient **o_client,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
#endif /* MM_SHARED_QMI_H */
|
Reference in New Issue
Block a user