diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2013-11-19 23:59:57 +0100 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2014-02-13 13:41:03 +0100 |
commit | 0d0f5de161562df82a47bdc387b6ecb62e902719 (patch) | |
tree | f2ddd8f40d9f34f92361fc048a91bee1144958a2 /src | |
parent | 2b46f658799e51d3db0ad61bbde45b3426622827 (diff) |
base-modem: allow looking for a subset of the available ports
Diffstat (limited to 'src')
-rw-r--r-- | src/mm-base-modem.c | 32 | ||||
-rw-r--r-- | src/mm-base-modem.h | 5 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c index 734d0d05..193e7642 100644 --- a/src/mm-base-modem.c +++ b/src/mm-base-modem.c @@ -1030,6 +1030,38 @@ mm_base_modem_get_port_infos (MMBaseModem *self, return port_infos; } +GList * +mm_base_modem_find_ports (MMBaseModem *self, + MMPortSubsys subsys, + MMPortType type, + const gchar *name) +{ + GList *out = NULL; + GHashTableIter iter; + gpointer value; + gpointer key; + + /* We'll iterate the ht of ports, looking for any port which is matches + * the compare function */ + g_hash_table_iter_init (&iter, self->priv->ports); + while (g_hash_table_iter_next (&iter, &key, &value)) { + MMPort *port = MM_PORT (value); + + if (subsys != MM_PORT_SUBSYS_UNKNOWN && mm_port_get_subsys (port) != subsys) + continue; + + if (type != MM_PORT_TYPE_UNKNOWN && mm_port_get_port_type (port) != type) + continue; + + if (name != NULL && !g_str_equal (mm_port_get_device (port), name)) + continue; + + out = g_list_append (out, g_object_ref (port)); + } + + return out; +} + static void initialize_ready (MMBaseModem *self, GAsyncResult *res) diff --git a/src/mm-base-modem.h b/src/mm-base-modem.h index 274694eb..8a25a6c4 100644 --- a/src/mm-base-modem.h +++ b/src/mm-base-modem.h @@ -161,6 +161,11 @@ GList *mm_base_modem_get_data_ports (MMBaseModem *self); MMModemPortInfo *mm_base_modem_get_port_infos (MMBaseModem *self, guint *n_port_infos); +GList *mm_base_modem_find_ports (MMBaseModem *self, + MMPortSubsys subsys, + MMPortType type, + const gchar *name); + void mm_base_modem_set_hotplugged (MMBaseModem *self, gboolean hotplugged); gboolean mm_base_modem_get_hotplugged (MMBaseModem *self); |