ublox: ignore +PBREADY URCs
We don't want them to get in the way of our initialization phase:
/org/freedesktop/ModemManager1/Modem/0 (device id 'c49ed59c4a411e923307330d3e1d82582cbfac37')
-------------------------
Hardware | manufacturer: 'u-blox'
| model: 'unknown'
| revision: 'TOBY-L4906
| +PBREADY
| 40.19_ENG0003'
| H/W revision: 'unknown'
| supported: 'gsm-umts, lte'
| current: 'gsm-umts, lte'
This commit is contained in:
@@ -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
|
||||
@@ -1084,6 +1096,16 @@ iface_modem_init (MMIfaceModem *iface)
|
||||
iface->set_current_bands_finish = common_set_current_modes_bands_finish;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user