aboutsummaryrefslogtreecommitdiff
path: root/src/kerneldevice/mm-kernel-device-generic.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-12-27 22:24:24 +0100
committerAleksander Morgado <aleksander@aleksander.es>2020-03-03 17:23:07 +0000
commit9ef84d2cff27e99c2e805d636528d1740bc4985a (patch)
treee4784f2904a6e3c94cfc87256c11d75d0b0a63bf /src/kerneldevice/mm-kernel-device-generic.c
parent5da33df35b3266f8905578c56a43a56d79726602 (diff)
kerneldevice: support reading interface 'description'
Diffstat (limited to 'src/kerneldevice/mm-kernel-device-generic.c')
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c93
1 files changed, 57 insertions, 36 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index c32831d7..b6e4e2df 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -59,6 +59,7 @@ struct _MMKernelDeviceGenericPrivate {
guint8 interface_subclass;
guint8 interface_protocol;
guint8 interface_number;
+ gchar *interface_description;
gchar *physdev_sysfs_path;
guint16 physdev_vid;
guint16 physdev_pid;
@@ -425,22 +426,33 @@ preload_interface_number (MMKernelDeviceGeneric *self)
}
static void
+preload_interface_description (MMKernelDeviceGeneric *self)
+{
+ self->priv->interface_description = (self->priv->interface_sysfs_path ? read_sysfs_property_as_string (self->priv->interface_sysfs_path, "interface") : NULL);
+ mm_dbg ("(%s/%s) interface description: %s",
+ mm_kernel_event_properties_get_subsystem (self->priv->properties),
+ mm_kernel_event_properties_get_name (self->priv->properties),
+ self->priv->interface_description ? self->priv->interface_description : "unknown");
+}
+
+static void
preload_contents (MMKernelDeviceGeneric *self)
{
- preload_sysfs_path (self);
- preload_interface_sysfs_path (self);
- preload_interface_class (self);
- preload_interface_subclass (self);
- preload_interface_protocol (self);
- preload_interface_number (self);
- preload_physdev_sysfs_path (self);
- preload_manufacturer (self);
- preload_product (self);
- preload_driver (self);
- preload_physdev_vid (self);
- preload_physdev_pid (self);
- preload_physdev_revision (self);
- preload_physdev_subsystem (self);
+ preload_sysfs_path (self);
+ preload_interface_sysfs_path (self);
+ preload_interface_class (self);
+ preload_interface_subclass (self);
+ preload_interface_protocol (self);
+ preload_interface_number (self);
+ preload_interface_description (self);
+ preload_physdev_sysfs_path (self);
+ preload_manufacturer (self);
+ preload_product (self);
+ preload_driver (self);
+ preload_physdev_vid (self);
+ preload_physdev_pid (self);
+ preload_physdev_revision (self);
+ preload_physdev_subsystem (self);
}
/*****************************************************************************/
@@ -502,6 +514,14 @@ kernel_device_get_interface_sysfs_path (MMKernelDevice *self)
}
static const gchar *
+kernel_device_get_interface_description (MMKernelDevice *self)
+{
+ g_return_val_if_fail (MM_IS_KERNEL_DEVICE_GENERIC (self), NULL);
+
+ return MM_KERNEL_DEVICE_GENERIC (self)->priv->interface_description;
+}
+
+static const gchar *
kernel_device_get_physdev_uid (MMKernelDevice *self)
{
const gchar *uid;
@@ -1115,28 +1135,29 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
object_class->get_property = get_property;
object_class->set_property = set_property;
- kernel_device_class->get_subsystem = kernel_device_get_subsystem;
- kernel_device_class->get_name = kernel_device_get_name;
- kernel_device_class->get_driver = kernel_device_get_driver;
- kernel_device_class->get_sysfs_path = kernel_device_get_sysfs_path;
- kernel_device_class->get_physdev_uid = kernel_device_get_physdev_uid;
- kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
- kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
- kernel_device_class->get_physdev_revision = kernel_device_get_physdev_revision;
- kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
- kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
- kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
- kernel_device_class->get_physdev_product = kernel_device_get_physdev_product;
- kernel_device_class->get_interface_class = kernel_device_get_interface_class;
- kernel_device_class->get_interface_subclass = kernel_device_get_interface_subclass;
- kernel_device_class->get_interface_protocol = kernel_device_get_interface_protocol;
- kernel_device_class->get_interface_sysfs_path = kernel_device_get_interface_sysfs_path;
- kernel_device_class->cmp = kernel_device_cmp;
- kernel_device_class->has_property = kernel_device_has_property;
- kernel_device_class->get_property = kernel_device_get_property;
- kernel_device_class->get_property_as_boolean = kernel_device_get_property_as_boolean;
- kernel_device_class->get_property_as_int = kernel_device_get_property_as_int;
- kernel_device_class->get_property_as_int_hex = kernel_device_get_property_as_int_hex;
+ kernel_device_class->get_subsystem = kernel_device_get_subsystem;
+ kernel_device_class->get_name = kernel_device_get_name;
+ kernel_device_class->get_driver = kernel_device_get_driver;
+ kernel_device_class->get_sysfs_path = kernel_device_get_sysfs_path;
+ kernel_device_class->get_physdev_uid = kernel_device_get_physdev_uid;
+ kernel_device_class->get_physdev_vid = kernel_device_get_physdev_vid;
+ kernel_device_class->get_physdev_pid = kernel_device_get_physdev_pid;
+ kernel_device_class->get_physdev_revision = kernel_device_get_physdev_revision;
+ kernel_device_class->get_physdev_sysfs_path = kernel_device_get_physdev_sysfs_path;
+ kernel_device_class->get_physdev_subsystem = kernel_device_get_physdev_subsystem;
+ kernel_device_class->get_physdev_manufacturer = kernel_device_get_physdev_manufacturer;
+ kernel_device_class->get_physdev_product = kernel_device_get_physdev_product;
+ kernel_device_class->get_interface_class = kernel_device_get_interface_class;
+ kernel_device_class->get_interface_subclass = kernel_device_get_interface_subclass;
+ kernel_device_class->get_interface_protocol = kernel_device_get_interface_protocol;
+ kernel_device_class->get_interface_sysfs_path = kernel_device_get_interface_sysfs_path;
+ kernel_device_class->get_interface_description = kernel_device_get_interface_description;
+ kernel_device_class->cmp = kernel_device_cmp;
+ kernel_device_class->has_property = kernel_device_has_property;
+ kernel_device_class->get_property = kernel_device_get_property;
+ kernel_device_class->get_property_as_boolean = kernel_device_get_property_as_boolean;
+ kernel_device_class->get_property_as_int = kernel_device_get_property_as_int;
+ kernel_device_class->get_property_as_int_hex = kernel_device_get_property_as_int_hex;
/* Device-wide properties are stored per-port in the generic backend */
kernel_device_class->has_global_property = kernel_device_has_property;