2 ******************************************************************************
3 * @file usbd_msc_scsi.h
4 * @author MCD Application Team
7 * @brief header for the usbd_msc_scsi.c file
8 ******************************************************************************
11 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
12 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
13 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
14 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
15 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
16 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18 * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
19 ******************************************************************************
22 /* Define to prevent recursive inclusion -------------------------------------*/
23 #ifndef __USBD_MSC_SCSI_H
24 #define __USBD_MSC_SCSI_H
26 /* Includes ------------------------------------------------------------------*/
29 /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
33 /** @defgroup USBD_SCSI
34 * @brief header file for the storage disk file
38 /** @defgroup USBD_SCSI_Exported_Defines
42 #define SENSE_LIST_DEEPTH 4
45 #define SCSI_FORMAT_UNIT 0x04
46 #define SCSI_INQUIRY 0x12
47 #define SCSI_MODE_SELECT6 0x15
48 #define SCSI_MODE_SELECT10 0x55
49 #define SCSI_MODE_SENSE6 0x1A
50 #define SCSI_MODE_SENSE10 0x5A
51 #define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E
52 #define SCSI_READ6 0x08
53 #define SCSI_READ10 0x28
54 #define SCSI_READ12 0xA8
55 #define SCSI_READ16 0x88
57 #define SCSI_READ_CAPACITY10 0x25
58 #define SCSI_READ_CAPACITY16 0x9E
60 #define SCSI_REQUEST_SENSE 0x03
61 #define SCSI_START_STOP_UNIT 0x1B
62 #define SCSI_TEST_UNIT_READY 0x00
63 #define SCSI_WRITE6 0x0A
64 #define SCSI_WRITE10 0x2A
65 #define SCSI_WRITE12 0xAA
66 #define SCSI_WRITE16 0x8A
68 #define SCSI_VERIFY10 0x2F
69 #define SCSI_VERIFY12 0xAF
70 #define SCSI_VERIFY16 0x8F
72 #define SCSI_SEND_DIAGNOSTIC 0x1D
73 #define SCSI_READ_FORMAT_CAPACITIES 0x23
76 #define RECOVERED_ERROR 1
78 #define MEDIUM_ERROR 3
79 #define HARDWARE_ERROR 4
80 #define ILLEGAL_REQUEST 5
81 #define UNIT_ATTENTION 6
82 #define DATA_PROTECT 7
84 #define VENDOR_SPECIFIC 9
85 #define COPY_ABORTED 10
86 #define ABORTED_COMMAND 11
87 #define VOLUME_OVERFLOW 13
91 #define INVALID_CDB 0x20
92 #define INVALID_FIELED_IN_COMMAND 0x24
93 #define PARAMETER_LIST_LENGTH_ERROR 0x1A
94 #define INVALID_FIELD_IN_PARAMETER_LIST 0x26
95 #define ADDRESS_OUT_OF_RANGE 0x21
96 #define MEDIUM_NOT_PRESENT 0x3A
97 #define MEDIUM_HAVE_CHANGED 0x28
98 #define WRITE_PROTECTED 0x27
99 #define UNRECOVERED_READ_ERROR 0x11
100 #define WRITE_FAULT 0x03
102 #define READ_FORMAT_CAPACITY_DATA_LEN 0x0C
103 #define READ_CAPACITY10_DATA_LEN 0x08
104 #define MODE_SENSE10_DATA_LEN 0x08
105 #define MODE_SENSE6_DATA_LEN 0x04
106 #define REQUEST_SENSE_DATA_LEN 0x12
107 #define STANDARD_INQUIRY_DATA_LEN 0x24
110 extern uint8_t Page00_Inquiry_Data[];
111 extern uint8_t Standard_Inquiry_Data[];
112 extern uint8_t Standard_Inquiry_Data2[];
113 extern uint8_t Mode_Sense6_data[];
114 extern uint8_t Mode_Sense10_data[];
115 extern uint8_t Scsi_Sense_Data[];
116 extern uint8_t ReadCapacity10_Data[];
117 extern uint8_t ReadFormatCapacity_Data [];
123 /** @defgroup USBD_SCSI_Exported_TypesDefinitions
127 typedef struct _SENSE_ITEM {
137 } SCSI_Sense_TypeDef;
142 /** @defgroup USBD_SCSI_Exported_Macros
150 /** @defgroup USBD_SCSI_Exported_Variables
153 extern SCSI_Sense_TypeDef SCSI_Sense [SENSE_LIST_DEEPTH];
154 extern uint8_t SCSI_Sense_Head;
155 extern uint8_t SCSI_Sense_Tail;
160 /** @defgroup USBD_SCSI_Exported_FunctionsPrototype
163 int8_t SCSI_ProcessCmd(USB_OTG_CORE_HANDLE *pdev,
167 void SCSI_SenseCode(uint8_t lun,
175 #endif /* __USBD_MSC_SCSI_H */
188 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/