More AVR32 achitecture ports.
[pub/lufa.git] / LUFA / Drivers / USB / LowLevel / Pipe.c
index e88aa63..e6ac0e5 100644 (file)
   this software.\r
 */\r
 \r
+#define  __INCLUDE_FROM_USB_DRIVER\r
 #include "../HighLevel/USBMode.h"\r
 \r
 #if defined(USB_CAN_BE_HOST)\r
 \r
-#define  INCLUDE_FROM_PIPE_C\r
+#define  __INCLUDE_FROM_PIPE_C\r
 #include "Pipe.h"\r
 \r
 uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
@@ -78,8 +79,15 @@ bool Pipe_IsEndpointBound(const uint8_t EndpointAddress)
        {\r
                Pipe_SelectPipe(PNum);\r
                \r
-               if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)))\r
-                 return true;\r
+               uint8_t PipeToken = Pipe_GetPipeToken();\r
+\r
+               if (PipeToken != PIPE_TOKEN_SETUP)\r
+                 PipeToken = (PipeToken == ((EndpointAddress & PIPE_EPDIR_MASK) ? PIPE_TOKEN_IN : PIPE_TOKEN_OUT));\r
+               \r
+               if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)) && PipeToken)\r
+               {               \r
+                       return true;\r
+               }\r
        }\r
        \r
        Pipe_SelectPipe(PrevPipeNumber);\r
@@ -218,13 +226,15 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Pipe_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr++))\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
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Pipe_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr++))\r
-#include "Template/Template_Pipe_RW.c"\r
+#if defined(__AVR__)\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
+       #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)     Pipe_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr++))\r
+       #include "Template/Template_Pipe_RW.c"\r
+#endif\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Write_Stream_BE\r
 #define  TEMPLATE_BUFFER_TYPE                      const void*\r
@@ -242,13 +252,15 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Pipe_Write_Byte(pgm_read_byte((uint8_t*)BufferPtr--))\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
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         Pipe_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr--))\r
-#include "Template/Template_Pipe_RW.c"\r
+#if defined(__AVR__)\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
+       #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)     Pipe_Write_Byte(eeprom_read_byte((uint8_t*)BufferPtr--))\r
+       #include "Template/Template_Pipe_RW.c"\r
+#endif\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_Stream_LE\r
 #define  TEMPLATE_BUFFER_TYPE                      void*\r
@@ -258,13 +270,15 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr++) = Pipe_Read_Byte()\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
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr++, Pipe_Read_Byte())\r
-#include "Template/Template_Pipe_RW.c"\r
+#if defined(__AVR__)\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
+       #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)     eeprom_write_byte((uint8_t*)BufferPtr++, Pipe_Read_Byte())\r
+       #include "Template/Template_Pipe_RW.c"\r
+#endif\r
 \r
 #define  TEMPLATE_FUNC_NAME                        Pipe_Read_Stream_BE\r
 #define  TEMPLATE_BUFFER_TYPE                      void*\r
@@ -274,12 +288,14 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         *((uint8_t*)BufferPtr--) = Pipe_Read_Byte()\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
-#define  TEMPLATE_TRANSFER_BYTE(BufferPtr)         eeprom_write_byte((uint8_t*)BufferPtr--, Pipe_Read_Byte())\r
-#include "Template/Template_Pipe_RW.c"\r
+#if defined(__AVR__)\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
+       #define  TEMPLATE_TRANSFER_BYTE(BufferPtr)     eeprom_write_byte((uint8_t*)BufferPtr--, Pipe_Read_Byte())\r
+       #include "Template/Template_Pipe_RW.c"\r
+#endif\r
 \r
 #endif\r