diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2018-02-06 13:38:39 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2018-02-06 13:40:21 +0100 |
commit | 357b186134641927b1ce30c960ae95555ae7ecb5 (patch) | |
tree | 7f98f6cb7c9c671af5405a8f43f8c5a18f1ea3f1 | |
parent | b0b405858f33584a7d9f43de1625255d73183b60 (diff) |
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'
-rw-r--r-- | plugins/ublox/mm-broadband-modem-ublox.c | 32 |
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; } |