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.
This commit is contained in:
Dan Williams
2011-06-05 20:21:52 -05:00
parent d81fa43c1d
commit b122938ab5
4 changed files with 11 additions and 19 deletions

View File

@@ -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)
{

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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);