Fixed CDCHost demo unfreezing IN pipes during configuration, rather than during use.
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / Pipe.c
index 71a33d6..35ba480 100644 (file)
@@ -45,7 +45,7 @@ bool Pipe_ConfigurePipe(const uint8_t Number, const uint8_t Type, const uint8_t
 \r
        UPCFG1X = 0;\r
        \r
-       UPCFG0X = ((Type << EPTYPE0) | Token | (EndpointNumber << PEPNUM0));\r
+       UPCFG0X = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
        UPCFG1X = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
 \r
        return Pipe_IsConfigured();\r
@@ -76,8 +76,6 @@ uint8_t Pipe_WaitUntilReady(void)
        uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
        #endif\r
 \r
-       USB_INT_Clear(USB_INT_HSOFI);\r
-\r
        for (;;)\r
        {\r
                if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)\r
@@ -115,6 +113,8 @@ uint8_t Pipe_Write_Stream_LE(const void* Data, uint16_t Length
        uint8_t* DataStream = (uint8_t*)Data;\r
        uint8_t  ErrorCode;\r
        \r
+       Pipe_SetToken(PIPE_TOKEN_OUT);\r
+\r
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
@@ -151,6 +151,8 @@ uint8_t Pipe_Write_Stream_BE(const void* Data, uint16_t Length
        uint8_t* DataStream = (uint8_t*)(Data + Length - 1);\r
        uint8_t  ErrorCode;\r
        \r
+       Pipe_SetToken(PIPE_TOKEN_OUT);\r
+\r
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
@@ -186,6 +188,8 @@ uint8_t Pipe_Discard_Stream(uint16_t Length
 {\r
        uint8_t  ErrorCode;\r
        \r
+       Pipe_SetToken(PIPE_TOKEN_IN);\r
+\r
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
@@ -222,6 +226,8 @@ uint8_t Pipe_Read_Stream_LE(void* Buffer, uint16_t Length
        uint8_t* DataStream = (uint8_t*)Buffer;\r
        uint8_t  ErrorCode;\r
        \r
+       Pipe_SetToken(PIPE_TOKEN_IN);\r
+\r
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r
@@ -258,6 +264,8 @@ uint8_t Pipe_Read_Stream_BE(void* Buffer, uint16_t Length
        uint8_t* DataStream = (uint8_t*)(Buffer + Length - 1);\r
        uint8_t  ErrorCode;\r
        \r
+       Pipe_SetToken(PIPE_TOKEN_IN);\r
+\r
        if ((ErrorCode = Pipe_WaitUntilReady()))\r
          return ErrorCode;\r
 \r