kernel-device: add get_interface_number() method
We already have methods to query for interface specific attributes
like class/subclass/protocol, so add a new one for the interface
number, and make sure we use ATTRS{bInterfaceNumber} to load it
always, instead of assuming the ID_USB_INTERFACE_NUM property is set.
This commit is contained in:
@@ -550,6 +550,12 @@ kernel_device_get_sysfs_path (MMKernelDevice *self)
|
||||
return MM_KERNEL_DEVICE_GENERIC (self)->priv->sysfs_path;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -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;
|
||||
|
||||
@@ -402,6 +402,15 @@ kernel_device_get_physdev_product (MMKernelDevice *_self)
|
||||
return (self->priv->physdev ? g_udev_device_get_sysfs_attr (self->priv->physdev, "product") : NULL);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
@@ -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;
|
||||
|
||||
@@ -125,6 +125,14 @@ mm_kernel_device_get_physdev_product (MMKernelDevice *self)
|
||||
NULL);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user