Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Demos / Host / LowLevel / MassStorageHost / Lib / MassStoreCommands.c
index 0d8a231..48d6035 100644 (file)
@@ -1,21 +1,21 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
-              
+     Copyright (C) Dean Camera, 2011.
+
   dean [at] fourwalledcubicle [dot] com
   dean [at] fourwalledcubicle [dot] com
-      www.fourwalledcubicle.com
+           www.lufa-lib.org
 */
 
 /*
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
 
-  Permission to use, copy, modify, distribute, and sell this 
+  Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
   software and its documentation for any purpose is hereby granted
-  without fee, provided that the above copyright notice appear in 
+  without fee, provided that the above copyright notice appear in
   all copies and that both that the copyright notice and this
   all copies and that both that the copyright notice and this
-  permission notice and warranty disclaimer appear in supporting 
-  documentation, and that the name of the author not be used in 
-  advertising or publicity pertaining to distribution of the 
+  permission notice and warranty disclaimer appear in supporting
+  documentation, and that the name of the author not be used in
+  advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
   software without specific, written prior permission.
 
   The author disclaim all warranties with regard to this
@@ -46,7 +46,7 @@
  *        larger value in the project makefile and passing it to the compiler
  *        via the -D switch.
  */
  *        larger value in the project makefile and passing it to the compiler
  *        via the -D switch.
  */
+
 #define  INCLUDE_FROM_MASSSTORE_COMMANDS_C
 #include "MassStoreCommands.h"
 
 #define  INCLUDE_FROM_MASSSTORE_COMMANDS_C
 #include "MassStoreCommands.h"
 
@@ -63,43 +63,46 @@ static uint32_t MassStore_Tag = 1;
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
-static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendCommand(MS_CommandBlockWrapper_t* const SCSICommandBlock,
                                      void* BufferPtr)
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
                                      void* BufferPtr)
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
-       /* Each transmission should have a unique tag value, increment before use */
-       SCSICommandBlock->Tag = ++MassStore_Tag;
-
        /* Wrap Tag value when invalid - MS class defines tag values of 0 and 0xFFFFFFFF to be invalid */
        /* Wrap Tag value when invalid - MS class defines tag values of 0 and 0xFFFFFFFF to be invalid */
-       if (MassStore_Tag == 0xFFFFFFFF)
+       if (++MassStore_Tag == 0xFFFFFFFF)
          MassStore_Tag = 1;
 
          MassStore_Tag = 1;
 
+       /* Each transmission should have a unique tag value, increment before use */
+       SCSICommandBlock->Tag = MassStore_Tag;
+
        /* Select the OUT data pipe for CBW transmission */
        Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
        Pipe_Unfreeze();
 
        /* Write the CBW command to the OUT pipe */
        /* Select the OUT data pipe for CBW transmission */
        Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
        Pipe_Unfreeze();
 
        /* Write the CBW command to the OUT pipe */
-       if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(CommandBlockWrapper_t))) != PIPE_RWSTREAM_NoError)
-         return ErrorCode;
+       if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t), NULL)) !=
+                                             PIPE_RWSTREAM_NoError)
+       {
+               return ErrorCode;
+       }
 
        /* Send the data in the OUT pipe to the attached device */
        Pipe_ClearOUT();
 
        /* Send the data in the OUT pipe to the attached device */
        Pipe_ClearOUT();
-       
+
        /* Wait until command has been sent */
        Pipe_WaitUntilReady();
 
        /* Freeze pipe after use */
        Pipe_Freeze();
        /* Wait until command has been sent */
        Pipe_WaitUntilReady();
 
        /* Freeze pipe after use */
        Pipe_Freeze();
-       
-       /* Send data if any */
+
+       /* Send data if any has been given */
        if ((BufferPtr != NULL) &&
            ((ErrorCode = MassStore_SendReceiveData(SCSICommandBlock, BufferPtr)) != PIPE_READYWAIT_NoError))
        {
                Pipe_Freeze();
                return ErrorCode;
        }
        if ((BufferPtr != NULL) &&
            ((ErrorCode = MassStore_SendReceiveData(SCSICommandBlock, BufferPtr)) != PIPE_READYWAIT_NoError))
        {
                Pipe_Freeze();
                return ErrorCode;
        }
-               
+
        return ErrorCode;
 }
 
        return ErrorCode;
 }
 
