add class only match
This commit is contained in:
@@ -196,21 +196,11 @@ const struct usbh_class_driver hid_class_driver = {
|
|||||||
.disconnect = usbh_hid_disconnect
|
.disconnect = usbh_hid_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
CLASS_INFO_DEFINE const struct usbh_class_info hid_keyboard_class_info = {
|
CLASS_INFO_DEFINE const struct usbh_class_info hid_custom_class_info = {
|
||||||
.match_flags = USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS | USB_CLASS_MATCH_INTF_PROTOCOL,
|
.match_flags = USB_CLASS_MATCH_INTF_CLASS,
|
||||||
.class = USB_DEVICE_CLASS_HID,
|
.class = USB_DEVICE_CLASS_HID,
|
||||||
.subclass = HID_SUBCLASS_BOOTIF,
|
.subclass = 0x00,
|
||||||
.protocol = HID_PROTOCOL_KEYBOARD,
|
.protocol = 0x00,
|
||||||
.vid = 0x00,
|
|
||||||
.pid = 0x00,
|
|
||||||
.class_driver = &hid_class_driver
|
|
||||||
};
|
|
||||||
|
|
||||||
CLASS_INFO_DEFINE const struct usbh_class_info hid_mouse_class_info = {
|
|
||||||
.match_flags = USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS | USB_CLASS_MATCH_INTF_PROTOCOL,
|
|
||||||
.class = USB_DEVICE_CLASS_HID,
|
|
||||||
.subclass = HID_SUBCLASS_BOOTIF,
|
|
||||||
.protocol = HID_PROTOCOL_MOUSE,
|
|
||||||
.vid = 0x00,
|
.vid = 0x00,
|
||||||
.pid = 0x00,
|
.pid = 0x00,
|
||||||
.class_driver = &hid_class_driver
|
.class_driver = &hid_class_driver
|
||||||
|
|||||||
@@ -109,7 +109,11 @@ static const struct usbh_class_driver *usbh_find_class_driver(uint8_t class, uin
|
|||||||
if (index->vid == vid && index->pid == pid && index->class == class) {
|
if (index->vid == vid && index->pid == pid && index->class == class) {
|
||||||
return index->class_driver;
|
return index->class_driver;
|
||||||
}
|
}
|
||||||
} else if (index->match_flags & (USB_CLASS_MATCH_INTF_CLASS)) {
|
} else if ((index->match_flags & (USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS)) == (USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS)) {
|
||||||
|
if (index->class == class && index->subclass == subclass) {
|
||||||
|
return index->class_driver;
|
||||||
|
}
|
||||||
|
} else if ((index->match_flags & (USB_CLASS_MATCH_INTF_CLASS)) == USB_CLASS_MATCH_INTF_CLASS) {
|
||||||
if (index->class == class) {
|
if (index->class == class) {
|
||||||
return index->class_driver;
|
return index->class_driver;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user