-       /* Type Defines: */
-               /** Type define for a Mass Storage class Command Block Wrapper, used to wrap SCSI
-                *  commands for transport over the USB bulk endpoints to the device.
-                */
-               typedef struct
-               {
-                       uint32_t Signature; /**< Command block signature, always equal to CBW_SIGNATURE */
-                       uint32_t Tag; /**< Current CBW tag, to positively associate a CBW with a CSW (filled automatically) */
-                       uint32_t DataTransferLength; /**< Length of data to transfer, following the CBW */
-                       uint8_t  Flags; /**< Block flags, equal to one of the COMMAND_DIRECTION_DATA_* macros */
-                       uint8_t  LUN; /**< Logical Unit Number the CBW is addressed to in the device */
-                       uint8_t  SCSICommandLength; /**< Length of the SCSI command in the CBW */
-                       uint8_t  SCSICommandData[16]; /**< SCSI command to issue to the device */
-               } CommandBlockWrapper_t;
-
-               /** Type define for a Mass Storage class Command Status Wrapper, used to wrap SCSI
-                *  responses for transport over the USB bulk endpoints from the device.
-                */
-               typedef struct
-               {
-                       uint32_t Signature; /**< Command status signature, always equal to CSW_SIGNATURE */
-                       uint32_t Tag; /**< Current CBW tag, to positively associate a CBW with a CSW */
-                       uint32_t DataTransferResidue; /**< Length of data not transferred */
-                       uint8_t  Status; /**< Command status, a value from the MassStorageHost_CommandStatusCodes_t enum */
-               } CommandStatusWrapper_t;
-
-               /** Type define for a SCSI Sense structure. Structures of this type are filled out by the
-                *  device via the \ref MassStore_RequestSense() function, indicating the current sense data of the
-                *  device (giving explicit error codes for the last issued command). For details of the
-                *  structure contents, refer to the SCSI specifications.
-                */
-               typedef struct
-               {
-                       uint8_t       ResponseCode;
-
-                       uint8_t       SegmentNumber;
-
-                       unsigned char SenseKey            : 4;
-                       unsigned char Reserved            : 1;
-                       unsigned char ILI                 : 1;
-                       unsigned char EOM                 : 1;
-                       unsigned char FileMark            : 1;
-
-                       uint8_t      Information[4];
-                       uint8_t      AdditionalLength;
-                       uint8_t      CmdSpecificInformation[4];
-                       uint8_t      AdditionalSenseCode;
-                       uint8_t      AdditionalSenseQualifier;
-                       uint8_t      FieldReplaceableUnitCode;
-                       uint8_t      SenseKeySpecific[3];
-               } SCSI_Request_Sense_Response_t;
-
-               /** Type define for a SCSI Inquiry structure. Structures of this type are filled out by the
-                *  device via the \ref MassStore_Inquiry() function, retrieving the attached device's information.
-                *  For details of the structure contents, refer to the SCSI specifications.
-                */
-               typedef struct
-               {
-                       unsigned char DeviceType          : 5;
-                       unsigned char PeripheralQualifier : 3;
-
-                       unsigned char Reserved            : 7;
-                       unsigned char Removable           : 1;
-
-                       uint8_t      Version;
-
-                       unsigned char ResponseDataFormat  : 4;
-                       unsigned char Reserved2           : 1;
-                       unsigned char NormACA             : 1;
-                       unsigned char TrmTsk              : 1;
-                       unsigned char AERC                : 1;
-
-                       uint8_t      AdditionalLength;
-                       uint8_t      Reserved3[2];
-
-                       unsigned char SoftReset           : 1;
-                       unsigned char CmdQue              : 1;
-                       unsigned char Reserved4           : 1;
-                       unsigned char Linked              : 1;
-                       unsigned char Sync                : 1;
-                       unsigned char WideBus16Bit        : 1;
-                       unsigned char WideBus32Bit        : 1;
-                       unsigned char RelAddr             : 1;
-
-                       uint8_t      VendorID[8];
-                       uint8_t      ProductID[16];
-                       uint8_t      RevisionID[4];
-               } SCSI_Inquiry_Response_t;
-
-               /** SCSI capacity structure, to hold the total capacity of the device in both the number
-                *  of blocks in the current LUN, and the size of each block. This structure is filled by
-                *  the device when the \ref MassStore_ReadCapacity() function is called.
-                */
-               typedef struct
-               {
-                       uint32_t Blocks; /**< Number of blocks in the addressed LUN of the device */
-                       uint32_t BlockSize; /**< Number of bytes in each block in the addressed LUN */
-               } SCSI_Capacity_t;
-
-       /* Enums: */
-               /** CSW status return codes, indicating the overall status of the issued CBW. */
-               enum MassStorageHost_CommandStatusCodes_t
-               {
-                       Command_Pass = 0, /**< Command completed successfully */
-                       Command_Fail = 1, /**< Command failed to complete successfully */
-                       Phase_Error  = 2 /**< Phase error while processing the issued command */
-               };
-