- bool SendZLP;\r
- \r
- if (USB_ControlRequest.wLength > DescriptorSize)\r
- USB_ControlRequest.wLength = DescriptorSize;\r
- \r
- while (USB_ControlRequest.wLength)\r
- {\r
- while (!(Endpoint_IsINReady()))\r
- {\r
- if (Endpoint_IsOUTReceived())\r
- {\r
- Endpoint_ClearOUT();\r
- return;\r
- } \r
- }\r
- \r
- while (USB_ControlRequest.wLength && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))\r
- {\r
- #if defined (USE_EEPROM_DESCRIPTORS)\r
- Endpoint_Write_Byte(eeprom_read_byte(DescriptorPointer++)); \r
- #else\r
- Endpoint_Write_Byte(pgm_read_byte(DescriptorPointer++));\r
- #endif\r
- \r
- USB_ControlRequest.wLength--;\r
- }\r
- \r
- SendZLP = (Endpoint_BytesInEndpoint() == USB_ControlEndpointSize);\r
- Endpoint_ClearIN();\r
- }\r
- \r
- if (SendZLP)\r
- {\r
- while (!(Endpoint_IsINReady()));\r
- Endpoint_ClearIN();\r
- }\r
-\r
- while (!(Endpoint_IsOUTReceived()));\r
+ if (DescriptorAddressSpace == MEMSPACE_FLASH)\r
+ Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize); \r
+ else if (DescriptorAddressSpace == MEMSPACE_EEPROM)\r
+ Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);\r
+ else\r
+ Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize); \r