aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/ublox/mm-broadband-modem-ublox.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/plugins/ublox/mm-broadband-modem-ublox.c b/plugins/ublox/mm-broadband-modem-ublox.c
index 0d4dd590..56441d77 100644
--- a/plugins/ublox/mm-broadband-modem-ublox.c
+++ b/plugins/ublox/mm-broadband-modem-ublox.c
@@ -59,6 +59,9 @@ struct _MMBroadbandModemUbloxPrivate {
/* Band management */
FeatureSupport uact;
+
+ /* Regex to ignore */
+ GRegex *pbready_regex;
};
/*****************************************************************************/
@@ -1000,13 +1003,14 @@ modem_create_bearer (MMIfaceModem *self,
/* Setup ports (Broadband modem class) */
static void
-setup_ports (MMBroadbandModem *self)
+setup_ports (MMBroadbandModem *_self)
{
- MMPortSerialAt *ports[2];
- guint i;
+ MMBroadbandModemUblox *self = MM_BROADBAND_MODEM_UBLOX (_self);
+ MMPortSerialAt *ports[2];
+ guint i;
/* Call parent's setup ports first always */
- MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_ublox_parent_class)->setup_ports (self);
+ MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_ublox_parent_class)->setup_ports (_self);
ports[0] = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self));
ports[1] = mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self));
@@ -1019,6 +1023,11 @@ setup_ports (MMBroadbandModem *self)
g_object_set (ports[i],
MM_PORT_SERIAL_SEND_DELAY, (guint64) 0,
NULL);
+
+ mm_port_serial_at_add_unsolicited_msg_handler (
+ ports[i],
+ self->priv->pbready_regex,
+ NULL, NULL, NULL);
}
}
@@ -1051,6 +1060,9 @@ mm_broadband_modem_ublox_init (MMBroadbandModemUblox *self)
self->priv->mode = MM_UBLOX_NETWORKING_MODE_UNKNOWN;
self->priv->any_allowed = MM_MODEM_MODE_NONE;
self->priv->uact = FEATURE_SUPPORT_UNKNOWN;
+
+ self->priv->pbready_regex = g_regex_new ("\\r\\n\\+PBREADY\\r\\n",
+ G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL);
}
static void
@@ -1085,6 +1097,16 @@ iface_modem_init (MMIfaceModem *iface)
}
static void
+finalize (GObject *object)
+{
+ MMBroadbandModemUblox *self = MM_BROADBAND_MODEM_UBLOX (object);
+
+ g_regex_unref (self->priv->pbready_regex);
+
+ G_OBJECT_CLASS (mm_broadband_modem_ublox_parent_class)->finalize (object);
+}
+
+static void
mm_broadband_modem_ublox_class_init (MMBroadbandModemUbloxClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -1092,5 +1114,7 @@ mm_broadband_modem_ublox_class_init (MMBroadbandModemUbloxClass *klass)
g_type_class_add_private (object_class, sizeof (MMBroadbandModemUbloxPrivate));
+ object_class->finalize = finalize;
+
broadband_modem_class->setup_ports = setup_ports;
}