aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/kerneldevice/mm-kernel-device-generic.c7
-rw-r--r--src/kerneldevice/mm-kernel-device-udev.c10
-rw-r--r--src/kerneldevice/mm-kernel-device.c8
-rw-r--r--src/kerneldevice/mm-kernel-device.h2
4 files changed, 27 insertions, 0 deletions
diff --git a/src/kerneldevice/mm-kernel-device-generic.c b/src/kerneldevice/mm-kernel-device-generic.c
index b1a3bf97..d6798c6f 100644
--- a/src/kerneldevice/mm-kernel-device-generic.c
+++ b/src/kerneldevice/mm-kernel-device-generic.c
@@ -551,6 +551,12 @@ kernel_device_get_sysfs_path (MMKernelDevice *self)
}
static gint
+kernel_device_get_interface_number (MMKernelDevice *self)
+{
+ return (gint) MM_KERNEL_DEVICE_GENERIC (self)->priv->interface_number;
+}
+
+static gint
kernel_device_get_interface_class (MMKernelDevice *self)
{
return (gint) MM_KERNEL_DEVICE_GENERIC (self)->priv->interface_class;
@@ -1172,6 +1178,7 @@ mm_kernel_device_generic_class_init (MMKernelDeviceGenericClass *klass)
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_number = kernel_device_get_interface_number;
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;
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c
index f75104bd..237d7201 100644
--- a/src/kerneldevice/mm-kernel-device-udev.c
+++ b/src/kerneldevice/mm-kernel-device-udev.c
@@ -403,6 +403,15 @@ kernel_device_get_physdev_product (MMKernelDevice *_self)
}
static gint
+kernel_device_get_interface_number (MMKernelDevice *_self)
+{
+ MMKernelDeviceUdev *self;
+
+ self = MM_KERNEL_DEVICE_UDEV (_self);
+ return (self->priv->interface ? (gint) udev_device_get_sysfs_attr_as_hex (self->priv->interface, "bInterfaceNumber") : -1);
+}
+
+static gint
kernel_device_get_interface_class (MMKernelDevice *_self)
{
MMKernelDeviceUdev *self;
@@ -743,6 +752,7 @@ mm_kernel_device_udev_class_init (MMKernelDeviceUdevClass *klass)
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_number = kernel_device_get_interface_number;
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;
diff --git a/src/kerneldevice/mm-kernel-device.c b/src/kerneldevice/mm-kernel-device.c
index 464a3800..86251bcd 100644
--- a/src/kerneldevice/mm-kernel-device.c
+++ b/src/kerneldevice/mm-kernel-device.c
@@ -126,6 +126,14 @@ mm_kernel_device_get_physdev_product (MMKernelDevice *self)
}
gint
+mm_kernel_device_get_interface_number (MMKernelDevice *self)
+{
+ return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_interface_number ?
+ MM_KERNEL_DEVICE_GET_CLASS (self)->get_interface_number (self) :
+ -1);
+}
+
+gint
mm_kernel_device_get_interface_class (MMKernelDevice *self)
{
return (MM_KERNEL_DEVICE_GET_CLASS (self)->get_interface_class ?
diff --git a/src/kerneldevice/mm-kernel-device.h b/src/kerneldevice/mm-kernel-device.h
index 45b270d5..f1d869be 100644
--- a/src/kerneldevice/mm-kernel-device.h
+++ b/src/kerneldevice/mm-kernel-device.h
@@ -41,6 +41,7 @@ struct _MMKernelDeviceClass {
const gchar * (* get_driver) (MMKernelDevice *self);
const gchar * (* get_sysfs_path) (MMKernelDevice *self);
+ gint (* get_interface_number) (MMKernelDevice *self);
gint (* get_interface_class) (MMKernelDevice *self);
gint (* get_interface_subclass) (MMKernelDevice *self);
gint (* get_interface_protocol) (MMKernelDevice *self);
@@ -74,6 +75,7 @@ const gchar *mm_kernel_device_get_name (MMKernelDevice *self);
const gchar *mm_kernel_device_get_driver (MMKernelDevice *self);
const gchar *mm_kernel_device_get_sysfs_path (MMKernelDevice *self);
+gint mm_kernel_device_get_interface_number (MMKernelDevice *self);
gint mm_kernel_device_get_interface_class (MMKernelDevice *self);
gint mm_kernel_device_get_interface_subclass (MMKernelDevice *self);
gint mm_kernel_device_get_interface_protocol (MMKernelDevice *self);