uint8_t TEMPLATE_FUNC_NAME (void* Buffer, uint16_t Length)\r
{\r
- uint8_t* DataStream = (uint8_t*)(Buffer + TEMPLATE_BUFFER_OFFSET(Length));\r
+ uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));\r
+ \r
+ if (!(Length))\r
+ Endpoint_ClearOUT();\r
\r
while (Length)\r
{\r
+ if (Endpoint_IsSETUPReceived())\r
+ return ENDPOINT_RWCSTREAM_HostAborted;\r
+\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+ return ENDPOINT_RWCSTREAM_DeviceDisconnected;\r
+ \r
if (Endpoint_IsOUTReceived())\r
{\r
while (Length && Endpoint_BytesInEndpoint())\r
}\r
\r
Endpoint_ClearOUT();\r
- }\r
-\r
- if (USB_DeviceState == DEVICE_STATE_Unattached)\r
- return ENDPOINT_RWCSTREAM_DeviceDisconnected;\r
+ } \r
}\r
\r
while (!(Endpoint_IsINReady()))\r