\r
USB_INT_Clear(USB_INT_HSOFI);\r
\r
- while (!(Pipe_ReadWriteAllowed()))\r
+ for (;;)\r
{\r
+ if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)\r
+ {\r
+ if (Pipe_IsINReceived())\r
+ return PIPE_READYWAIT_NoError;\r
+ }\r
+ else\r
+ {\r
+ if (Pipe_IsOUTReady())\r
+ return PIPE_READYWAIT_NoError; \r
+ }\r
+\r
if (Pipe_IsStalled())\r
return PIPE_READYWAIT_PipeStalled;\r
else if (!(USB_IsConnected))\r
return PIPE_READYWAIT_Timeout;\r
}\r
}\r
- \r
- return PIPE_READYWAIT_NoError;\r
}\r
\r
uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length\r
\r
while (Length--)\r
{\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
{\r
- Pipe_ClearCurrentBank();\r
+ Pipe_ClearOUT();\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
}\r
-\r
- Pipe_Write_Byte(*(DataStream++));\r
+ else\r
+ {\r
+ Pipe_Write_Byte(*(DataStream++));\r
+ }\r
}\r
\r
return PIPE_RWSTREAM_ERROR_NoError;\r
\r
while (Length--)\r
{\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
{\r
- Pipe_ClearCurrentBank();\r
+ Pipe_ClearOUT();\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
}\r
-\r
- Pipe_Write_Byte(*(DataStream--));\r
+ else\r
+ {\r
+ Pipe_Write_Byte(*(DataStream--));\r
+ }\r
}\r
\r
return PIPE_RWSTREAM_ERROR_NoError;\r
\r
while (Length--)\r
{\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
{\r
- Pipe_ClearCurrentBank();\r
+ Pipe_ClearIN();\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
}\r
-\r
- Pipe_Discard_Byte();\r
+ else\r
+ {\r
+ Pipe_Discard_Byte();\r
+ }\r
}\r
\r
return PIPE_RWSTREAM_ERROR_NoError;\r
\r
while (Length--)\r
{\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
{\r
- Pipe_ClearCurrentBank();\r
+ Pipe_ClearIN();\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
}\r
- \r
- *(DataStream++) = Pipe_Read_Byte();\r
+ else\r
+ {\r
+ *(DataStream++) = Pipe_Read_Byte();\r
+ }\r
}\r
\r
return PIPE_RWSTREAM_ERROR_NoError;\r
\r
while (Length--)\r
{\r
- if (!(Pipe_ReadWriteAllowed()))\r
+ if (!(Pipe_IsReadWriteAllowed()))\r
{\r
- Pipe_ClearCurrentBank();\r
+ Pipe_ClearIN();\r
\r
#if !defined(NO_STREAM_CALLBACKS)\r
if ((Callback != NULL) && (Callback() == STREAMCALLBACK_Abort))\r
if ((ErrorCode = Pipe_WaitUntilReady()))\r
return ErrorCode;\r
}\r
-\r
- *(DataStream--) = Pipe_Read_Byte();\r
+ else\r
+ {\r
+ *(DataStream--) = Pipe_Read_Byte();\r
+ }\r
}\r
\r
return PIPE_RWSTREAM_ERROR_NoError;\r