aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2011-11-28 13:23:47 +0100
committerAleksander Morgado <aleksander@lanedo.com>2012-03-15 14:14:28 +0100
commit27c973b6b47e5080863acf7e0bdbf15f9f70ec2e (patch)
treeb4d7a2eeaa4bd649565a32b6fb56da1e0fe65c9a
parentc6b69f9a594c016b1cff36364d401d7932e5d658 (diff)
broadband-modem: implement the Modem 3GPP interface
It will only be initialized and exported in DBus if the modem has 3GPP capabilities.
-rw-r--r--src/mm-broadband-modem.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 5a11678d..c0484964 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -28,6 +28,7 @@
#include "mm-at.h"
#include "mm-broadband-modem.h"
#include "mm-iface-modem.h"
+#include "mm-iface-modem-3gpp.h"
#include "mm-sim.h"
#include "mm-log.h"
#include "mm-modem-helpers.h"
@@ -38,13 +39,16 @@
MM_MODEM_CAPABILITY_LTE_ADVANCED)
static void iface_modem_init (MMIfaceModem *iface);
+static void iface_modem_3gpp_init (MMIfaceModem3gpp *iface);
G_DEFINE_TYPE_EXTENDED (MMBroadbandModem, mm_broadband_modem, MM_TYPE_BASE_MODEM, 0,
- G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init));
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM, iface_modem_init)
+ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_3GPP, iface_modem_3gpp_init));
enum {
PROP_0,
PROP_MODEM_DBUS_SKELETON,
+ PROP_MODEM_3GPP_DBUS_SKELETON,
PROP_MODEM_SIM,
PROP_MODEM_STATE,
PROP_MODEM_CURRENT_CAPABILITIES,
@@ -53,6 +57,7 @@ enum {
struct _MMBroadbandModemPrivate {
GObject *modem_dbus_skeleton;
+ GObject *modem_3gpp_dbus_skeleton;
MMSim *modem_sim;
MMModemState modem_state;
MMModemCapability modem_current_capabilities;
@@ -1260,6 +1265,7 @@ initialize_finish (MMBaseModem *self,
}
INTERFACE_INIT_READY_FN (iface_modem, MM_IFACE_MODEM)
+INTERFACE_INIT_READY_FN (iface_modem_3gpp, MM_IFACE_MODEM_3GPP)
static void
initialize_step (InitializeContext *ctx)
@@ -1293,7 +1299,12 @@ initialize_step (InitializeContext *ctx)
case INITIALIZE_STEP_IFACE_3GPP:
if (ctx->self->priv->modem_current_capabilities & MM_MODEM_CAPABILITY_3GPP) {
- /* TODO: expose the 3GPP interfaces */
+ /* Initialize the Modem interface */
+ mm_iface_modem_3gpp_initialize (MM_IFACE_MODEM_3GPP (ctx->self),
+ ctx->port,
+ (GAsyncReadyCallback)iface_modem_3gpp_initialize_ready,
+ ctx);
+ return;
}
/* Fall down to next step */
@@ -1391,6 +1402,9 @@ set_property (GObject *object,
case PROP_MODEM_DBUS_SKELETON:
self->priv->modem_dbus_skeleton = g_value_dup_object (value);
break;
+ case PROP_MODEM_3GPP_DBUS_SKELETON:
+ self->priv->modem_3gpp_dbus_skeleton = g_value_dup_object (value);
+ break;
case PROP_MODEM_SIM:
self->priv->modem_sim = g_value_dup_object (value);
break;
@@ -1418,6 +1432,9 @@ get_property (GObject *object,
case PROP_MODEM_DBUS_SKELETON:
g_value_set_object (value, self->priv->modem_dbus_skeleton);
break;
+ case PROP_MODEM_3GPP_DBUS_SKELETON:
+ g_value_set_object (value, self->priv->modem_3gpp_dbus_skeleton);
+ break;
case PROP_MODEM_SIM:
g_value_set_object (value, self->priv->modem_sim);
break;
@@ -1492,6 +1509,11 @@ iface_modem_init (MMIfaceModem *iface)
}
static void
+iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
+{
+}
+
+static void
mm_broadband_modem_class_init (MMBroadbandModemClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -1516,6 +1538,10 @@ mm_broadband_modem_class_init (MMBroadbandModemClass *klass)
MM_IFACE_MODEM_DBUS_SKELETON);
g_object_class_override_property (object_class,
+ PROP_MODEM_3GPP_DBUS_SKELETON,
+ MM_IFACE_MODEM_3GPP_DBUS_SKELETON);
+
+ g_object_class_override_property (object_class,
PROP_MODEM_SIM,
MM_IFACE_MODEM_SIM);