1 uint8_t TEMPLATE_FUNC_NAME (TEMPLATE_BUFFER_TYPE Buffer
,
5 uint8_t* DataStream
= ((uint8_t*)Buffer
+ TEMPLATE_BUFFER_OFFSET(Length
));
8 if ((ErrorCode
= Endpoint_WaitUntilReady()))
11 #if defined(FAST_STREAM_TRANSFERS)
12 uint8_t BytesRemToAlignment
= (Endpoint_BytesInEndpoint() & 0x07);
16 Length
-= BytesRemToAlignment
;
18 switch (BytesRemToAlignment
)
23 if (!(Endpoint_IsReadWriteAllowed()))
25 TEMPLATE_CLEAR_ENDPOINT();
27 #if !defined(NO_STREAM_CALLBACKS)
28 if ((Callback
!= NULL
) && (Callback() == STREAMCALLBACK_Abort
))
29 return ENDPOINT_RWSTREAM_CallbackAborted
;
32 if ((ErrorCode
= Endpoint_WaitUntilReady()))
38 TEMPLATE_TRANSFER_BYTE(DataStream
);
39 case 7: TEMPLATE_TRANSFER_BYTE(DataStream
);
40 case 6: TEMPLATE_TRANSFER_BYTE(DataStream
);
41 case 5: TEMPLATE_TRANSFER_BYTE(DataStream
);
42 case 4: TEMPLATE_TRANSFER_BYTE(DataStream
);
43 case 3: TEMPLATE_TRANSFER_BYTE(DataStream
);
44 case 2: TEMPLATE_TRANSFER_BYTE(DataStream
);
45 case 1: TEMPLATE_TRANSFER_BYTE(DataStream
);
46 } while (Length
>= 8);
53 if (!(Endpoint_IsReadWriteAllowed()))
55 TEMPLATE_CLEAR_ENDPOINT();
57 #if !defined(NO_STREAM_CALLBACKS)
58 if ((Callback
!= NULL
) && (Callback() == STREAMCALLBACK_Abort
))
59 return ENDPOINT_RWSTREAM_CallbackAborted
;
62 if ((ErrorCode
= Endpoint_WaitUntilReady()))
67 TEMPLATE_TRANSFER_BYTE(DataStream
);
72 return ENDPOINT_RWSTREAM_NoError
;
75 #undef TEMPLATE_FUNC_NAME
76 #undef TEMPLATE_BUFFER_TYPE
77 #undef TEMPLATE_TRANSFER_BYTE
78 #undef TEMPLATE_CLEAR_ENDPOINT
79 #undef TEMPLATE_BUFFER_OFFSET