diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-23 17:24:17 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-23 18:56:23 +0200 |
commit | ef300a69b6b859f071849bd7a39653cf03a0e305 (patch) | |
tree | eeedbabffa829ed926c6a9b49953305190d54e6b | |
parent | e9941b1b80f4cc7c237fc9a5b94b5d7a025bc7d3 (diff) |
mbm: receive E2NAP unsolicited messages
-rw-r--r-- | plugins/mbm/mm-broadband-modem-mbm.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/plugins/mbm/mm-broadband-modem-mbm.c b/plugins/mbm/mm-broadband-modem-mbm.c index 1310213c..47eac771 100644 --- a/plugins/mbm/mm-broadband-modem-mbm.c +++ b/plugins/mbm/mm-broadband-modem-mbm.c @@ -57,6 +57,8 @@ struct _MMBroadbandModemMbmPrivate { gboolean have_emrdy; + GRegex *e2nap_regex; + GRegex *e2nap_ext_regex; GRegex *emrdy_regex; GRegex *pacsp_regex; GRegex *estksmenu_regex; @@ -393,6 +395,14 @@ modem_power_up (MMIfaceModem *_self, /* Setup/Cleanup unsolicited events (3GPP interface) */ static void +e2nap_received (MMAtSerialPort *port, + GMatchInfo *info, + MMBroadbandModemMbm *self) +{ + /* Just receive them from now */ +} + +static void erinfo_received (MMAtSerialPort *port, GMatchInfo *info, MMBroadbandModemMbm *self) @@ -454,6 +464,20 @@ set_unsolicited_events_handlers (MMBroadbandModemMbm *self, enable ? (MMAtSerialUnsolicitedMsgFn)erinfo_received : NULL, enable ? self : NULL, NULL); + + /* Connection related */ + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->e2nap_regex, + enable ? (MMAtSerialUnsolicitedMsgFn)e2nap_received : NULL, + enable ? self : NULL, + NULL); + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->e2nap_ext_regex, + enable ? (MMAtSerialUnsolicitedMsgFn)e2nap_received : NULL, + enable ? self : NULL, + NULL); } } @@ -770,6 +794,10 @@ mm_broadband_modem_mbm_init (MMBroadbandModemMbm *self) self->priv->network_mode = MBM_NETWORK_MODE_ANY; /* Prepare regular expressions to setup */ + self->priv->e2nap_regex = g_regex_new ("\\r\\n\\*E2NAP: (\\d)\\r\\n", + G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL); + self->priv->e2nap_ext_regex = g_regex_new ("\\r\\n\\*E2NAP: (\\d),.*\\r\\n", + G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL); self->priv->emrdy_regex = g_regex_new ("\\r\\n\\*EMRDY: \\d\\r\\n", G_REGEX_RAW | G_REGEX_OPTIMIZE, 0, NULL); self->priv->pacsp_regex = g_regex_new ("\\r\\n\\+PACSP(\\d)\\r\\n", @@ -787,6 +815,8 @@ finalize (GObject *object) { MMBroadbandModemMbm *self = MM_BROADBAND_MODEM_MBM (object); + g_regex_unref (self->priv->e2nap_regex); + g_regex_unref (self->priv->e2nap_ext_regex); g_regex_unref (self->priv->emrdy_regex); g_regex_unref (self->priv->pacsp_regex); g_regex_unref (self->priv->estksmenu_regex); |