@@ -110,7 +113,8 @@ static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlo
  */
 static uint8_t MassStore_WaitForDataReceived(void)
 {
  */
 static uint8_t MassStore_WaitForDataReceived(void)
 {
-       uint16_t TimeoutMSRem = COMMAND_DATA_TIMEOUT_MS;
+       uint16_t TimeoutMSRem        = COMMAND_DATA_TIMEOUT_MS;
+       uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();
 
        /* Select the IN data pipe for data reception */
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
 
        /* Select the IN data pipe for data reception */
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
@@ -119,18 +123,20 @@ static uint8_t MassStore_WaitForDataReceived(void)
        /* Wait until data received in the IN pipe */
        while (!(Pipe_IsINReceived()))
        {
        /* Wait until data received in the IN pipe */
        while (!(Pipe_IsINReceived()))
        {
+               uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber();
+
                /* Check to see if a new frame has been issued (1ms elapsed) */
                /* Check to see if a new frame has been issued (1ms elapsed) */
-               if (USB_INT_HasOccurred(USB_INT_HSOFI))
+               if (CurrentFrameNumber != PreviousFrameNumber)
                {
                {
-                       /* Clear the flag and decrement the timeout period counter */
-                       USB_INT_Clear(USB_INT_HSOFI);
+                       /* Save the new frame number and decrement the timeout period */
+                       PreviousFrameNumber = CurrentFrameNumber;
                        TimeoutMSRem--;
 
                        /* Check to see if the timeout period for the command has elapsed */
                        if (!(TimeoutMSRem))
                          return PIPE_RWSTREAM_Timeout;
                }
                        TimeoutMSRem--;
 
                        /* Check to see if the timeout period for the command has elapsed */
                        if (!(TimeoutMSRem))
                          return PIPE_RWSTREAM_Timeout;
                }
-       
+
                Pipe_Freeze();
                Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
                Pipe_Unfreeze();
                Pipe_Freeze();
                Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
                Pipe_Unfreeze();
@@ -143,7 +149,7 @@ static uint8_t MassStore_WaitForDataReceived(void)
 
                        return PIPE_RWSTREAM_PipeStalled;
                }
 
                        return PIPE_RWSTREAM_PipeStalled;
                }
-               
+
                Pipe_Freeze();
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
                Pipe_Unfreeze();
                Pipe_Freeze();
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
                Pipe_Unfreeze();
@@ -156,15 +162,15 @@ static uint8_t MassStore_WaitForDataReceived(void)
 
                        return PIPE_RWSTREAM_PipeStalled;
                }
 
                        return PIPE_RWSTREAM_PipeStalled;
                }
-                 
+
                /* Check to see if the device was disconnected, if so exit function */
                if (USB_HostState == HOST_STATE_Unattached)
                  return PIPE_RWSTREAM_DeviceDisconnected;
        };
                /* Check to see if the device was disconnected, if so exit function */
                if (USB_HostState == HOST_STATE_Unattached)
                  return PIPE_RWSTREAM_DeviceDisconnected;
        };
-       
+
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
        Pipe_Freeze();
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
        Pipe_Freeze();
-               
+
        Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
        Pipe_Freeze();
 
        Pipe_SelectPipe(MASS_STORE_DATA_OUT_PIPE);
        Pipe_Freeze();
 
@@ -179,25 +185,25 @@ static uint8_t MassStore_WaitForDataReceived(void)
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
-static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendReceiveData(MS_CommandBlockWrapper_t* const SCSICommandBlock,
                                          void* BufferPtr)
 {
        uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
        uint16_t BytesRem  = SCSICommandBlock->DataTransferLength;
 
        /* Check the direction of the SCSI command data stage */
                                          void* BufferPtr)
 {
        uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
        uint16_t BytesRem  = SCSICommandBlock->DataTransferLength;
 
        /* Check the direction of the SCSI command data stage */
-       if (SCSICommandBlock->Flags & COMMAND_DIRECTION_DATA_IN)
+       if (SCSICommandBlock->Flags & MS_COMMAND_DIR_DATA_IN)
        {
                /* Wait until the device has replied with some data */
                if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
        {
                /* Wait until the device has replied with some data */
                if ((ErrorCode = MassStore_WaitForDataReceived()) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
-       
+
                /* Select the IN data pipe for data reception */
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
                Pipe_Unfreeze();
                /* Select the IN data pipe for data reception */
                Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
                Pipe_Unfreeze();
-               
+
                /* Read in the block data from the pipe */
                /* Read in the block data from the pipe */
-               if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+               if ((ErrorCode = Pipe_Read_Stream_LE(BufferPtr, BytesRem, NULL)) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
 
                /* Acknowledge the packet */
                  return ErrorCode;
 
                /* Acknowledge the packet */
@@ -210,19 +216,19 @@ static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
                Pipe_Unfreeze();
 
                /* Write the block data to the pipe */
                Pipe_Unfreeze();
 
                /* Write the block data to the pipe */
-               if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem)) != PIPE_RWSTREAM_NoError)
+               if ((ErrorCode = Pipe_Write_Stream_LE(BufferPtr, BytesRem, NULL)) != PIPE_RWSTREAM_NoError)
                  return ErrorCode;
 
                /* Acknowledge the packet */
                Pipe_ClearOUT();
                  return ErrorCode;
 
                /* Acknowledge the packet */
                Pipe_ClearOUT();
-               
+
                while (!(Pipe_IsOUTReady()))
                {
                        if (USB_HostState == HOST_STATE_Unattached)
                          return PIPE_RWSTREAM_DeviceDisconnected;
                }
        }
                while (!(Pipe_IsOUTReady()))
                {
                        if (USB_HostState == HOST_STATE_Unattached)
                          return PIPE_RWSTREAM_DeviceDisconnected;
                }
        }
