summaryrefslogtreecommitdiff
path: root/components/drivers/usb/usbdevice/core/core.c
diff options
context:
space:
mode:
authorMiraculousConch <[email protected]>2017-11-28 03:02:48 +0800
committerMiraculousConch <[email protected]>2017-11-28 03:02:48 +0800
commitd40d5355b8d64097259be35fef8b91f0cbda713c (patch)
treefc90c3dca9536e5a42f3e7cd3dcf7742e30e7d3c /components/drivers/usb/usbdevice/core/core.c
parent3044461ba22dcd926a03d1088c4fe44ce18d38b0 (diff)
[Components][Drivers][USB]WinUSB And Core update
协议栈增加允许class在windows环境下枚举时向系统注册附加属性。并在winusb class中提供范例(注册GUID信息)
Diffstat (limited to 'components/drivers/usb/usbdevice/core/core.c')
-rw-r--r--components/drivers/usb/usbdevice/core/core.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/components/drivers/usb/usbdevice/core/core.c b/components/drivers/usb/usbdevice/core/core.c
index 4786d7db32..3c0d8f1e26 100644
--- a/components/drivers/usb/usbdevice/core/core.c
+++ b/components/drivers/usb/usbdevice/core/core.c
@@ -669,6 +669,8 @@ static rt_err_t _vendor_request(udevice_t device, ureq_t setup)
static rt_uint8_t * usb_comp_id_desc = RT_NULL;
static rt_uint32_t usb_comp_id_desc_size = 0;
usb_os_func_comp_id_desc_t func_comp_id_desc;
+ uintf_t intf;
+ ufunction_t func;
switch(setup->bRequest)
{
case 'A':
@@ -704,6 +706,13 @@ static rt_err_t _vendor_request(udevice_t device, ureq_t setup)
}
rt_usbd_ep0_write(device, (void*)usb_comp_id_desc, setup->wLength);
break;
+ case 0x05:
+ intf = rt_usbd_find_interface(device, setup->wValue & 0xFF, &func);
+ if(intf != RT_NULL)
+ {
+ intf->handler(func, setup);
+ }
+ break;
}
break;