# LUFA library compile-time options\r
LUFA_OPTS = -D USB_DEVICE_ONLY\r
LUFA_OPTS += -D DEVICE_STATE_AS_GPIOR=0\r
-LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=64\r
+LUFA_OPTS += -D FIXED_CONTROL_ENDPOINT_SIZE=8\r
LUFA_OPTS += -D FIXED_NUM_CONFIGURATIONS=1\r
LUFA_OPTS += -D USE_RAM_DESCRIPTORS\r
LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_DEVICE_OPT_FULLSPEED | USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"\r
#endif\r
#if !defined(CONTROL_ONLY_DEVICE)\r
case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):\r
- Endpoint_SelectEndpoint(USB_ControlRequest.wIndex & 0xFF);\r
+ Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex & ENDPOINT_EPNUM_MASK);\r
\r
CurrentStatus = Endpoint_IsStalled();\r
\r
}\r
\r
static void USB_Device_ClearSetFeature(void)\r
-{ \r
+{\r
switch (USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_RECIPIENT)\r
{\r
#if !defined(NO_DEVICE_REMOTE_WAKEUP) \r
\r
Endpoint_SelectEndpoint(EndpointIndex);\r
\r
- if (Endpoint_IsEnabled())\r
- { \r
- if (USB_ControlRequest.bRequest == REQ_SetFeature)\r
- {\r
- Endpoint_StallTransaction();\r
- }\r
- else\r
- {\r
- Endpoint_ClearStall();\r
- Endpoint_ResetFIFO(EndpointIndex);\r
- Endpoint_ResetDataToggle();\r
- } \r
+ if (!(Endpoint_IsEnabled()))\r
+ return;\r
+\r
+ if (USB_ControlRequest.bRequest == REQ_SetFeature)\r
+ {\r
+ Endpoint_StallTransaction();\r
+ }\r
+ else\r
+ {\r
+ Endpoint_ClearStall();\r
+ Endpoint_ResetFIFO(EndpointIndex);\r
+ Endpoint_ResetDataToggle();\r
}\r
}\r
\r
* - Fixed Still Image Host class driver not resetting the transaction ID when a new session is opened, fixed driver not sending\r
* a valid session ID to the device\r
* - Removed invalid dfu and flip related targets from the bootloaders - bootloaders can only be replaced with an external programmer\r
+ * - Fixed Set/Clear Feature requests directed to a non-configured endpoint not returning a stall to the host\r
*\r
* \section Sec_ChangeLog100219 Version 100219\r
*\r