add class only match

This commit is contained in:
sakimisu
2022-12-31 16:27:38 +08:00
parent f45e0f47fa
commit db330b42e7
2 changed files with 9 additions and 15 deletions

View File

@@ -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

View File

@@ -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;
} }