bluetooth: recognize rfcomm devices
Two hacks here: 1) rfcomm ports don't have an easily accessible driver name, so we just match the parent's subsystem to 'bluetooth' and use that 2) libgudev doesn't seem be be able to get the rfcomm device's device file, which would normally be /dev/rfcommX. Oh well, we don't use the device file yet anyway
This commit is contained in:
@@ -108,16 +108,27 @@ grab_port (MMPluginBase *base,
|
||||
{
|
||||
GUdevDevice *port = NULL, *physdev = NULL;
|
||||
MMModem *modem = NULL;
|
||||
const char *name, *subsys, *devfile, *sysfs_path;
|
||||
const char *name, *subsys, *devfile, *sysfs_path, *driver;
|
||||
guint32 caps;
|
||||
|
||||
port = mm_plugin_base_supports_task_get_port (task);
|
||||
g_assert (port);
|
||||
|
||||
subsys = g_udev_device_get_subsystem (port);
|
||||
name = g_udev_device_get_name (port);
|
||||
|
||||
devfile = g_udev_device_get_device_file (port);
|
||||
if (!devfile) {
|
||||
g_set_error (error, 0, 0, "Could not get port's sysfs file.");
|
||||
return NULL;
|
||||
driver = mm_plugin_base_supports_task_get_driver (task);
|
||||
if (!driver || strcmp (driver, "bluetooth")) {
|
||||
g_set_error (error, 0, 0, "Could not get port's sysfs file.");
|
||||
return NULL;
|
||||
} else {
|
||||
g_message ("%s: (%s/%s) WARNING: missing udev 'device' file",
|
||||
mm_plugin_get_name (MM_PLUGIN (base)),
|
||||
subsys,
|
||||
name);
|
||||
}
|
||||
}
|
||||
|
||||
physdev = mm_plugin_base_supports_task_get_physdev (task);
|
||||
@@ -128,9 +139,6 @@ grab_port (MMPluginBase *base,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
subsys = g_udev_device_get_subsystem (port);
|
||||
name = g_udev_device_get_name (port);
|
||||
|
||||
caps = mm_plugin_base_supports_task_get_probed_capabilities (task);
|
||||
if (!existing) {
|
||||
if (caps & MM_PLUGIN_BASE_PORT_CAP_GSM) {
|
||||
|
||||
Reference in New Issue
Block a user