X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/f52b265090db54c580be9fd5307b4d5368972f51..4bb236e9a05c5bae7a3ae6ee5c17572fa6af7d61:/LUFA/Drivers/USB/Class/Host/MassStorage.c?ds=sidebyside diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.c b/LUFA/Drivers/USB/Class/Host/MassStorage.c index 1f66aa863..65c49b15c 100644 --- a/LUFA/Drivers/USB/Class/Host/MassStorage.c +++ b/LUFA/Drivers/USB/Class/Host/MassStorage.c @@ -110,11 +110,16 @@ static uint8_t DComp_NextInterfaceBulkDataEndpoint(void* CurrentDescriptor) { if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint) { - uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor, - USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK); + USB_Descriptor_Endpoint_t* CurrentEndpoint = DESCRIPTOR_PCAST(CurrentDescriptor, + USB_Descriptor_Endpoint_t); - if (EndpointType == EP_TYPE_BULK) - return DESCRIPTOR_SEARCH_Found; + uint8_t EndpointType = (CurrentEndpoint->Attributes & EP_TYPE_MASK); + + if ((EndpointType == EP_TYPE_BULK) && + (!(Pipe_IsEndpointBound(CurrentEndpoint->EndpointAddress)))) + { + return DESCRIPTOR_SEARCH_Found; + } } else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface) { @@ -134,7 +139,7 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, MS_ { uint8_t ErrorCode = PIPE_RWSTREAM_NoError; - SCSICommandBlock->Tag = MSInterfaceInfo->State.TransactionTag++; + SCSICommandBlock->Tag = ++MSInterfaceInfo->State.TransactionTag; if (MSInterfaceInfo->State.TransactionTag == 0xFFFFFFFF) MSInterfaceInfo->State.TransactionTag = 1;