1 uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer
, uint16_t Length __CALLBACK_PARAM
) 
   3         uint8_t* DataStream 
= ((uint8_t*)Buffer 
+ TEMPLATE_BUFFER_OFFSET(Length
)); 
   6         if ((ErrorCode 
= Endpoint_WaitUntilReady())) 
   9         #if defined(FAST_STREAM_TRANSFERS) 
  10         uint8_t BytesRemToAlignment 
= (Endpoint_BytesInEndpoint() & 0x07); 
  14                 Length 
-= BytesRemToAlignment
; 
  16                 switch (BytesRemToAlignment
) 
  21                                         if (!(Endpoint_IsReadWriteAllowed())) 
  23                                                 TEMPLATE_CLEAR_ENDPOINT(); 
  25                                                 #if !defined(NO_STREAM_CALLBACKS) 
  26                                                 if ((Callback 
!= NULL
) && (Callback() == STREAMCALLBACK_Abort
)) 
  27                                                   return ENDPOINT_RWSTREAM_CallbackAborted
; 
  30                                                 if ((ErrorCode 
= Endpoint_WaitUntilReady())) 
  36                                         TEMPLATE_TRANSFER_BYTE(DataStream
); 
  37                         case 7: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  38                         case 6: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  39                         case 5: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  40                         case 4: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  41                         case 3: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  42                         case 2: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  43                         case 1: TEMPLATE_TRANSFER_BYTE(DataStream
); 
  44                                 } while (Length 
>= 8);   
  51                 if (!(Endpoint_IsReadWriteAllowed())) 
  53                         TEMPLATE_CLEAR_ENDPOINT(); 
  55                         #if !defined(NO_STREAM_CALLBACKS) 
  56                         if ((Callback 
!= NULL
) && (Callback() == STREAMCALLBACK_Abort
)) 
  57                           return ENDPOINT_RWSTREAM_CallbackAborted
; 
  60                         if ((ErrorCode 
= Endpoint_WaitUntilReady())) 
  65                         TEMPLATE_TRANSFER_BYTE(DataStream
); 
  70         return ENDPOINT_RWSTREAM_NoError
; 
  73 #undef TEMPLATE_FUNC_NAME 
  74 #undef TEMPLATE_BUFFER_TYPE 
  75 #undef TEMPLATE_TRANSFER_BYTE 
  76 #undef TEMPLATE_CLEAR_ENDPOINT 
  77 #undef TEMPLATE_BUFFER_OFFSET