\r
        Endpoint_ClearSETUP();\r
        \r
-       Endpoint_ClearIN();\r
+       Endpoint_ClearStatusStage();\r
        \r
        while (!(Endpoint_IsINReady()))\r
        {\r
 \r
        USB_ConfigurationNumber = (uint8_t)USB_ControlRequest.wValue;\r
 \r
-       Endpoint_ClearIN();\r
+       Endpoint_ClearStatusStage();\r
 \r
        if (USB_ConfigurationNumber)\r
          USB_DeviceState = DEVICE_STATE_Configured;\r
        Endpoint_ClearSETUP();\r
 \r
        Endpoint_Write_Byte(USB_ConfigurationNumber);\r
-       \r
        Endpoint_ClearIN();\r
 \r
-       while (!(Endpoint_IsOUTReceived()))\r
-       {\r
-               if (USB_DeviceState == DEVICE_STATE_Unattached)\r
-                 return;       \r
-       }\r
-\r
-       Endpoint_ClearOUT();\r
+       Endpoint_ClearStatusStage();\r
 }\r
 \r
 #if !defined(NO_INTERNAL_SERIAL) && (defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))\r
        SignatureDescriptor.Header.Size  = sizeof(SignatureDescriptor);\r
        SignatureDescriptor.Header.Type  = DTYPE_String;\r
        \r
-       uint8_t  SigReadAddress     = 0x0E;\r
+       uint8_t  SigReadAddress = 0x0E;\r
 \r
        for (uint8_t SerialCharNum = 0; SerialCharNum < 20; SerialCharNum++)\r
        {\r
        }\r
        \r
        Endpoint_ClearSETUP();\r
+\r
        Endpoint_Write_Control_Stream_LE(&SignatureDescriptor, sizeof(SignatureDescriptor));\r
+\r
        Endpoint_ClearOUT();\r
 }\r
 #endif\r
                        break;\r
 #if !defined(CONTROL_ONLY_DEVICE)\r
                case (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_ENDPOINT):\r
-                       Endpoint_SelectEndpoint((uint8_t)USB_ControlRequest.wIndex);\r
+                       Endpoint_SelectEndpoint(USB_ControlRequest.wIndex & 0xFF);\r
 \r
                        CurrentStatus = Endpoint_IsStalled();\r
 \r
        Endpoint_ClearSETUP();\r
 \r
        Endpoint_Write_Word_LE(CurrentStatus);\r
-\r
        Endpoint_ClearIN();\r
        \r
-       while (!(Endpoint_IsOUTReceived()))\r
-       {\r
-               if (USB_DeviceState == DEVICE_STATE_Unattached)\r
-                 return;       \r
-       }\r
-       \r
-       Endpoint_ClearOUT();\r
+       Endpoint_ClearStatusStage();\r
 }\r
 \r
 static void USB_Device_ClearSetFeature(void)\r
 \r
        Endpoint_ClearSETUP();\r
 \r
-       Endpoint_ClearIN();\r
+       Endpoint_ClearStatusStage();\r
 }\r
 \r
 #endif\r