mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-31 05:52:55 +08:00
fix ep0 stall not clearing
This commit is contained in:
parent
2a67ce773d
commit
ab5f276877
@ -148,6 +148,8 @@ void dcd_int_handler(uint8_t rhport) {
|
|||||||
|
|
||||||
case PID_SETUP:
|
case PID_SETUP:
|
||||||
data.ep0_tog = true;
|
data.ep0_tog = true;
|
||||||
|
dcd_edpt_clear_stall(rhport, tu_edpt_addr(0, TUSB_DIR_IN)); // setup clears stall
|
||||||
|
dcd_edpt_clear_stall(rhport, tu_edpt_addr(0, TUSB_DIR_OUT));
|
||||||
dcd_event_setup_received(rhport, &data.buffer[0][TUSB_DIR_OUT][0], true);
|
dcd_event_setup_received(rhport, &data.buffer[0][TUSB_DIR_OUT][0], true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -261,10 +263,12 @@ bool dcd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t *buffer, uint16_t to
|
|||||||
uint8_t dir = tu_edpt_dir(ep_addr);
|
uint8_t dir = tu_edpt_dir(ep_addr);
|
||||||
|
|
||||||
struct usb_xfer *xfer = &data.xfer[ep][dir];
|
struct usb_xfer *xfer = &data.xfer[ep][dir];
|
||||||
|
dcd_int_disable(rhport);
|
||||||
xfer->valid = true;
|
xfer->valid = true;
|
||||||
xfer->buffer = buffer;
|
xfer->buffer = buffer;
|
||||||
xfer->len = total_bytes;
|
xfer->len = total_bytes;
|
||||||
xfer->processed_len = 0;
|
xfer->processed_len = 0;
|
||||||
|
dcd_int_enable(rhport);
|
||||||
|
|
||||||
if (dir == TUSB_DIR_IN) {
|
if (dir == TUSB_DIR_IN) {
|
||||||
update_in(rhport, ep, true);
|
update_in(rhport, ep, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user