aboutsummaryrefslogtreecommitdiff
path: root/src/mm-base-modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mm-base-modem.c')
-rw-r--r--src/mm-base-modem.c13
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;