Reset endpoint specified in request, not the one it arrived on.
This commit is contained in:
@ -44,7 +44,7 @@ usb_queue_head_t* usb_queue_head(
|
||||
return &usb_qh[USB_QH_INDEX(endpoint_address)];
|
||||
}
|
||||
|
||||
static usb_endpoint_t* usb_endpoint_from_address(
|
||||
usb_endpoint_t* usb_endpoint_from_address(
|
||||
const uint_fast8_t endpoint_address
|
||||
) {
|
||||
return (usb_endpoint_t*)usb_queue_head(endpoint_address)->_reserved_0;
|
||||
|
@ -58,6 +58,10 @@ void usb_set_address_deferred(
|
||||
const uint_fast8_t address
|
||||
);
|
||||
|
||||
usb_endpoint_t* usb_endpoint_from_address(
|
||||
const uint_fast8_t endpoint_address
|
||||
);
|
||||
|
||||
void usb_endpoint_init(
|
||||
const usb_endpoint_t* const endpoint
|
||||
);
|
||||
|
@ -369,9 +369,12 @@ static usb_request_status_t usb_standard_request_get_status(
|
||||
static usb_request_status_t usb_standard_request_clear_feature_setup(
|
||||
usb_endpoint_t* const endpoint)
|
||||
{
|
||||
|
||||
switch (endpoint->setup.value) {
|
||||
case USB_FEATURE_SELECTOR_ENDPOINT_HALT:
|
||||
usb_endpoint_reset_data_toggle(endpoint);
|
||||
usb_endpoint_reset_data_toggle(
|
||||
usb_endpoint_from_address(endpoint->setup.index)
|
||||
);
|
||||
return USB_REQUEST_STATUS_OK;
|
||||
default:
|
||||
return USB_REQUEST_STATUS_STALL;
|
||||
|
Reference in New Issue
Block a user