aboutsummaryrefslogtreecommitdiff
path: root/plugins/mm-plugin-cinterion.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/mm-plugin-cinterion.c')
-rw-r--r--plugins/mm-plugin-cinterion.c62
1 files changed, 33 insertions, 29 deletions
diff --git a/plugins/mm-plugin-cinterion.c b/plugins/mm-plugin-cinterion.c
index 9992350f..825321ca 100644
--- a/plugins/mm-plugin-cinterion.c
+++ b/plugins/mm-plugin-cinterion.c
@@ -48,14 +48,15 @@ get_level_for_capabilities (guint32 capabilities)
}
static gboolean
-check_vendor_cinterion (MMPluginBase *base,
- GUdevDevice *port)
+check_vendor_cinterion (MMPluginBaseSupportsTask *task)
{
+ MMPluginBase *base;
+ GUdevDevice *port;
const char *subsys, *name;
guint16 vendor = 0;
- gchar *probed_vendor;
- gchar *probed_vendor_strdown;
- gboolean probed_vendor_correct;
+
+ base = MM_PLUGIN_BASE (mm_plugin_base_supports_task_get_plugin (task));
+ port = mm_plugin_base_supports_task_get_port (task);
/* Try to get device IDs from udev. Note that it is not an error
* if we can't get them in our case, as we also support serial
@@ -74,23 +75,29 @@ check_vendor_cinterion (MMPluginBase *base,
/* We may get Cinterion modems connected in RS232 port, try to get
* probed Vendor ID string to check */
- if (!mm_plugin_base_get_cached_product_info (base, port, &probed_vendor, NULL) ||
- !probed_vendor)
- return FALSE;
-
- /* Lowercase the vendor string and compare */
- probed_vendor_strdown = g_utf8_strdown (probed_vendor, -1);
- probed_vendor_correct = ((strstr (probed_vendor_strdown, "cinterion") ||
- strstr (probed_vendor_strdown, "siemens")) ?
- TRUE : FALSE);
- g_free (probed_vendor_strdown);
- g_free (probed_vendor);
-
- if (!probed_vendor_correct)
- return FALSE;
-
- mm_dbg ("Cinterion/Siemens RS232 modem detected");
- return TRUE;
+ if (mm_plugin_base_supports_task_propagate_cached (task)) {
+ const gchar *probed_vendor;
+ gchar *probed_vendor_strdown;
+ gboolean probed_vendor_correct = FALSE;
+
+ probed_vendor = mm_plugin_base_supports_task_get_probed_vendor (task);
+ if (!probed_vendor)
+ return FALSE;
+
+ /* Lowercase the vendor string and compare */
+ probed_vendor_strdown = g_utf8_strdown (probed_vendor, -1);
+ if (strstr (probed_vendor_strdown, "cinterion") ||
+ strstr (probed_vendor_strdown, "siemens")) {
+ mm_dbg ("Cinterion/Siemens RS232 modem detected");
+ probed_vendor_correct = TRUE;
+ }
+
+ g_free (probed_vendor_strdown);
+
+ return probed_vendor_correct;
+ }
+
+ return FALSE;
}
static void
@@ -99,15 +106,12 @@ probe_result (MMPluginBase *base,
guint32 capabilities,
gpointer user_data)
{
- GUdevDevice *port;
-
/* Note: the signal contains only capabilities, but we can also query the
* probed vendor and product strings here. */
/* Check vendor */
- port = mm_plugin_base_supports_task_get_port (task);
mm_plugin_base_supports_task_complete (task,
- (check_vendor_cinterion (base, port) ?
+ (check_vendor_cinterion (task) ?
get_level_for_capabilities (capabilities) : 0));
}
@@ -130,8 +134,8 @@ supports_port (MMPluginBase *base,
* Note that we also relaunch a port probe if we got a cached value but no
* capabilities set (used when trying to detect RS232 modems during
* re-scans). */
- if (!mm_plugin_base_get_cached_port_capabilities (base, port, &cached) ||
- !cached) {
+ if (!mm_plugin_base_supports_task_propagate_cached (task) ||
+ !mm_plugin_base_supports_task_get_probed_capabilities (task)) {
/* Kick off a probe */
if (mm_plugin_base_probe_port (base, task, 100000, NULL))
return MM_PLUGIN_SUPPORTS_PORT_IN_PROGRESS;
@@ -140,7 +144,7 @@ supports_port (MMPluginBase *base,
}
/* Check vendor */
- if (!check_vendor_cinterion (base, port))
+ if (!check_vendor_cinterion (task))
return MM_PLUGIN_SUPPORTS_PORT_UNSUPPORTED;
/* Completed! */