-       
+
        /* Freeze used pipe after use */
        Pipe_Freeze();
 
        /* Freeze used pipe after use */
        Pipe_Freeze();
 
@@ -235,7 +241,7 @@ static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
  */
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
  */
-static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus)
+static uint8_t MassStore_GetReturnedStatus(MS_CommandStatusWrapper_t* const SCSICommandStatus)
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 {
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
@@ -246,21 +252,24 @@ static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICom
        /* Select the IN data pipe for data reception */
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
        Pipe_Unfreeze();
        /* Select the IN data pipe for data reception */
        Pipe_SelectPipe(MASS_STORE_DATA_IN_PIPE);
        Pipe_Unfreeze();
-       
+
        /* Load in the CSW from the attached device */
        /* Load in the CSW from the attached device */
-       if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(CommandStatusWrapper_t))) != PIPE_RWSTREAM_NoError)
-         return ErrorCode;
-         
+       if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t), NULL)) !=
+                                            PIPE_RWSTREAM_NoError)
+       {
+               return ErrorCode;
+       }
+       
        /* Clear the data ready for next reception */
        Pipe_ClearIN();
        /* Clear the data ready for next reception */
        Pipe_ClearIN();
-       
+
        /* Freeze the IN pipe after use */
        Pipe_Freeze();
        /* Freeze the IN pipe after use */
        Pipe_Freeze();
-       
+
        /* Check to see if command failed */
        /* Check to see if command failed */
-       if (SCSICommandStatus->Status != Command_Pass)
+       if (SCSICommandStatus->Status != MS_SCSI_COMMAND_Pass)
          ErrorCode = MASS_STORE_SCSI_COMMAND_FAILED;
          ErrorCode = MASS_STORE_SCSI_COMMAND_FAILED;
-       
+
        return ErrorCode;
 }
 
        return ErrorCode;
 }
 
@@ -274,12 +283,12 @@ uint8_t MassStore_MassStorageReset(void)
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-                       .bRequest      = REQ_MassStorageReset,
+                       .bRequest      = MS_REQ_MassStorageReset,
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = 0,
                };
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = 0,
                };
-       
+
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
@@ -304,12 +313,12 @@ uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex)
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
        USB_ControlRequest = (USB_Request_Header_t)
                {
                        .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-                       .bRequest      = REQ_GetMaxLUN,
+                       .bRequest      = MS_REQ_GetMaxLUN,
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = 1,
                };
                        .wValue        = 0,
                        .wIndex        = 0,
                        .wLength       = 1,
                };
-               
+
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
        /* Select the control pipe for the request transfer */
        Pipe_SelectPipe(PIPE_CONTROLPIPE);
 
@@ -317,14 +326,14 @@ uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex)
        {
                /* Clear the pipe stall */
                Pipe_ClearStall();
        {
                /* Clear the pipe stall */
                Pipe_ClearStall();
-       
+
                /* Some faulty Mass Storage devices don't implement the GET_MAX_LUN request, so assume a single LUN */
                *MaxLUNIndex = 0;
                /* Some faulty Mass Storage devices don't implement the GET_MAX_LUN request, so assume a single LUN */
                *MaxLUNIndex = 0;
-               
+
                /* Clear the error, and pretend the request executed correctly if the device STALLed it */
                ErrorCode = HOST_SENDCONTROL_Successful;
        }
                /* Clear the error, and pretend the request executed correctly if the device STALLed it */
                ErrorCode = HOST_SENDCONTROL_Successful;
        }
-       
+
        return ErrorCode;
 }
 
        return ErrorCode;
 }
 
