aboutsummaryrefslogtreecommitdiff
path: root/src/mm-broadband-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-broadband-modem.c')
-rw-r--r--src/mm-broadband-modem.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c
index 7c7250e6..952bc30a 100644
--- a/src/mm-broadband-modem.c
+++ b/src/mm-broadband-modem.c
@@ -106,6 +106,7 @@ enum {
PROP_MODEM_3GPP_PS_NETWORK_SUPPORTED,
PROP_MODEM_3GPP_EPS_NETWORK_SUPPORTED,
PROP_MODEM_3GPP_IGNORED_FACILITY_LOCKS,
+ PROP_MODEM_3GPP_INITIAL_EPS_BEARER,
PROP_MODEM_CDMA_CDMA1X_REGISTRATION_STATE,
PROP_MODEM_CDMA_EVDO_REGISTRATION_STATE,
PROP_MODEM_CDMA_CDMA1X_NETWORK_SUPPORTED,
@@ -171,6 +172,7 @@ struct _MMBroadbandModemPrivate {
/* Implementation helpers */
GPtrArray *modem_3gpp_registration_regex;
MMModem3gppFacility modem_3gpp_ignored_facility_locks;
+ MMBaseBearer *modem_3gpp_initial_eps_bearer;
/*<--- Modem 3GPP USSD interface --->*/
/* Properties */
@@ -4870,6 +4872,28 @@ modem_3gpp_run_registration_checks (MMIfaceModem3gpp *self,
}
/*****************************************************************************/
+/* Create initial EPS bearer object */
+
+static MMBaseBearer *
+modem_3gpp_create_initial_eps_bearer (MMIfaceModem3gpp *self,
+ MMBearerProperties *config)
+{
+ MMBaseBearer *bearer;
+
+ /* NOTE: by default we create a bearer object that is CONNECTED but which doesn't
+ * have an associated data interface already set. This is so that upper layers don't
+ * attempt connection through this bearer object. */
+ bearer = g_object_new (MM_TYPE_BASE_BEARER,
+ MM_BASE_BEARER_MODEM, MM_BASE_MODEM (self),
+ MM_BASE_BEARER_CONFIG, config,
+ "bearer-type", MM_BEARER_TYPE_DEFAULT_ATTACH,
+ "connected", TRUE,
+ NULL);
+ mm_base_bearer_export (bearer);
+ return bearer;
+}
+
+/*****************************************************************************/
/* Enable/Disable unsolicited registration events (3GPP interface) */
typedef struct {
@@ -11117,6 +11141,10 @@ set_property (GObject *object,
case PROP_MODEM_3GPP_IGNORED_FACILITY_LOCKS:
self->priv->modem_3gpp_ignored_facility_locks = g_value_get_flags (value);
break;
+ case PROP_MODEM_3GPP_INITIAL_EPS_BEARER:
+ g_clear_object (&self->priv->modem_3gpp_initial_eps_bearer);
+ self->priv->modem_3gpp_initial_eps_bearer = g_value_dup_object (value);
+ break;
case PROP_MODEM_CDMA_CDMA1X_REGISTRATION_STATE:
self->priv->modem_cdma_cdma1x_registration_state = g_value_get_enum (value);
break;
@@ -11234,6 +11262,9 @@ get_property (GObject *object,
case PROP_MODEM_3GPP_IGNORED_FACILITY_LOCKS:
g_value_set_flags (value, self->priv->modem_3gpp_ignored_facility_locks);
break;
+ case PROP_MODEM_3GPP_INITIAL_EPS_BEARER:
+ g_value_set_object (value, self->priv->modem_3gpp_initial_eps_bearer);
+ break;
case PROP_MODEM_CDMA_CDMA1X_REGISTRATION_STATE:
g_value_set_enum (value, self->priv->modem_cdma_cdma1x_registration_state);
break;
@@ -11381,6 +11412,7 @@ dispose (GObject *object)
g_clear_object (&self->priv->modem_simple_dbus_skeleton);
}
+ g_clear_object (&self->priv->modem_3gpp_initial_eps_bearer);
g_clear_object (&self->priv->modem_sim);
g_clear_object (&self->priv->modem_bearer_list);
g_clear_object (&self->priv->modem_messaging_sms_list);
@@ -11489,6 +11521,7 @@ iface_modem_3gpp_init (MMIfaceModem3gpp *iface)
iface->scan_networks_finish = modem_3gpp_scan_networks_finish;
iface->set_eps_ue_mode_operation = modem_3gpp_set_eps_ue_mode_operation;
iface->set_eps_ue_mode_operation_finish = modem_3gpp_set_eps_ue_mode_operation_finish;
+ iface->create_initial_eps_bearer = modem_3gpp_create_initial_eps_bearer;
}
static void
@@ -11745,6 +11778,10 @@ mm_broadband_modem_class_init (MMBroadbandModemClass *klass)
MM_IFACE_MODEM_3GPP_IGNORED_FACILITY_LOCKS);
g_object_class_override_property (object_class,
+ PROP_MODEM_3GPP_INITIAL_EPS_BEARER,
+ MM_IFACE_MODEM_3GPP_INITIAL_EPS_BEARER);
+
+ g_object_class_override_property (object_class,
PROP_MODEM_CDMA_CDMA1X_REGISTRATION_STATE,
MM_IFACE_MODEM_CDMA_CDMA1X_REGISTRATION_STATE);