plugin: if no grab_port() method given, use the default one

This commit is contained in:
Aleksander Morgado
2012-07-11 12:36:42 +02:00
parent bfc3cb27e1
commit b64f52cddc
2 changed files with 18 additions and 8 deletions

View File

@@ -598,13 +598,25 @@ mm_plugin_create_modem (MMPlugin *self,
/* Grab each port */
for (l = port_probes; l; l = g_list_next (l)) {
GError *inner_error = NULL;
MMPortProbe *probe = MM_PORT_PROBE (l->data);
gboolean grabbed;
/* If grabbing a port fails, just warn. We'll decide if the modem is
* valid or not when all ports get organized */
if (!MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self),
modem,
MM_PORT_PROBE (l->data),
&inner_error)) {
if (MM_PLUGIN_GET_CLASS (self)->grab_port)
grabbed = MM_PLUGIN_GET_CLASS (self)->grab_port (MM_PLUGIN (self),
modem,
probe,
&inner_error);
else
grabbed = mm_base_modem_grab_port (modem,
mm_port_probe_get_port_subsys (probe),
mm_port_probe_get_port_name (probe),
mm_port_probe_get_port_type (probe),
MM_AT_PORT_FLAG_NONE,
&inner_error);
if (!grabbed) {
mm_warn ("Could not grab port (%s/%s): '%s'",
mm_port_probe_get_port_subsys (MM_PORT_PROBE (l->data)),
mm_port_probe_get_port_name (MM_PORT_PROBE (l->data)),

View File

@@ -75,10 +75,8 @@ struct _MMPlugin {
struct _MMPluginClass {
GObjectClass parent;
/* Mandatory subclass functions */
/* Plugins need to provide a method to create a modem object given
* a list of port probes */
* a list of port probes (Mandatory) */
MMBaseModem *(*create_modem) (MMPlugin *plugin,
const gchar *sysfs_path,
const gchar *driver,
@@ -88,7 +86,7 @@ struct _MMPluginClass {
GError **error);
/* Plugins need to provide a method to grab independent ports
* identified by port probes */
* identified by port probes (Optional) */
gboolean (*grab_port) (MMPlugin *plugin,
MMBaseModem *modem,
MMPortProbe *probe,