aboutsummaryrefslogtreecommitdiff
path: root/LUFA/Drivers/USB/LowLevel/DevChapter9.c
diff options
context:
space:
mode:
authorDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2009-07-13 12:38:30 +0000
committerDean <Dean@d5102386-fcda-11dd-9fdb-3debd5008f28>2009-07-13 12:38:30 +0000
commit9341f8f4c3ac2e30b48a0429fecfe035f7cc98f9 (patch)
treed3ac19b144cbb6bb48b8b04bdf37f5f14fca976e /LUFA/Drivers/USB/LowLevel/DevChapter9.c
parent21e2ca163c5c2443d2cb079c4f17d5d3cb69ea8f (diff)
Added new EEPROM and FLASH buffer versions of the Endpoint and Pipe stream functions. Changed Endpoint.c and Pipe.c to use a templated system to build the seperate functions, rather than duplicating each function's code many times.
git-svn-id: http://lufa-lib.googlecode.com/svn/trunk@644 d5102386-fcda-11dd-9fdb-3debd5008f28
Diffstat (limited to 'LUFA/Drivers/USB/LowLevel/DevChapter9.c')
-rw-r--r--LUFA/Drivers/USB/LowLevel/DevChapter9.c43
1 files changed, 4 insertions, 39 deletions
diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.c b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
index feaabce4..f49f5b39 100644
--- a/LUFA/Drivers/USB/LowLevel/DevChapter9.c
+++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
@@ -241,47 +241,12 @@ static void USB_Device_GetDescriptor(void)
#if defined(USE_RAM_DESCRIPTORS)
Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
+ #elif defined(USE_EEPROM_DESCRIPTORS)
+ Endpoint_Write_Control_EStream_LE(DescriptorPointer, DescriptorSize);
#else
- bool SendZLP;
-
- if (USB_ControlRequest.wLength > DescriptorSize)
- USB_ControlRequest.wLength = DescriptorSize;
-
- while (USB_ControlRequest.wLength)
- {
- while (!(Endpoint_IsINReady()))
- {
- if (Endpoint_IsOUTReceived())
- {
- Endpoint_ClearOUT();
- return;
- }
- }
-
- while (USB_ControlRequest.wLength && (Endpoint_BytesInEndpoint() < USB_ControlEndpointSize))
- {
- #if defined (USE_EEPROM_DESCRIPTORS)
- Endpoint_Write_Byte(eeprom_read_byte(DescriptorPointer++));
- #else
- Endpoint_Write_Byte(pgm_read_byte(DescriptorPointer++));
- #endif
-
- USB_ControlRequest.wLength--;
- }
-
- SendZLP = (Endpoint_BytesInEndpoint() == USB_ControlEndpointSize);
- Endpoint_ClearIN();
- }
-
- if (SendZLP)
- {
- while (!(Endpoint_IsINReady()));
- Endpoint_ClearIN();
- }
-
- while (!(Endpoint_IsOUTReceived()));
+ Endpoint_Write_Control_PStream_LE(DescriptorPointer, DescriptorSize);
#endif
-
+
Endpoint_ClearOUT();
}