got interrupt endpoint working

This commit is contained in:
hathach 2022-03-03 21:57:29 +07:00
parent d4d7d35afb
commit fa62d5abc9
2 changed files with 40 additions and 3 deletions

@ -1 +1 @@
Subproject commit ee20881ac8abc515df5e0cfe8851c7c21c47a0ef
Subproject commit 92268187f3b0490a43d139ed2cb598b06258011f

View File

@ -167,8 +167,45 @@ bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const
{
rhport = RHPORT_PIO(rhport);
usb_device[0].event = EVENT_NONE;
usb_device[0].address = dev_addr;
usb_device_t *device = &usb_device[0];
static uint8_t ep_id_idx; // TODO remove later
if (ep_desc->bEndpointAddress == 0)
{
device->event = EVENT_NONE;
device->address = dev_addr;
ep_id_idx = 0;
}else if (ep_desc->bmAttributes.xfer == TUSB_XFER_INTERRUPT) // only support interrupt endpoint
{
endpoint_t *ep = NULL;
for ( int ep_pool_idx = 0; ep_pool_idx < PIO_USB_EP_POOL_CNT; ep_pool_idx++ )
{
if ( ep_pool[ep_pool_idx].ep_num == 0 )
{
ep = &ep_pool[ep_pool_idx];
device->endpoint_id[ep_id_idx] = ep_pool_idx + 1;
ep_id_idx++;
ep->data_id = 0;
ep->ep_num = ep_desc->bEndpointAddress;
ep->interval = ep_desc->bInterval;
ep->interval_counter = 0;
ep->size = (uint8_t) tu_edpt_packet_size(ep_desc);
ep->attr = EP_ATTR_INTERRUPT;
break;
}
}
// TU_LOG1_INT(device->connected);
// TU_LOG1_INT(device->root);
// TU_LOG1_INT(device->is_root);
// TU_LOG1_INT(device->is_fullspeed);
//
// TU_LOG1_INT(ep_id_idx);
}
return true;
}