diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2019-09-17 11:09:27 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2019-10-11 09:24:22 +0000 |
commit | 1f6f9eec4de507c4505981439d5890afc328b3f8 (patch) | |
tree | 7799dc4c8334a8a0867285fff26d4d4aeb099562 | |
parent | c98a1a9dc8e02b78ae23de354f441270dfb394c1 (diff) |
simtech: keep access tech URC regex in private struct
-rw-r--r-- | plugins/simtech/mm-broadband-modem-simtech.c | 34 | ||||
-rw-r--r-- | plugins/simtech/mm-broadband-modem-simtech.h | 2 |
2 files changed, 29 insertions, 7 deletions
diff --git a/plugins/simtech/mm-broadband-modem-simtech.c b/plugins/simtech/mm-broadband-modem-simtech.c index 1a280f71..9b20c152 100644 --- a/plugins/simtech/mm-broadband-modem-simtech.c +++ b/plugins/simtech/mm-broadband-modem-simtech.c @@ -51,6 +51,10 @@ G_DEFINE_TYPE_EXTENDED (MMBroadbandModemSimtech, mm_broadband_modem_simtech, MM_ G_IMPLEMENT_INTERFACE (MM_TYPE_IFACE_MODEM_LOCATION, iface_modem_location_init) G_IMPLEMENT_INTERFACE (MM_TYPE_SHARED_SIMTECH, shared_simtech_init)) +struct _MMBroadbandModemSimtechPrivate { + GRegex *cnsmod_regex; +}; + /*****************************************************************************/ /* Setup/Cleanup unsolicited events (3GPP interface) */ @@ -97,14 +101,10 @@ set_unsolicited_events_handlers (MMBroadbandModemSimtech *self, { MMPortSerialAt *ports[2]; guint i; - GRegex *regex; ports[0] = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)); ports[1] = mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self)); - regex = g_regex_new ("\\r\\n\\+CNSMOD:\\s*(\\d)\\r\\n", - G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL); - /* Enable unsolicited events in given port */ for (i = 0; i < G_N_ELEMENTS (ports); i++) { if (!ports[i]) @@ -113,13 +113,11 @@ set_unsolicited_events_handlers (MMBroadbandModemSimtech *self, /* Access technology related */ mm_port_serial_at_add_unsolicited_msg_handler ( ports[i], - regex, + self->priv->cnsmod_regex, enable ? (MMPortSerialAtUnsolicitedMsgFn)simtech_tech_changed : NULL, enable ? self : NULL, NULL); } - - g_regex_unref (regex); } static gboolean @@ -833,6 +831,23 @@ mm_broadband_modem_simtech_new (const gchar *device, static void mm_broadband_modem_simtech_init (MMBroadbandModemSimtech *self) { + /* Initialize private data */ + self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, + MM_TYPE_BROADBAND_MODEM_SIMTECH, + MMBroadbandModemSimtechPrivate); + + self->priv->cnsmod_regex = g_regex_new ("\\r\\n\\+CNSMOD:\\s*(\\d)\\r\\n", + G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL); +} + +static void +finalize (GObject *object) +{ + MMBroadbandModemSimtech *self = MM_BROADBAND_MODEM_SIMTECH (object); + + g_regex_unref (self->priv->cnsmod_regex); + + G_OBJECT_CLASS (mm_broadband_modem_simtech_parent_class)->finalize (object); } static void @@ -894,7 +909,12 @@ shared_simtech_init (MMSharedSimtech *iface) static void mm_broadband_modem_simtech_class_init (MMBroadbandModemSimtechClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); MMBroadbandModemClass *broadband_modem_class = MM_BROADBAND_MODEM_CLASS (klass); + g_type_class_add_private (object_class, sizeof (MMBroadbandModemSimtechPrivate)); + + object_class->finalize = finalize; + broadband_modem_class->setup_ports = setup_ports; } diff --git a/plugins/simtech/mm-broadband-modem-simtech.h b/plugins/simtech/mm-broadband-modem-simtech.h index 6ee32b1b..a2b57fea 100644 --- a/plugins/simtech/mm-broadband-modem-simtech.h +++ b/plugins/simtech/mm-broadband-modem-simtech.h @@ -29,9 +29,11 @@ typedef struct _MMBroadbandModemSimtech MMBroadbandModemSimtech; typedef struct _MMBroadbandModemSimtechClass MMBroadbandModemSimtechClass; +typedef struct _MMBroadbandModemSimtechPrivate MMBroadbandModemSimtechPrivate; struct _MMBroadbandModemSimtech { MMBroadbandModem parent; + MMBroadbandModemSimtechPrivate *priv; }; struct _MMBroadbandModemSimtechClass{ |