1 uint8_t TEMPLATE_FUNC_NAME (void* Buffer
, 
   4         uint8_t* DataStream 
= ((uint8_t*)Buffer 
+ TEMPLATE_BUFFER_OFFSET(Length
)); 
  11                 uint8_t USB_DeviceState_LCL 
= USB_DeviceState
; 
  13                 if (USB_DeviceState_LCL 
== DEVICE_STATE_Unattached
) 
  14                   return ENDPOINT_RWCSTREAM_DeviceDisconnected
; 
  15                 else if (USB_DeviceState_LCL 
== DEVICE_STATE_Suspended
) 
  16                   return ENDPOINT_RWCSTREAM_BusSuspended
; 
  17                 else if (Endpoint_IsSETUPReceived()) 
  18                   return ENDPOINT_RWCSTREAM_HostAborted
; 
  20                 if (Endpoint_IsOUTReceived()) 
  22                         while (Length 
&& Endpoint_BytesInEndpoint()) 
  24                                 TEMPLATE_TRANSFER_BYTE(DataStream
); 
  32         while (!(Endpoint_IsINReady())) 
  34                 uint8_t USB_DeviceState_LCL 
= USB_DeviceState
; 
  36                 if (USB_DeviceState_LCL 
== DEVICE_STATE_Unattached
) 
  37                   return ENDPOINT_RWCSTREAM_DeviceDisconnected
; 
  38                 else if (USB_DeviceState_LCL 
== DEVICE_STATE_Suspended
) 
  39                   return ENDPOINT_RWCSTREAM_BusSuspended
; 
  42         return ENDPOINT_RWCSTREAM_NoError
; 
  46 #undef TEMPLATE_BUFFER_OFFSET 
  47 #undef TEMPLATE_FUNC_NAME 
  48 #undef TEMPLATE_TRANSFER_BYTE