}\r
}\r
\r
+bool Pipe_IsEndpointBound(uint8_t EndpointAddress)\r
+{\r
+ uint8_t PrevPipeNumber = Pipe_GetCurrentPipe();\r
+\r
+ for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+ {\r
+ Pipe_SelectPipe(PNum);\r
+ \r
+ if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == EndpointAddress))\r
+ return true;\r
+ }\r
+ \r
+ Pipe_SelectPipe(PrevPipeNumber);\r
+ return false;\r
+}\r
+\r
uint8_t Pipe_WaitUntilReady(void)\r
{\r
#if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
\r
if (Pipe_IsStalled())\r
return PIPE_READYWAIT_PipeStalled;\r
- else if (!(USB_IsConnected))\r
+ else if (USB_HostState == HOST_STATE_Unattached)\r
return PIPE_READYWAIT_DeviceDisconnected;\r
\r
if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
}\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_Stream_LE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) 0\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(*(BufferPtr++))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_PStream_LE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) 0\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(pgm_read_byte(BufferPtr++))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_EStream_LE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) 0\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(eeprom_read_byte(BufferPtr++))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_Stream_BE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) Length - 1\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(*(BufferPtr--))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_PStream_BE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) Length - 1\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(pgm_read_byte(BufferPtr--))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Write_EStream_BE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_OUT\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearOUT()\r
#define TEMPLATE_BUFFER_OFFSET(Length) Length - 1\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) Pipe_Write_Byte(eeprom_read_byte(BufferPtr--))\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Read_Stream_LE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_IN\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN()\r
#define TEMPLATE_BUFFER_OFFSET(Length) 0\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) *(BufferPtr++) = Pipe_Read_Byte()\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Read_EStream_LE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_IN\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN()\r
#define TEMPLATE_BUFFER_OFFSET(Length) 0\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte(BufferPtr++, Pipe_Read_Byte())\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Read_Stream_BE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_IN\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN()\r
#define TEMPLATE_BUFFER_OFFSET(Length) Length - 1\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) *(BufferPtr--) = Pipe_Read_Byte()\r
#include "Template/Template_Pipe_RW.c"\r
\r
#define TEMPLATE_FUNC_NAME Pipe_Read_EStream_BE\r
+#define TEMPLATE_TOKEN PIPE_TOKEN_IN\r
#define TEMPLATE_CLEAR_PIPE() Pipe_ClearIN()\r
#define TEMPLATE_BUFFER_OFFSET(Length) Length - 1\r
#define TEMPLATE_TRANSFER_BYTE(BufferPtr) eeprom_write_byte(BufferPtr--, Pipe_Read_Byte())\r