}\r
 }\r
 \r
+bool Pipe_IsEndpointBound(const 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
        #else\r
        uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
        #endif\r
-\r
+       \r
        for (;;)\r
        {\r
                if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)\r
 }\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_Stream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_PStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_EStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_Stream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_PStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_EStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      const void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_OUT\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearOUT()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_Stream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_IN\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_EStream_LE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_IN\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            0\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_Stream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_IN\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r
 #include "Template/Template_Pipe_RW.c"\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_EStream_BE\r
+#define  TEMPLATE_BUFFER_TYPE                      void*\r
 #define  TEMPLATE_TOKEN                            PIPE_TOKEN_IN\r
 #define  TEMPLATE_CLEAR_PIPE()                     Pipe_ClearIN()\r
 #define  TEMPLATE_BUFFER_OFFSET(Length)            Length - 1\r