diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-17 21:57:34 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-02-18 15:41:26 +0100 |
commit | b6402a4e2158adf28dad2cd6b2dcf8b4966be2d0 (patch) | |
tree | 8461d8913191ac1c031cd8d5f454f1fdb7e25ecc /src/mm-base-modem.c | |
parent | 15d34d56fd3277b23c5f477d9aab257cb0bc10a7 (diff) |
bearer,3gpp: dial operation specifies which data port to use
Instead of deciding in advance which data port to use, we let the dialling
operation gather it. For the generic dialling logic, ATD-based, always an
'AT' port will be used as data port, even if we grabbed a 'net' port. Those
plugins that can work with 'net' ports will grab the specific 'net' port
themselves.
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r-- | src/mm-base-modem.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index 86ff8123..7407682d 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -699,16 +699,18 @@ mm_base_modem_peek_port_qmi_for_data (MMBaseModem *self, #endif /* WITH_QMI */ MMPort * -mm_base_modem_get_best_data_port (MMBaseModem *self) +mm_base_modem_get_best_data_port (MMBaseModem *self, + MMPortType type) { MMPort *port; - port = mm_base_modem_peek_best_data_port (self); + port = mm_base_modem_peek_best_data_port (self, type); return (port ? g_object_ref (port) : NULL); } MMPort * -mm_base_modem_peek_best_data_port (MMBaseModem *self) +mm_base_modem_peek_best_data_port (MMBaseModem *self, + MMPortType type) { GList *l; @@ -716,8 +718,11 @@ mm_base_modem_peek_best_data_port (MMBaseModem *self) /* Return first not-connected data port */ for (l = self->priv->data; l; l = g_list_next (l)) { - if (!mm_port_get_connected ((MMPort *)l->data)) + if (!mm_port_get_connected ((MMPort *)l->data) && + (mm_port_get_port_type ((MMPort *)l->data) == type || + type == MM_PORT_TYPE_UNKNOWN)) { return (MMPort *)l->data; + } } return NULL; |