update class driver info,support class driver export

This commit is contained in:
jzlv
2022-03-23 17:15:57 +08:00
parent c44a26d69f
commit 563888ec14
10 changed files with 108 additions and 61 deletions

View File

@@ -273,3 +273,13 @@ const struct usbh_class_driver cdc_acm_class_driver = {
.connect = usbh_cdc_acm_connect,
.disconnect = usbh_cdc_acm_disconnect
};
CLASS_INFO_DEFINE const struct usbh_class_info cdc_acm_class_info = {
.match_flags = USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS | USB_CLASS_MATCH_INTF_PROTOCOL,
.class = USB_DEVICE_CLASS_CDC,
.subclass = CDC_ABSTRACT_CONTROL_MODEL,
.protocol = CDC_COMMON_PROTOCOL_AT_COMMANDS,
.vid = 0x00,
.pid = 0x00,
.class_driver = &cdc_acm_class_driver
};

View File

@@ -41,7 +41,7 @@ struct usbh_cdc_acm {
#endif
};
extern const struct usbh_class_driver cdc_acm_class_driver;
extern const struct usbh_class_info cdc_acm_class_info;
#ifdef __cplusplus
extern "C" {

View File

@@ -240,3 +240,23 @@ const struct usbh_class_driver hid_class_driver = {
.connect = usbh_hid_connect,
.disconnect = usbh_hid_disconnect
};
CLASS_INFO_DEFINE const struct usbh_class_info hid_keyboard_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_KEYBOARD,
.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,
.pid = 0x00,
.class_driver = &hid_class_driver
};

View File

@@ -34,7 +34,8 @@ struct usbh_hid {
usbh_epinfo_t intout; /* INTR OUT endpoint */
};
extern const struct usbh_class_driver hid_class_driver;
extern const struct usbh_class_info hid_keyboard_class_info;
extern const struct usbh_class_info hid_mouse_class_info;
#ifdef __cplusplus
extern "C" {

View File

@@ -506,4 +506,14 @@ const struct usbh_class_driver hub_class_driver = {
.driver_name = "hub",
.connect = usbh_hub_connect,
.disconnect = usbh_hub_disconnect
};
CLASS_INFO_DEFINE const struct usbh_class_info hub_class_info = {
.match_flags = USB_CLASS_MATCH_INTF_CLASS,
.class = USB_DEVICE_CLASS_HUB,
.subclass = 0,
.protocol = 0,
.vid = 0x00,
.pid = 0x00,
.class_driver = &hub_class_driver
};

View File

@@ -29,9 +29,9 @@
/* Maximum size of an interrupt IN transfer */
#define USBH_HUB_INTIN_BUFSIZE ((USBH_HUB_MAX_PORTS + 8) >> 3)
extern const struct usbh_class_driver hub_class_driver;
extern const struct usbh_class_info hub_class_info;
extern usb_slist_t hub_class_head;
extern usb_osal_thread_t hub_thread;
#ifdef __cplusplus
extern "C" {
#endif

View File

@@ -338,6 +338,7 @@ int usbh_msc_connect(struct usbh_hubport *hport, uint8_t intf)
}
memset(msc_class, 0, sizeof(struct usbh_msc));
msc_class->hport = hport;
usbh_msc_devno_alloc(msc_class);
snprintf(hport->config.intf[intf].devname, CONFIG_USBHOST_DEV_NAMELEN, DEV_FORMAT, msc_class->sdchar);
@@ -428,3 +429,13 @@ const struct usbh_class_driver msc_class_driver = {
.connect = usbh_msc_connect,
.disconnect = usbh_msc_disconnect
};
CLASS_INFO_DEFINE const struct usbh_class_info msc_class_info = {
.match_flags = USB_CLASS_MATCH_INTF_CLASS | USB_CLASS_MATCH_INTF_SUBCLASS | USB_CLASS_MATCH_INTF_PROTOCOL,
.class = USB_DEVICE_CLASS_MASS_STORAGE,
.subclass = MSC_SUBCLASS_SCSI,
.protocol = MSC_PROTOCOL_BULK_ONLY,
.vid = 0x00,
.pid = 0x00,
.class_driver = &msc_class_driver
};

View File

@@ -38,7 +38,7 @@ struct usbh_msc {
uint16_t blocksize; /* Block size of USB mass storage device */
};
extern const struct usbh_class_driver msc_class_driver;
extern const struct usbh_class_info msc_class_info;
int usbh_msc_scsi_write10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors);
int usbh_msc_scsi_read10(struct usbh_msc *msc_class, uint32_t start_sector, const uint8_t *buffer, uint32_t nsectors);
@@ -51,4 +51,4 @@ extern "C" {
}
#endif
#endif
#endif