diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-10-30 15:48:30 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-10-30 15:48:30 +0100 |
commit | 6992e3b32d33d7d2ff340b7f9c26f99f91099ad3 (patch) | |
tree | dba4074784a11e28a833897e73537ddd6202afc6 | |
parent | 0ca6ae1b4b142dfa947bec45c833388f86cc9709 (diff) |
huawei: reset ignored unsolicited message handlers only once
-rw-r--r-- | plugins/huawei/mm-broadband-modem-huawei.c | 56 |
1 files changed, 36 insertions, 20 deletions
diff --git a/plugins/huawei/mm-broadband-modem-huawei.c b/plugins/huawei/mm-broadband-modem-huawei.c index 56adba53..32ef4ee8 100644 --- a/plugins/huawei/mm-broadband-modem-huawei.c +++ b/plugins/huawei/mm-broadband-modem-huawei.c @@ -813,26 +813,6 @@ set_3gpp_unsolicited_events_handlers (MMBroadbandModemHuawei *self, enable ? (MMAtSerialUnsolicitedMsgFn)huawei_status_changed : NULL, enable ? self : NULL, NULL); - - /* Other unsolicited events to always ignore */ - if (!enable) { - mm_at_serial_port_add_unsolicited_msg_handler ( - ports[i], - self->priv->boot_regex, - NULL, NULL, NULL); - mm_at_serial_port_add_unsolicited_msg_handler ( - ports[i], - self->priv->csnr_regex, - NULL, NULL, NULL); - mm_at_serial_port_add_unsolicited_msg_handler ( - ports[i], - self->priv->simst_regex, - NULL, NULL, NULL); - mm_at_serial_port_add_unsolicited_msg_handler ( - ports[i], - self->priv->srvst_regex, - NULL, NULL, NULL); - } } } @@ -1521,11 +1501,47 @@ get_detailed_registration_state (MMIfaceModemCdma *self, /* Setup ports (Broadband modem class) */ static void +set_ignored_unsolicited_events_handlers (MMBroadbandModemHuawei *self) +{ + MMAtSerialPort *ports[2]; + guint i; + + ports[0] = mm_base_modem_peek_port_primary (MM_BASE_MODEM (self)); + ports[1] = mm_base_modem_peek_port_secondary (MM_BASE_MODEM (self)); + + /* Enable unsolicited events in given port */ + for (i = 0; i < 2; i++) { + if (!ports[i]) + continue; + + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->boot_regex, + NULL, NULL, NULL); + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->csnr_regex, + NULL, NULL, NULL); + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->simst_regex, + NULL, NULL, NULL); + mm_at_serial_port_add_unsolicited_msg_handler ( + ports[i], + self->priv->srvst_regex, + NULL, NULL, NULL); + } +} + +static void setup_ports (MMBroadbandModem *self) { /* Call parent's setup ports first always */ MM_BROADBAND_MODEM_CLASS (mm_broadband_modem_huawei_parent_class)->setup_ports (self); + /* Unsolicited messages to always ignore */ + set_ignored_unsolicited_events_handlers (MM_BROADBAND_MODEM_HUAWEI (self)); + /* Now reset the unsolicited messages we'll handle when enabled */ set_3gpp_unsolicited_events_handlers (MM_BROADBAND_MODEM_HUAWEI (self), FALSE); set_cdma_unsolicited_events_handlers (MM_BROADBAND_MODEM_HUAWEI (self), FALSE); |