X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/7f9f97c792dee6875fbca9806422bdd7d6c5a657..1d8bb8f9bc90a492073b93ef3b422ac947c873e7:/LUFA/Drivers/USB/LowLevel/Pipe.c diff --git a/LUFA/Drivers/USB/LowLevel/Pipe.c b/LUFA/Drivers/USB/LowLevel/Pipe.c index e88aa63fc..78c82e8c4 100644 --- a/LUFA/Drivers/USB/LowLevel/Pipe.c +++ b/LUFA/Drivers/USB/LowLevel/Pipe.c @@ -28,11 +28,12 @@ this software. */ +#define __INCLUDE_FROM_USB_DRIVER #include "../HighLevel/USBMode.h" #if defined(USB_CAN_BE_HOST) -#define INCLUDE_FROM_PIPE_C +#define __INCLUDE_FROM_PIPE_C #include "Pipe.h" uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE; @@ -78,8 +79,15 @@ bool Pipe_IsEndpointBound(const uint8_t EndpointAddress) { Pipe_SelectPipe(PNum); - if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK))) - return true; + uint8_t PipeToken = Pipe_GetPipeToken(); + + if (PipeToken != PIPE_TOKEN_SETUP) + PipeToken = (PipeToken == ((EndpointAddress & PIPE_EPDIR_MASK) ? PIPE_TOKEN_IN : PIPE_TOKEN_OUT)); + + if (Pipe_IsConfigured() && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)) && PipeToken) + { + return true; + } } Pipe_SelectPipe(PrevPipeNumber);