diff options
author | Dan Williams <dcbw@redhat.com> | 2011-06-05 20:21:52 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2011-06-05 20:58:13 -0500 |
commit | b122938ab5fb6ff5be1d4575abb0ca81d2885ce3 (patch) | |
tree | 000c5147db0201ce8770bd6a821ef73c1ae52d51 | |
parent | d81fa43c1d721ed123401f4a89fd7b3771ab4463 (diff) |
core: allow plugins to stop probing and not support a modem
Previously plugins could only stop probing, *or* stop probing and
indicate support for a device. For the Alcatel X200/X060s debacle
we need to stop probing and indicate that the plugin does not
support the device at all.
-rw-r--r-- | plugins/mm-plugin-huawei.c | 4 | ||||
-rw-r--r-- | plugins/mm-plugin-zte.c | 2 | ||||
-rw-r--r-- | src/mm-plugin-base.c | 13 | ||||
-rw-r--r-- | src/mm-plugin-base.h | 11 |
4 files changed, 11 insertions, 19 deletions
diff --git a/plugins/mm-plugin-huawei.c b/plugins/mm-plugin-huawei.c index 32edfde7..aef3c524 100644 --- a/plugins/mm-plugin-huawei.c +++ b/plugins/mm-plugin-huawei.c @@ -79,7 +79,7 @@ getportmode_response_cb (MMPluginBaseSupportsTask *task, GString *response, GError *error, guint32 tries, - gboolean *out_fail, + gboolean *out_stop, guint32 *out_level, gpointer user_data) { @@ -116,7 +116,7 @@ curc_response_cb (MMPluginBaseSupportsTask *task, GString *response, GError *error, guint32 tries, - gboolean *out_fail, + gboolean *out_stop, guint32 *out_level, gpointer user_data) { diff --git a/plugins/mm-plugin-zte.c b/plugins/mm-plugin-zte.c index 37033e01..9c390a37 100644 --- a/plugins/mm-plugin-zte.c +++ b/plugins/mm-plugin-zte.c @@ -66,7 +66,7 @@ custom_init_response_cb (MMPluginBaseSupportsTask *task, GString *response, GError *error, guint32 tries, - gboolean *out_fail, + gboolean *out_stop, guint32 *out_level, gpointer user_data) { diff --git a/src/mm-plugin-base.c b/src/mm-plugin-base.c index 336f78ca..8d033a72 100644 --- a/src/mm-plugin-base.c +++ b/src/mm-plugin-base.c @@ -757,20 +757,13 @@ custom_init_response (MMAtSerialPort *port, MMPluginBaseSupportsTaskPrivate *task_priv = MM_PLUGIN_BASE_SUPPORTS_TASK_GET_PRIVATE (task); CustomInit *custom = task_priv->cur_custom->data; gboolean retry = FALSE; - gboolean fail = FALSE; + gboolean stop = FALSE; guint32 level = 0; custom->tries++; - retry = custom->callback (task, response, error, custom->tries, &fail, &level, custom->callback_data); + retry = custom->callback (task, response, error, custom->tries, &stop, &level, custom->callback_data); - if (fail) { - /* Plugin said to fail the probe */ - probe_complete (task); - return; - } - - if (level > 0) { - /* Plugin supports the modem */ + if (stop) { task_priv->probed_caps = level; probe_complete (task); return; diff --git a/src/mm-plugin-base.h b/src/mm-plugin-base.h index a5440a51..799f6813 100644 --- a/src/mm-plugin-base.h +++ b/src/mm-plugin-base.h @@ -60,20 +60,19 @@ GType mm_plugin_base_supports_task_get_type (void); * response: the response string from the modem, if no error occurred * error: the error returned by the modem or serial stack, if any * tries: number of times the custom init command has been sent to the modem - * out_fail: on return, TRUE means fail the probe and close the port - * out_level: if the custom init command has determined that the modem is - * supported, return the support level here, and probing will cease + * out_stop: on return, TRUE means stop the probe and close the port + * out_level: on return, if out_stop is TRUE this should indicate the plugin's + * support level for this modem * * Function should return TRUE if the custom init command should be retried, * FALSE if it should not. If FALSE is returned, generic probing will continue - * if out_fail == FALSE and out_level == 0, otherwise if out_fail == FALSE - * probing will stop, or if out_level > 0 the port will be claimed. + * if out_stop == FALSE. */ typedef gboolean (*MMBaseSupportsTaskCustomInitResultFunc) (MMPluginBaseSupportsTask *task, GString *response, GError *error, guint32 tries, - gboolean *out_fail, + gboolean *out_stop, guint32 *out_level, gpointer user_data); |