MassStorageHost demo now retrieves Inquiry data from the device during enumeration...
[pub/USBasp.git] / Demos / Host / LowLevel / MassStorageHost / Lib / MassStoreCommands.h
index 78700de..8f3e8a1 100644 (file)
                        uint8_t      SenseKeySpecific[3];\r
                } SCSI_Request_Sense_Response_t;\r
 \r
+               /** Type define for a SCSI Inquiry structure. Structures of this type are filled out by the\r
+                *  device via the MassStore_Inquiry() function, retrieving the attached device's information.\r
+                *  For details of the structure contents, refer to the SCSI specifications.\r
+                */\r
+               typedef struct\r
+               {\r
+                       unsigned char DeviceType          : 5;\r
+                       unsigned char PeripheralQualifier : 3;\r
+                       \r
+                       unsigned char _RESERVED1          : 7;\r
+                       unsigned char Removable           : 1;\r
+                       \r
+                       uint8_t      Version;\r
+                       \r
+                       unsigned char ResponseDataFormat  : 4;\r
+                       unsigned char _RESERVED2          : 1;\r
+                       unsigned char NormACA             : 1;\r
+                       unsigned char TrmTsk              : 1;\r
+                       unsigned char AERC                : 1;\r
+\r
+                       uint8_t      AdditionalLength;\r
+                       uint8_t      _RESERVED3[2];\r
+\r
+                       unsigned char SoftReset           : 1;\r
+                       unsigned char CmdQue              : 1;\r
+                       unsigned char _RESERVED4          : 1;\r
+                       unsigned char Linked              : 1;\r
+                       unsigned char Sync                : 1;\r
+                       unsigned char WideBus16Bit        : 1;\r
+                       unsigned char WideBus32Bit        : 1;\r
+                       unsigned char RelAddr             : 1;\r
+                       \r
+                       uint8_t      VendorID[8];\r
+                       uint8_t      ProductID[16];\r
+                       uint8_t      RevisionID[4];\r
+               } SCSI_Inquiry_Response_t;\r
+               \r
                /** SCSI capacity structure, to hold the total capacity of the device in both the number\r
                 *  of blocks in the current LUN, and the size of each block. This structure is filled by\r
                 *  the device when the MassStore_ReadCapacity() function is called.\r
                uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex);\r
                uint8_t MassStore_RequestSense(const uint8_t LUNIndex, const SCSI_Request_Sense_Response_t* const SensePtr)\r
                                               ATTR_NON_NULL_PTR_ARG(2);\r
+               uint8_t MassStore_Inquiry(const uint8_t LUNIndex, const SCSI_Inquiry_Response_t* const InquiryPtr)\r
+                                              ATTR_NON_NULL_PTR_ARG(2);\r
                uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress,\r
                                                  const uint8_t Blocks, const uint16_t BlockSize, void* BufferPtr) ATTR_NON_NULL_PTR_ARG(5);\r
                uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex, const uint32_t BlockAddress,\r