Added 64 bit OS driver installation instructions to the readme for all CDC based...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / MassStorage.c
index ba281cf..a812fa9 100644 (file)
@@ -45,7 +45,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint16_
          return MS_ENUMERROR_InvalidConfigDescriptor;\r
        \r
        if (USB_GetNextDescriptorComp(&ConfigDescriptorLength, &DeviceConfigDescriptor,\r
          return MS_ENUMERROR_InvalidConfigDescriptor;\r
        \r
        if (USB_GetNextDescriptorComp(&ConfigDescriptorLength, &DeviceConfigDescriptor,\r
-                                     DComp_NextMassStorageInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                                     DComp_NextMSInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
        {\r
                return MS_ENUMERROR_NoMSInterfaceFound;\r
        }\r
        {\r
                return MS_ENUMERROR_NoMSInterfaceFound;\r
        }\r
@@ -60,7 +60,7 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint16_
        while (FoundEndpoints != (MS_FOUND_DATAPIPE_IN | MS_FOUND_DATAPIPE_OUT))\r
        {\r
                if (USB_GetNextDescriptorComp(&ConfigDescriptorLength, &DeviceConfigDescriptor,\r
        while (FoundEndpoints != (MS_FOUND_DATAPIPE_IN | MS_FOUND_DATAPIPE_OUT))\r
        {\r
                if (USB_GetNextDescriptorComp(&ConfigDescriptorLength, &DeviceConfigDescriptor,\r
-                                             DComp_NextInterfaceBulkDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                                             DComp_NextMSInterfaceEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
                {\r
                        return MS_ENUMERROR_EndpointsNotFound;\r
                }\r
                {\r
                        return MS_ENUMERROR_EndpointsNotFound;\r
                }\r
@@ -87,17 +87,20 @@ uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint16_
                }               \r
        }\r
 \r
                }               \r
        }\r
 \r
-       MSInterfaceInfo->State.Active = true;\r
+       MSInterfaceInfo->State.IsActive = true;\r
        return MS_ENUMERROR_NoError;\r
 }\r
 \r
        return MS_ENUMERROR_NoError;\r
 }\r
 \r
-static uint8_t DComp_NextMassStorageInterface(void* CurrentDescriptor)\r
+static uint8_t DComp_NextMSInterface(void* CurrentDescriptor)\r
 {\r
        if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
        {\r
 {\r
        if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
        {\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == MASS_STORE_CLASS)    &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == MASS_STORE_SUBCLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MASS_STORE_PROTOCOL))\r
+               USB_Descriptor_Interface_t* CurrentInterface = DESCRIPTOR_PCAST(CurrentDescriptor,\r
+                                                                               USB_Descriptor_Interface_t);\r
+\r
+               if ((CurrentInterface->Class    == MASS_STORE_CLASS)    &&\r
+                   (CurrentInterface->SubClass == MASS_STORE_SUBCLASS) &&\r
+                   (CurrentInterface->Protocol == MASS_STORE_PROTOCOL))\r
                {\r
                        return DESCRIPTOR_SEARCH_Found;\r
                }\r
                {\r
                        return DESCRIPTOR_SEARCH_Found;\r
                }\r
@@ -106,12 +109,14 @@ static uint8_t DComp_NextMassStorageInterface(void* CurrentDescriptor)
        return DESCRIPTOR_SEARCH_NotFound;\r
 }\r
 \r
        return DESCRIPTOR_SEARCH_NotFound;\r
 }\r
 \r
-static uint8_t DComp_NextInterfaceBulkDataEndpoint(void* CurrentDescriptor)\r
+static uint8_t DComp_NextMSInterfaceEndpoint(void* CurrentDescriptor)\r
 {\r
        if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
        {\r
 {\r
        if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
        {\r
-               uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,\r
-                                                       USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);\r
+               USB_Descriptor_Endpoint_t* CurrentEndpoint = DESCRIPTOR_PCAST(CurrentDescriptor,\r
+                                                                             USB_Descriptor_Endpoint_t);\r
+\r
+               uint8_t EndpointType = (CurrentEndpoint->Attributes & EP_TYPE_MASK);\r
 \r
                if ((EndpointType == EP_TYPE_BULK) &&\r
                    (!(Pipe_IsEndpointBound(CurrentEndpoint->EndpointAddress))))\r
 \r
                if ((EndpointType == EP_TYPE_BULK) &&\r
                    (!(Pipe_IsEndpointBound(CurrentEndpoint->EndpointAddress))))\r
@@ -137,7 +142,7 @@ static uint8_t MS_Host_SendCommand(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, MS_
 {\r
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
 \r
 {\r
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
 \r
-       SCSICommandBlock->Tag = MSInterfaceInfo->State.TransactionTag++;\r
+       SCSICommandBlock->Tag = ++MSInterfaceInfo->State.TransactionTag;\r
 \r
        if (MSInterfaceInfo->State.TransactionTag == 0xFFFFFFFF)\r
          MSInterfaceInfo->State.TransactionTag = 1;\r
 \r
        if (MSInterfaceInfo->State.TransactionTag == 0xFFFFFFFF)\r
          MSInterfaceInfo->State.TransactionTag = 1;\r
@@ -285,7 +290,7 @@ static uint8_t MS_Host_GetReturnedStatus(USB_ClassInfo_MS_Host_t* MSInterfaceInf
 \r
 uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* MSInterfaceInfo)\r
 {\r
 \r
 uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* MSInterfaceInfo)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
        USB_ControlRequest = (USB_Request_Header_t)\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
        USB_ControlRequest = (USB_Request_Header_t)\r
@@ -304,7 +309,7 @@ uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* MSInterfaceInfo)
 \r
 uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t* MaxLUNIndex)\r
 {\r
 \r
 uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t* MaxLUNIndex)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
        uint8_t ErrorCode;\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
        uint8_t ErrorCode;\r
@@ -327,15 +332,15 @@ uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t* Max
                *MaxLUNIndex = 0;\r
        }\r
        \r
                *MaxLUNIndex = 0;\r
        }\r
        \r
-       return ErrorCode;\r
+       return HOST_SENDCONTROL_SetupStalled;\r
 }\r
 \r
 uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, SCSI_Inquiry_Response_t* InquiryData)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, SCSI_Inquiry_Response_t* InquiryData)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
          \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
          \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -358,26 +363,20 @@ uint8_t MS_Host_GetInquiryData(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, InquiryData)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, InquiryData)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;       \r
-       }\r
+         return ErrorCode;     \r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;      \r
+       uint8_t ErrorCode;      \r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -400,27 +399,21 @@ uint8_t MS_Host_TestUnitReady(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;       \r
-       }\r
+         return ErrorCode;     \r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex,\r
                                    SCSI_Capacity_t* DeviceCapacity)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex,\r
                                    SCSI_Capacity_t* DeviceCapacity)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -447,30 +440,24 @@ uint8_t MS_Host_ReadDeviceCapacity(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uin
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, DeviceCapacity)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, DeviceCapacity)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
        DeviceCapacity->Blocks    = SwapEndian_32(DeviceCapacity->Blocks);\r
        DeviceCapacity->BlockSize = SwapEndian_32(DeviceCapacity->BlockSize);\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
 \r
        DeviceCapacity->Blocks    = SwapEndian_32(DeviceCapacity->Blocks);\r
        DeviceCapacity->BlockSize = SwapEndian_32(DeviceCapacity->BlockSize);\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex,\r
                              SCSI_Request_Sense_Response_t* SenseData)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex,\r
                              SCSI_Request_Sense_Response_t* SenseData)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -493,26 +480,20 @@ uint8_t MS_Host_RequestSense(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t L
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, SenseData)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, SenseData)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
 \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, bool PreventRemoval)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, bool PreventRemoval)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -535,27 +516,21 @@ uint8_t MS_Host_PreventAllowMediumRemoval(USB_ClassInfo_MS_Host_t* MSInterfaceIn
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, uint32_t BlockAddress,\r
                                  uint8_t Blocks, uint16_t BlockSize, void* BlockBuffer)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, uint32_t BlockAddress,\r
                                  uint8_t Blocks, uint16_t BlockSize, void* BlockBuffer)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -582,27 +557,21 @@ uint8_t MS_Host_ReadDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, BlockBuffer)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, BlockBuffer)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
 \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, uint32_t BlockAddress,\r
                                   uint8_t Blocks, uint16_t BlockSize, void* BlockBuffer)\r
 {\r
 }\r
 \r
 uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint8_t LUNIndex, uint32_t BlockAddress,\r
                                   uint8_t Blocks, uint16_t BlockSize, void* BlockBuffer)\r
 {\r
-       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.Active))\r
+       if ((USB_HostState != HOST_STATE_Configured) || !(MSInterfaceInfo->State.IsActive))\r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
          return HOST_SENDCONTROL_DeviceDisconnect;\r
 \r
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;\r
+       uint8_t ErrorCode;\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
 \r
        MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)\r
                {\r
@@ -629,18 +598,12 @@ uint8_t MS_Host_WriteDeviceBlocks(USB_ClassInfo_MS_Host_t* MSInterfaceInfo, uint
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, BlockBuffer)) != PIPE_RWSTREAM_NoError)\r
        MS_CommandStatusWrapper_t SCSICommandStatus;\r
 \r
        if ((ErrorCode = MS_Host_SendCommand(MSInterfaceInfo, &SCSICommandBlock, BlockBuffer)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
        \r
        if ((ErrorCode = MS_Host_GetReturnedStatus(MSInterfaceInfo, &SCSICommandStatus)) != PIPE_RWSTREAM_NoError)\r
-       {\r
-               Pipe_Freeze();\r
-               return ErrorCode;\r
-       }\r
+         return ErrorCode;\r
 \r
 \r
-       return ErrorCode;\r
+       return PIPE_RWSTREAM_NoError;\r
 }\r
 \r
 #endif\r
 }\r
 \r
 #endif\r