mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-16 14:42:58 +00:00
use dcd_edpt0_status_complete() to prepare for setup packet for samd21/samd51
This commit is contained in:
parent
d7558e8a0f
commit
e9725dcdbe
@ -133,13 +133,14 @@ void dcd_remote_wakeup(uint8_t rhport)
|
|||||||
// May help DCD to prepare for next control transfer, this API is optional.
|
// May help DCD to prepare for next control transfer, this API is optional.
|
||||||
void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * request)
|
void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * request)
|
||||||
{
|
{
|
||||||
(void) rhport;
|
|
||||||
|
|
||||||
if (request->bRequest == TUSB_REQ_SET_ADDRESS)
|
if (request->bRequest == TUSB_REQ_SET_ADDRESS)
|
||||||
{
|
{
|
||||||
uint8_t const dev_addr = (uint8_t) request->wValue;
|
uint8_t const dev_addr = (uint8_t) request->wValue;
|
||||||
USB->DEVICE.DADD.reg = USB_DEVICE_DADD_DADD(dev_addr) | USB_DEVICE_DADD_ADDEN;
|
USB->DEVICE.DADD.reg = USB_DEVICE_DADD_DADD(dev_addr) | USB_DEVICE_DADD_ADDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Just finished status stage, prepare for next setup packet
|
||||||
|
dcd_edpt_xfer(rhport, 0x00, _setup_packet, sizeof(_setup_packet));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -295,12 +296,6 @@ void maybe_transfer_complete(void) {
|
|||||||
uint8_t ep_addr = epnum;
|
uint8_t ep_addr = epnum;
|
||||||
dcd_event_xfer_complete(0, ep_addr, total_transfer_size, XFER_RESULT_SUCCESS, true);
|
dcd_event_xfer_complete(0, ep_addr, total_transfer_size, XFER_RESULT_SUCCESS, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just finished status stage (total size = 0), prepare for next setup packet
|
|
||||||
// TODO could cause issue with actual zero length data used by class such as DFU
|
|
||||||
if (epnum == 0 && total_transfer_size == 0) {
|
|
||||||
dcd_edpt_xfer(0, 0, _setup_packet, sizeof(_setup_packet));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,6 +146,9 @@ void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * re
|
|||||||
uint8_t const dev_addr = (uint8_t) request->wValue;
|
uint8_t const dev_addr = (uint8_t) request->wValue;
|
||||||
USB->DEVICE.DADD.reg = USB_DEVICE_DADD_DADD(dev_addr) | USB_DEVICE_DADD_ADDEN;
|
USB->DEVICE.DADD.reg = USB_DEVICE_DADD_DADD(dev_addr) | USB_DEVICE_DADD_ADDEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Just finished status stage, prepare for next setup packet
|
||||||
|
dcd_edpt_xfer(rhport, 0x00, _setup_packet, sizeof(_setup_packet));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt)
|
||||||
@ -347,11 +350,6 @@ void transfer_complete(uint8_t direction) {
|
|||||||
}
|
}
|
||||||
dcd_event_xfer_complete(0, ep_addr, total_transfer_size, XFER_RESULT_SUCCESS, true);
|
dcd_event_xfer_complete(0, ep_addr, total_transfer_size, XFER_RESULT_SUCCESS, true);
|
||||||
|
|
||||||
// just finished status stage (total size = 0), prepare for next setup packet
|
|
||||||
if (epnum == 0 && total_transfer_size == 0) {
|
|
||||||
dcd_edpt_xfer(0, 0, _setup_packet, sizeof(_setup_packet));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (direction == TUSB_DIR_IN) {
|
if (direction == TUSB_DIR_IN) {
|
||||||
ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRCPT1;
|
ep->EPINTFLAG.reg = USB_DEVICE_EPINTFLAG_TRCPT1;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user