\r
uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
\r
-bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,\r
+bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t Token, const uint8_t EndpointNumber,\r
const uint16_t Size, const uint8_t Banks)\r
{\r
Pipe_SelectPipe(Number);\r
\r
uint8_t Pipe_WaitUntilReady(void)\r
{\r
+ #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
+ uint8_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS; \r
+ #else\r
uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-\r
- USB_INT_Clear(USB_INT_HSOFI);\r
+ #endif\r
\r
for (;;)\r
{\r
else if (!(USB_IsConnected))\r
return PIPE_READYWAIT_DeviceDisconnected;\r
\r
- if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+ if (FrameElapsed)\r
{\r
- USB_INT_Clear(USB_INT_HSOFI);\r
+ FrameElapsed = false;\r
\r
if (!(TimeoutMSRem--))\r
return PIPE_READYWAIT_Timeout;\r
\r
uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length\r
#if !defined(NO_STREAM_CALLBACKS)\r
- , uint8_t (* const Callback)(void)\r
+ , StreamCallbackPtr_t Callback\r
#endif\r
)\r
{\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
\r
- while (Length--)\r
+ while (Length)\r
{\r
if (!(Pipe_IsReadWriteAllowed()))\r
{\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
- return PIPE_RWSTREAM_ERROR_CallbackAborted;\r
+ return PIPE_RWSTREAM_CallbackAborted;\r
#endif\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
else\r
{\r
Pipe_Write_Byte(*(DataStream++));\r
+ Length--;\r
}\r
}\r
\r
- return PIPE_RWSTREAM_ERROR_NoError;\r
+ return PIPE_RWSTREAM_NoError;\r
}\r
\r
uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length\r
#if !defined(NO_STREAM_CALLBACKS)\r
- , uint8_t (* const Callback)(void)\r
+ , StreamCallbackPtr_t Callback\r
#endif\r
)\r
{\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
\r
- while (Length--)\r
+ while (Length)\r
{\r
if (!(Pipe_IsReadWriteAllowed()))\r
{\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
- return PIPE_RWSTREAM_ERROR_CallbackAborted;\r
+ return PIPE_RWSTREAM_CallbackAborted;\r
#endif\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
else\r
{\r
Pipe_Write_Byte(*(DataStream--));\r
+ Length--;\r
}\r
}\r
\r
- return PIPE_RWSTREAM_ERROR_NoError;\r
+ return PIPE_RWSTREAM_NoError;\r
}\r
\r
uint8_t Pipe_Discard_Stream(uint16_t Length\r
#if !defined(NO_STREAM_CALLBACKS)\r
- , uint8_t (* const Callback)(void)\r
+ , StreamCallbackPtr_t Callback\r
#endif\r
)\r
{\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
\r
- while (Length--)\r
+ while (Length)\r
{\r
if (!(Pipe_IsReadWriteAllowed()))\r
{\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
- return PIPE_RWSTREAM_ERROR_CallbackAborted;\r
+ return PIPE_RWSTREAM_CallbackAborted;\r
#endif\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
else\r
{\r
Pipe_Discard_Byte();\r
+ Length--;\r
}\r
}\r
\r
- return PIPE_RWSTREAM_ERROR_NoError;\r
+ return PIPE_RWSTREAM_NoError;\r
}\r
\r
uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length\r
#if !defined(NO_STREAM_CALLBACKS)\r
- , uint8_t (* const Callback)(void)\r
+ , StreamCallbackPtr_t Callback\r
#endif\r
)\r
{\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
\r
- while (Length--)\r
+ while (Length)\r
{\r
if (!(Pipe_IsReadWriteAllowed()))\r
{\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
- return PIPE_RWSTREAM_ERROR_CallbackAborted;\r
+ return PIPE_RWSTREAM_CallbackAborted;\r
#endif\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
else\r
{\r
*(DataStream++) = Pipe_Read_Byte();\r
+ Length--;\r
}\r
}\r
\r
- return PIPE_RWSTREAM_ERROR_NoError;\r
+ return PIPE_RWSTREAM_NoError;\r
}\r
\r
uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length\r
#if !defined(NO_STREAM_CALLBACKS)\r
- , uint8_t (* const Callback)(void)\r
+ , StreamCallbackPtr_t Callback\r
#endif\r
)\r
{\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
\r
- while (Length--)\r
+ while (Length)\r
{\r
if (!(Pipe_IsReadWriteAllowed()))\r
{\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
- return PIPE_RWSTREAM_ERROR_CallbackAborted;\r
+ return PIPE_RWSTREAM_CallbackAborted;\r
#endif\r
\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
else\r
{\r
*(DataStream--) = Pipe_Read_Byte();\r
+ Length--;\r
}\r
}\r
\r
- return PIPE_RWSTREAM_ERROR_NoError;\r
+ return PIPE_RWSTREAM_NoError;\r
}\r
\r
#endif\r