-uint8_t TEMPLATE_FUNC_NAME (const void* Buffer, uint16_t Length)\r
-{\r
- uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));\r
- bool LastPacketFull = false;\r
- \r
- if (Length > USB_ControlRequest.wLength)\r
- Length = USB_ControlRequest.wLength;\r
- else if (!(Length))\r
- Endpoint_ClearIN();\r
-\r
- while (Length || LastPacketFull)\r
- {\r
- if (Endpoint_IsSETUPReceived())\r
- return ENDPOINT_RWCSTREAM_HostAborted;\r
-\r
- if (Endpoint_IsOUTReceived())\r
- break;\r
- \r
- if (USB_DeviceState == DEVICE_STATE_Unattached)\r
- return ENDPOINT_RWCSTREAM_DeviceDisconnected;\r
- else if (USB_DeviceState == DEVICE_STATE_Suspended)\r
- return ENDPOINT_RWCSTREAM_BusSuspended;\r
- \r
- if (Endpoint_IsINReady())\r
- {\r
- uint8_t BytesInEndpoint = Endpoint_BytesInEndpoint();\r
- \r
- while (Length && (BytesInEndpoint < USB_ControlEndpointSize))\r
- {\r
- TEMPLATE_TRANSFER_BYTE(DataStream);\r
- Length--;\r
- BytesInEndpoint++;\r
- }\r
- \r
- LastPacketFull = (BytesInEndpoint == USB_ControlEndpointSize);\r
- Endpoint_ClearIN();\r
- }\r
- }\r
- \r
- while (!(Endpoint_IsOUTReceived()))\r
- {\r
- if (USB_DeviceState == DEVICE_STATE_Unattached)\r
- return ENDPOINT_RWCSTREAM_DeviceDisconnected;\r
- else if (USB_DeviceState == DEVICE_STATE_Suspended)\r
- return ENDPOINT_RWCSTREAM_BusSuspended;\r
- }\r
-\r
- return ENDPOINT_RWCSTREAM_NoError;\r
-}\r
-\r
-#undef TEMPLATE_BUFFER_OFFSET\r
-#undef TEMPLATE_FUNC_NAME\r
+uint8_t TEMPLATE_FUNC_NAME (const void* Buffer, uint16_t Length)
+{
+ uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
+ bool LastPacketFull = false;
+
+ if (Length > USB_ControlRequest.wLength)
+ Length = USB_ControlRequest.wLength;
+ else if (!(Length))
+ Endpoint_ClearIN();
+
+ while (Length || LastPacketFull)
+ {
+ if (Endpoint_IsSETUPReceived())
+ return ENDPOINT_RWCSTREAM_HostAborted;
+
+ if (Endpoint_IsOUTReceived())
+ break;
+
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return ENDPOINT_RWCSTREAM_DeviceDisconnected;
+ else if (USB_DeviceState == DEVICE_STATE_Suspended)
+ return ENDPOINT_RWCSTREAM_BusSuspended;
+
+ if (Endpoint_IsINReady())
+ {
+ uint8_t BytesInEndpoint = Endpoint_BytesInEndpoint();
+
+ while (Length && (BytesInEndpoint < USB_ControlEndpointSize))
+ {
+ TEMPLATE_TRANSFER_BYTE(DataStream);
+ Length--;
+ BytesInEndpoint++;
+ }
+
+ LastPacketFull = (BytesInEndpoint == USB_ControlEndpointSize);
+ Endpoint_ClearIN();
+ }
+ }
+
+ while (!(Endpoint_IsOUTReceived()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return ENDPOINT_RWCSTREAM_DeviceDisconnected;
+ else if (USB_DeviceState == DEVICE_STATE_Suspended)
+ return ENDPOINT_RWCSTREAM_BusSuspended;
+ }
+
+ return ENDPOINT_RWCSTREAM_NoError;
+}
+
+#undef TEMPLATE_BUFFER_OFFSET
+#undef TEMPLATE_FUNC_NAME
#undef TEMPLATE_TRANSFER_BYTE
\ No newline at end of file