diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2016-10-04 12:53:13 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2016-10-04 12:53:49 +0200 |
commit | 9548192985ad68601b069a1f267fcbdc652a5ba2 (patch) | |
tree | 640008f09e526ad0c1f2a1cf0a2b6cd4249d40db /src/kerneldevice/mm-kernel-device-generic.c | |
parent | 58c955f5f23e874e4f8c2a4b389e46c0775e7f07 (diff) |
kerneldevice,generic: support ID_USB_INTERFACE_NUM and some other udev properties
We need at least ID_USB_INTERFACE_NUM, as some plugins (Huawei, Telit, Option)
require this property when gathering port type hints.
We also add support for other properties (ID_VENDOR_ID, ID_MODEL_ID...) as we
already have those values preloaded.
Diffstat (limited to 'src/kerneldevice/mm-kernel-device-generic.c')
-rw-r--r-- | src/kerneldevice/mm-kernel-device-generic.c | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c index 32ac5ed1..f3ab8b22 100644 --- a/src/kerneldevice/mm-kernel-device-generic.c +++ b/src/kerneldevice/mm-kernel-device-generic.c @@ -127,11 +127,18 @@ preload_sysfs_path (MMKernelDeviceGeneric *self) g_clear_pointer (&self->priv->sysfs_path, g_free); } - if (self->priv->sysfs_path) + if (self->priv->sysfs_path) { + const gchar *devpath; + mm_dbg ("(%s/%s) sysfs path: %s", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties), self->priv->sysfs_path); + devpath = (g_str_has_prefix (self->priv->sysfs_path, "/sys") ? + &self->priv->sysfs_path[4] : + self->priv->sysfs_path); + g_object_set_data_full (G_OBJECT (self), "DEVPATH", g_strdup (devpath), g_free); + } g_free (tmp); } @@ -255,12 +262,13 @@ preload_physdev_vid (MMKernelDeviceGeneric *self) self->priv->physdev_vid = val; } - if (self->priv->physdev_vid) - mm_dbg ("(%s/%s) vid: 0x%04x", + if (self->priv->physdev_vid) { + mm_dbg ("(%s/%s) vid (ID_VENDOR_ID): 0x%04x", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties), self->priv->physdev_vid); - else + g_object_set_data_full (G_OBJECT (self), "ID_VENDOR_ID", g_strdup_printf ("%04x", self->priv->physdev_vid), g_free); + } else mm_dbg ("(%s/%s) vid: unknown", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties)); @@ -278,12 +286,13 @@ preload_physdev_pid (MMKernelDeviceGeneric *self) self->priv->physdev_pid = val; } - if (self->priv->physdev_pid) - mm_dbg ("(%s/%s) pid: 0x%04x", + if (self->priv->physdev_pid) { + mm_dbg ("(%s/%s) pid (ID_MODEL_ID): 0x%04x", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties), self->priv->physdev_pid); - else + g_object_set_data_full (G_OBJECT (self), "ID_MODEL_ID", g_strdup_printf ("%04x", self->priv->physdev_pid), g_free); + } else mm_dbg ("(%s/%s) pid: unknown", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties)); @@ -295,10 +304,16 @@ preload_manufacturer (MMKernelDeviceGeneric *self) if (!self->priv->physdev_manufacturer) self->priv->physdev_manufacturer = (self->priv->physdev_sysfs_path ? read_sysfs_property_as_string (self->priv->physdev_sysfs_path, "manufacturer") : NULL); - mm_dbg ("(%s/%s) manufacturer: %s", - mm_kernel_event_properties_get_subsystem (self->priv->properties), - mm_kernel_event_properties_get_name (self->priv->properties), - self->priv->physdev_manufacturer ? self->priv->physdev_manufacturer : "unknown"); + if (self->priv->physdev_manufacturer) { + mm_dbg ("(%s/%s) manufacturer (ID_VENDOR): %s", + mm_kernel_event_properties_get_subsystem (self->priv->properties), + mm_kernel_event_properties_get_name (self->priv->properties), + self->priv->physdev_manufacturer); + g_object_set_data_full (G_OBJECT (self), "ID_VENDOR", g_strdup (self->priv->physdev_manufacturer), g_free); + } else + mm_dbg ("(%s/%s) manufacturer: unknown", + mm_kernel_event_properties_get_subsystem (self->priv->properties), + mm_kernel_event_properties_get_name (self->priv->properties)); } static void @@ -307,10 +322,17 @@ preload_product (MMKernelDeviceGeneric *self) if (!self->priv->physdev_product) self->priv->physdev_product = (self->priv->physdev_sysfs_path ? read_sysfs_property_as_string (self->priv->physdev_sysfs_path, "product") : NULL); - mm_dbg ("(%s/%s) product: %s", - mm_kernel_event_properties_get_subsystem (self->priv->properties), - mm_kernel_event_properties_get_name (self->priv->properties), - self->priv->physdev_product ? self->priv->physdev_product : "unknown"); + if (self->priv->physdev_product) { + mm_dbg ("(%s/%s) product (ID_MODEL): %s", + mm_kernel_event_properties_get_subsystem (self->priv->properties), + mm_kernel_event_properties_get_name (self->priv->properties), + self->priv->physdev_product); + g_object_set_data_full (G_OBJECT (self), "ID_MODEL", g_strdup (self->priv->physdev_product), g_free); + } else + mm_dbg ("(%s/%s) product: unknown", + mm_kernel_event_properties_get_subsystem (self->priv->properties), + mm_kernel_event_properties_get_name (self->priv->properties)); + } static void @@ -347,10 +369,11 @@ static void preload_interface_number (MMKernelDeviceGeneric *self) { self->priv->interface_number = (self->priv->interface_sysfs_path ? read_sysfs_property_as_hex (self->priv->interface_sysfs_path, "bInterfaceNumber") : 0x00); - mm_dbg ("(%s/%s) interface number: 0x%02x", + mm_dbg ("(%s/%s) interface number (ID_USB_INTERFACE_NUM): 0x%02x", mm_kernel_event_properties_get_subsystem (self->priv->properties), mm_kernel_event_properties_get_name (self->priv->properties), self->priv->interface_number); + g_object_set_data_full (G_OBJECT (self), "ID_USB_INTERFACE_NUM", g_strdup_printf ("%02x", self->priv->interface_number), g_free); } static void |