Renamed Projects/Unfinished to Projects/Incomplete for consistancy.
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / Pipe.c
index 18fbc19..9c6a53e 100644 (file)
@@ -70,6 +70,22 @@ void Pipe_ClearPipes(void)
        }\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
@@ -93,7 +109,7 @@ uint8_t Pipe_WaitUntilReady(void)
 \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
@@ -184,60 +200,70 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 }\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