broadband-modem-qmi: check support for OMA capabilities
This commit is contained in:
@@ -36,6 +36,7 @@
|
|||||||
#include "mm-iface-modem-location.h"
|
#include "mm-iface-modem-location.h"
|
||||||
#include "mm-iface-modem-firmware.h"
|
#include "mm-iface-modem-firmware.h"
|
||||||
#include "mm-iface-modem-signal.h"
|
#include "mm-iface-modem-signal.h"
|
||||||
|
#include "mm-iface-modem-oma.h"
|
||||||
#include "mm-sim-qmi.h"
|
#include "mm-sim-qmi.h"
|
||||||
#include "mm-bearer-qmi.h"
|
#include "mm-bearer-qmi.h"
|
||||||
#include "mm-sms-qmi.h"
|
#include "mm-sms-qmi.h"
|
||||||
@@ -46,6 +47,7 @@ static void iface_modem_3gpp_ussd_init (MMIfaceModem3gppUssd *iface);
|
|||||||
static void iface_modem_cdma_init (MMIfaceModemCdma *iface);
|
static void iface_modem_cdma_init (MMIfaceModemCdma *iface);
|
||||||
static void iface_modem_messaging_init (MMIfaceModemMessaging *iface);
|
static void iface_modem_messaging_init (MMIfaceModemMessaging *iface);
|
||||||
static void iface_modem_location_init (MMIfaceModemLocation *iface);
|
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_firmware_init (MMIfaceModemFirmware *iface);
|
||||||
static void iface_modem_signal_init (MMIfaceModemSignal *iface);
|
static void iface_modem_signal_init (MMIfaceModemSignal *iface);
|
||||||
|
|
||||||
@@ -59,8 +61,9 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemQmi, mm_broadband_modem_qmi, MM_TYPE_BRO
|
|||||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_CDMA, iface_modem_cdma_init)
|
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_CDMA, iface_modem_cdma_init)
|
||||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_MESSAGING, iface_modem_messaging_init)
|
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_MESSAGING, iface_modem_messaging_init)
|
||||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init)
|
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init)
|
||||||
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_FIRMWARE, iface_modem_firmware_init)
|
G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_SIGNAL, iface_modem_signal_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))
|
||||||
|
|
||||||
struct _MMBroadbandModemQmiPrivate {
|
struct _MMBroadbandModemQmiPrivate {
|
||||||
/* Cached device IDs, retrieved by the modem interface when loading device
|
/* Cached device IDs, retrieved by the modem interface when loading device
|
||||||
@@ -7989,6 +7992,45 @@ enable_location_gathering (MMIfaceModemLocation *self,
|
|||||||
ctx);
|
ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/* Check support (OMA interface) */
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
oma_check_support_finish (MMIfaceModemOma *self,
|
||||||
|
GAsyncResult *res,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
/* no error expected here */
|
||||||
|
return g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (res));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
oma_check_support (MMIfaceModemOma *self,
|
||||||
|
GAsyncReadyCallback callback,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GSimpleAsyncResult *result;
|
||||||
|
MMQmiPort *port;
|
||||||
|
|
||||||
|
result = g_simple_async_result_new (G_OBJECT (self),
|
||||||
|
callback,
|
||||||
|
user_data,
|
||||||
|
oma_check_support);
|
||||||
|
|
||||||
|
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_qmi_port_peek_client (port, QMI_SERVICE_OMA, MM_QMI_PORT_FLAG_DEFAULT)) {
|
||||||
|
mm_dbg ("OMA capabilities not supported");
|
||||||
|
g_simple_async_result_set_op_res_gboolean (result, FALSE);
|
||||||
|
} else {
|
||||||
|
mm_dbg ("OMA capabilities supported");
|
||||||
|
g_simple_async_result_set_op_res_gboolean (result, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_simple_async_result_complete_in_idle (result);
|
||||||
|
g_object_unref (result);
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Check firmware support (Firmware interface) */
|
/* Check firmware support (Firmware interface) */
|
||||||
|
|
||||||
@@ -9603,6 +9645,13 @@ iface_modem_signal_init (MMIfaceModemSignal *iface)
|
|||||||
iface->load_values_finish = signal_load_values_finish;
|
iface->load_values_finish = signal_load_values_finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
iface_modem_oma_init (MMIfaceModemOma *iface)
|
||||||
|
{
|
||||||
|
iface->check_support = oma_check_support;
|
||||||
|
iface->check_support_finish = oma_check_support_finish;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
iface_modem_firmware_init (MMIfaceModemFirmware *iface)
|
iface_modem_firmware_init (MMIfaceModemFirmware *iface)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user