@@ -342,11 +351,11 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue INQUIRY command */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue INQUIRY command */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
                        .DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
-                       .Flags              = COMMAND_DIRECTION_DATA_IN,
+                       .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
@@ -359,8 +368,8 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, InquiryPtr)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, InquiryPtr)) != PIPE_RWSTREAM_NoError)
@@ -368,7 +377,7 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -393,11 +402,11 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue REQUEST SENSE command */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue REQUEST SENSE command */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
                        .DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
-                       .Flags              = COMMAND_DIRECTION_DATA_IN,
+                       .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData =
@@ -410,8 +419,8 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, SensePtr)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, SensePtr)) != PIPE_RWSTREAM_NoError)
@@ -419,7 +428,7 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -450,11 +459,11 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to read in the given blocks from the device */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to read in the given blocks from the device */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = ((uint32_t)Blocks * BlockSize),
                        .DataTransferLength = ((uint32_t)Blocks * BlockSize),
-                       .Flags              = COMMAND_DIRECTION_DATA_IN,
+                       .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
@@ -471,8 +480,8 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@ -480,7 +489,7 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -511,11 +520,11 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to write the given blocks to the device */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to write the given blocks to the device */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = ((uint32_t)Blocks * BlockSize),
                        .DataTransferLength = ((uint32_t)Blocks * BlockSize),
-                       .Flags              = COMMAND_DIRECTION_DATA_OUT,
+                       .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
@@ -532,8 +541,8 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@ -541,7 +550,7 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -561,14 +570,14 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
  */
 uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
 {
  */
 uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
 {
-       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;      
+       uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue TEST UNIT READY command */
 
        /* Create a CBW with a SCSI command to issue TEST UNIT READY command */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = 0,
                        .DataTransferLength = 0,
-                       .Flags              = COMMAND_DIRECTION_DATA_IN,
+                       .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
@@ -581,8 +590,8 @@ uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
@@ -590,7 +599,7 @@ uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -615,11 +624,11 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue READ CAPACITY command */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue READ CAPACITY command */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = sizeof(SCSI_Capacity_t),
                        .DataTransferLength = sizeof(SCSI_Capacity_t),
-                       .Flags              = COMMAND_DIRECTION_DATA_IN,
+                       .Flags              = MS_COMMAND_DIR_DATA_IN,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 10,
                        .SCSICommandData    =
@@ -636,8 +645,8 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, CapacityPtr)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, CapacityPtr)) != PIPE_RWSTREAM_NoError)
@@ -645,11 +654,11 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-         
+
        /* Endian-correct the read data */
        CapacityPtr->Blocks    = SwapEndian_32(CapacityPtr->Blocks);
        CapacityPtr->BlockSize = SwapEndian_32(CapacityPtr->BlockSize);
        /* Endian-correct the read data */
        CapacityPtr->Blocks    = SwapEndian_32(CapacityPtr->Blocks);
        CapacityPtr->BlockSize = SwapEndian_32(CapacityPtr->BlockSize);
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -675,11 +684,11 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue PREVENT ALLOW MEDIUM REMOVAL command */
        uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
        /* Create a CBW with a SCSI command to issue PREVENT ALLOW MEDIUM REMOVAL command */
-       CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+       MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
                {
                {
-                       .Signature          = CBW_SIGNATURE,
+                       .Signature          = MS_CBW_SIGNATURE,
                        .DataTransferLength = 0,
                        .DataTransferLength = 0,
-                       .Flags              = COMMAND_DIRECTION_DATA_OUT,
+                       .Flags              = MS_COMMAND_DIR_DATA_OUT,
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
                        .LUN                = LUNIndex,
                        .SCSICommandLength  = 6,
                        .SCSICommandData    =
@@ -692,8 +701,8 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
                                        0x00                    // Unused (control)
                                }
                };
                                        0x00                    // Unused (control)
                                }
                };
-       
-       CommandStatusWrapper_t SCSICommandStatus;
+
+       MS_CommandStatusWrapper_t SCSICommandStatus;
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
 
        /* Send the command and any data to the attached device */
        if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
@@ -701,7 +710,7 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
                Pipe_Freeze();
                return ErrorCode;
        }
                Pipe_Freeze();
                return ErrorCode;
        }
-       
+
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
        /* Retrieve status information from the attached device */
        if ((ErrorCode = MassStore_GetReturnedStatus(&SCSICommandStatus)) != PIPE_RWSTREAM_NoError)
        {
@@ -711,3 +720,4 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
 
        return ErrorCode;
 }
 
        return ErrorCode;
 }
+