diff --git a/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c b/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c index 1832d15bedd8f84fe59d4190b1948b000a784706..8d26874fa100463bbc39f0702d1806749f95381c 100644 --- a/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c +++ b/LUFA/Drivers/USB/HighLevel/DeviceStandardReq.c @@ -364,18 +364,18 @@ static void USB_Device_ClearSetFeature(void) Endpoint_SelectEndpoint(EndpointIndex); - if (!(Endpoint_IsEnabled())) - return; - - if (USB_ControlRequest.bRequest == REQ_SetFeature) - { - Endpoint_StallTransaction(); - } - else - { - Endpoint_ClearStall(); - Endpoint_ResetFIFO(EndpointIndex); - Endpoint_ResetDataToggle(); + if (Endpoint_IsEnabled()) + { + if (USB_ControlRequest.bRequest == REQ_SetFeature) + { + Endpoint_StallTransaction(); + } + else + { + Endpoint_ClearStall(); + Endpoint_ResetFIFO(EndpointIndex); + Endpoint_ResetDataToggle(); + } } } diff --git a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c index dc2c37dfc583a474ac86586659babbb88a9e9020..c9d81f3db935a8eeebb5fccfd170f9f7279a1291 100644 --- a/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c +++ b/LUFA/Drivers/USB/HighLevel/Template/Template_Endpoint_Control_W.c @@ -24,7 +24,7 @@ uint8_t TEMPLATE_FUNC_NAME (const void* Buffer, if (Endpoint_IsINReady()) { - uint8_t BytesInEndpoint = Endpoint_BytesInEndpoint(); + uint16_t BytesInEndpoint = Endpoint_BytesInEndpoint(); while (Length && (BytesInEndpoint < USB_ControlEndpointSize)) { diff --git a/LUFA/Drivers/USB/LowLevel/USBController.c b/LUFA/Drivers/USB/LowLevel/USBController.c index 907e2bab0a1f3cb51699bb765ee83c5f6d8dd6df..7488a30035e7f8bcec56573ccead557ae0dbc118 100644 --- a/LUFA/Drivers/USB/LowLevel/USBController.c +++ b/LUFA/Drivers/USB/LowLevel/USBController.c @@ -250,9 +250,9 @@ void USB_ResetInterface(void) USB_INT_Enable(USB_INT_VBUS); #endif - #if defined(CONTROL_ONLY_DEVICE) - UENUM = ENDPOINT_CONTROLEP; - #endif + Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL, + ENDPOINT_DIR_OUT, USB_ControlEndpointSize, + ENDPOINT_BANK_SINGLE); } else if (USB_CurrentMode == USB_MODE_HOST) { diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt index 9b534bd516af4bf5bbf5da74bd38b0d2d169593b..beacd79ad8196aee8a624cb045251f1d6d934636 100644 --- a/LUFA/ManPages/ChangeLog.txt +++ b/LUFA/ManPages/ChangeLog.txt @@ -50,6 +50,7 @@ * request handler * - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value * - Added LEDs_ToggleLEDs() function to several board LED drivers which were missing it (thanks to Andrei Krainev) + * - Fixed SET FEATURE and CLEAR FEATURE control requests directed at an unconfigured endpoint causing request timeouts * * \section Sec_ChangeLog100807 Version 100807 * <b>New:</b>