STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
usbh_msc_scsi.h
Go to the documentation of this file.
1 
28 /* Define to prevent recursive ----------------------------------------------*/
29 #ifndef __USBH_MSC_SCSI_H
30 #define __USBH_MSC_SCSI_H
31 
32 #ifdef __cplusplus
33  extern "C" {
34 #endif
35 
36 /* Includes ------------------------------------------------------------------*/
37 #include "usbh_core.h"
38 
39 
58 // Capacity data.
59 typedef struct
60 {
61  uint32_t block_nbr;
62  uint16_t block_size;
64 
65 
66 // Sense data.
67 typedef struct
68 {
69  uint8_t key;
70  uint8_t asc;
71  uint8_t ascq;
73 
74 // INQUIRY data.
75 typedef struct
76 {
78  uint8_t DeviceType;
79  uint8_t RemovableMedia;
80  uint8_t vendor_id[9];
81  uint8_t product_id[17];
82  uint8_t revision_id[5];
84 
88 #define OPCODE_TEST_UNIT_READY 0x00
89 #define OPCODE_READ_CAPACITY10 0x25
90 #define OPCODE_READ10 0x28
91 #define OPCODE_WRITE10 0x2A
92 #define OPCODE_REQUEST_SENSE 0x03
93 #define OPCODE_INQUIRY 0x12
94 
95 #define DATA_LEN_MODE_TEST_UNIT_READY 0
96 #define DATA_LEN_READ_CAPACITY10 8
97 #define DATA_LEN_INQUIRY 36
98 #define DATA_LEN_REQUEST_SENSE 14
99 
100 #define CBW_CB_LENGTH 16
101 #define CBW_LENGTH 10
102 
106 #define SCSI_SENSE_KEY_NO_SENSE 0x00
107 #define SCSI_SENSE_KEY_RECOVERED_ERROR 0x01
108 #define SCSI_SENSE_KEY_NOT_READY 0x02
109 #define SCSI_SENSE_KEY_MEDIUM_ERROR 0x03
110 #define SCSI_SENSE_KEY_HARDWARE_ERROR 0x04
111 #define SCSI_SENSE_KEY_ILLEGAL_REQUEST 0x05
112 #define SCSI_SENSE_KEY_UNIT_ATTENTION 0x06
113 #define SCSI_SENSE_KEY_DATA_PROTECT 0x07
114 #define SCSI_SENSE_KEY_BLANK_CHECK 0x08
115 #define SCSI_SENSE_KEY_VENDOR_SPECIFIC 0x09
116 #define SCSI_SENSE_KEY_COPY_ABORTED 0x0A
117 #define SCSI_SENSE_KEY_ABORTED_COMMAND 0x0B
118 #define SCSI_SENSE_KEY_VOLUME_OVERFLOW 0x0D
119 #define SCSI_SENSE_KEY_MISCOMPARE 0x0E
120 
128 #define SCSI_ASC_NO_ADDITIONAL_SENSE_INFORMATION 0x00
129 #define SCSI_ASC_LOGICAL_UNIT_NOT_READY 0x04
130 #define SCSI_ASC_INVALID_FIELD_IN_CDB 0x24
131 #define SCSI_ASC_WRITE_PROTECTED 0x27
132 #define SCSI_ASC_FORMAT_ERROR 0x31
133 #define SCSI_ASC_INVALID_COMMAND_OPERATION_CODE 0x20
134 #define SCSI_ASC_NOT_READY_TO_READY_CHANGE 0x28
135 #define SCSI_ASC_MEDIUM_NOT_PRESENT 0x3A
136 
144 #define SCSI_ASCQ_FORMAT_COMMAND_FAILED 0x01
145 #define SCSI_ASCQ_INITIALIZING_COMMAND_REQUIRED 0x02
146 #define SCSI_ASCQ_OPERATION_IN_PROGRESS 0x07
147 
171  uint8_t lun);
172 
174  uint8_t lun,
175  SCSI_CapacityTypeDef *capacity);
176 
178  uint8_t lun,
179  SCSI_StdInquiryDataTypeDef *inquiry);
180 
182  uint8_t lun,
183  SCSI_SenseTypeDef *sense_data);
184 
186  uint8_t lun,
187  uint32_t address,
188  uint8_t *pbuf,
189  uint32_t length);
190 
192  uint8_t lun,
193  uint32_t address,
194  uint8_t *pbuf,
195  uint32_t length);
196 
197 
202 #ifdef __cplusplus
203 }
204 #endif
205 
206 #endif /* __USBH_MSC_SCSI_H */
207 
208 
225 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
226 
Header file for usbh_core.c.
USBH_StatusTypeDef USBH_MSC_SCSI_Write(USBH_HandleTypeDef *phost, uint8_t lun, uint32_t address, uint8_t *pbuf, uint32_t length)
USBH_MSC_SCSI_Write Issue write10 command.
USBH_StatusTypeDef USBH_MSC_SCSI_TestUnitReady(USBH_HandleTypeDef *phost, uint8_t lun)
USBH_MSC_SCSI_TestUnitReady Issue TestUnitReady command.
Definition: pbuf.h:108
USBH_StatusTypeDef USBH_MSC_SCSI_Inquiry(USBH_HandleTypeDef *phost, uint8_t lun, SCSI_StdInquiryDataTypeDef *inquiry)
USBH_MSC_SCSI_Inquiry Issue Inquiry command.
USBH_StatusTypeDef USBH_MSC_SCSI_Read(USBH_HandleTypeDef *phost, uint8_t lun, uint32_t address, uint8_t *pbuf, uint32_t length)
USBH_MSC_SCSI_Read Issue Read10 command.
USBH_StatusTypeDef USBH_MSC_SCSI_RequestSense(USBH_HandleTypeDef *phost, uint8_t lun, SCSI_SenseTypeDef *sense_data)
USBH_MSC_SCSI_RequestSense Issue RequestSense command.
USBH_StatusTypeDef
Definition: usbh_def.h:302
USBH_StatusTypeDef USBH_MSC_SCSI_ReadCapacity(USBH_HandleTypeDef *phost, uint8_t lun, SCSI_CapacityTypeDef *capacity)
USBH_MSC_SCSI_ReadCapacity Issue Read Capacity command.