summaryrefslogtreecommitdiff
path: root/src/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2021-01-22 11:17:10 +0700
committerhathach <[email protected]>2021-01-22 11:17:10 +0700
commit0cf2b02791bee41583f58b65c57bdac4ca1faf45 (patch)
tree712d223dd102497b8d4764db50d9b3eaa7f82fef /src/device/usbd.c
parent4cd8a95ef71fa351af1ec7144301b2736a80c75d (diff)
parent388abe9d9cc0a7c360fd902e01461a53bb7b3f42 (diff)
Merge branch 'master' into group-boards-into-family
Diffstat (limited to 'src/device/usbd.c')
-rw-r--r--src/device/usbd.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/device/usbd.c b/src/device/usbd.c
index 4ecc2a2f9..f6b00563d 100644
--- a/src/device/usbd.c
+++ b/src/device/usbd.c
@@ -517,7 +517,7 @@ void tud_task (void)
TU_ASSERT(driver, );
TU_LOG2(" %s xfer callback\r\n", driver->name);
- driver->xfer_cb(event.rhport, ep_addr, event.xfer_complete.result, event.xfer_complete.len);
+ driver->xfer_cb(event.rhport, ep_addr, (xfer_result_t)event.xfer_complete.result, event.xfer_complete.len);
}
}
break;
@@ -933,6 +933,7 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
break;
case TUSB_DESC_STRING:
+ {
TU_LOG2(" String[%u]\r\n", desc_index);
// String Descriptor always uses the desc set from user
@@ -941,6 +942,7 @@ static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const
// first byte of descriptor is its size
return tud_control_xfer(rhport, p_request, (void*) desc_str, desc_str[0]);
+ }
break;
case TUSB_DESC_DEVICE_QUALIFIER:
@@ -1101,6 +1103,24 @@ bool usbd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * desc_ep)
{
TU_LOG2(" Open EP %02X with Size = %u\r\n", desc_ep->bEndpointAddress, desc_ep->wMaxPacketSize.size);
+ if (TUSB_XFER_ISOCHRONOUS == desc_ep->bmAttributes.xfer)
+ {
+ TU_ASSERT(desc_ep->wMaxPacketSize.size <= (_usbd_dev.speed == TUSB_SPEED_HIGH ? 1024 : 1023));
+ }
+ else
+ {
+ uint16_t const max_epsize = (_usbd_dev.speed == TUSB_SPEED_HIGH ? 512 : 64);
+
+ if (TUSB_XFER_BULK == desc_ep->bmAttributes.xfer)
+ {
+ // Bulk must be EXACTLY 512/64 bytes
+ TU_ASSERT(desc_ep->wMaxPacketSize.size == max_epsize);
+ }else
+ {
+ TU_ASSERT(desc_ep->wMaxPacketSize.size <= max_epsize);
+ }
+ }
+
return dcd_edpt_open(rhport, desc_ep);
}