📄 ms_rbc.h
字号:
// ----------------------------------------------------------------------------
// ATMEL Microcontroller Software Support - ROUSSET -
// ----------------------------------------------------------------------------
// DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ----------------------------------------------------------------------------
// File Name : ms_rbc.h
// Object : Reduced Block commands
// Ref: rbc-r10a.pdf: NCITS-330 T10/1240-D,
// revision 10a, August 18,1999
// spc3r17.pdf : Information technology -
// SCSI Primary Commands - 3 (SPC-3)
// Creation : JCB 15/apr/2005
// Modif :
// ----------------------------------------------------------------------------
#ifndef _USBMS_RBC_H_
#define _USBMS_RBC_H_
#include "ms_device.h"
/***************/
/* DEFINITIONS */
/***************/
/* Define of INQUIRY command BE CARREFUL, the length is fixed */
#define VENDOR_ID "ATMEL " // [8] Provided by ATMEL
#define PRODUCT_ID "Mass Storage " // [16] Provided by ATMEL
#define PRODUCT_REVISION_LEVEL "0.01" // [4] Provided by ATMEL
#define VENDOR_SPECIFIC "Demo Mass Storage " // [20] Provided by ATMEL
#define VERSION_DESCRIPTOR "00000001" // [8] Provided by ATMEL
#define VENDOR_ID_LENGTH 8
#define PRODUCT_ID_LENGTH 16
#define PRODUCT_REVISION_LEVEL_LENGTH 4
#define VENDOR_SPECIFIC_LENGTH 20
#define VERSION_DESCRIPTOR_LENGTH 8
/* Table 2 - Reduced Block Command set, rbc-r10a.pdf */
#define RBC_TEST_UNIT_READY 0x00
#define RBC_REQUEST_SENSE 0x03
#define RBC_INQUIRY 0x12
#define RBC_MODE_SELECT 0x15
#define RBC_MODE_SENSE 0x1A
#define RBC_START_STOP_UNIT 0x1B
#define RBC_PREVENT_ALLOW_REMOVAL 0x1E
#define RBC_023 0x23 // CMD_READ_LONG
#define RBC_READ_CAPACITY 0x25
#define RBC_READ_10 0x28
#define RBC_WRITE_10 0x2A
#define RBC_VERIFY 0x2F
/* Table 8 - POWER CONDITIONS, rbc-r10a.pdf */
/* Code Support Description */
/* M = Command implementation is mandatory */
/* O = Command implementation is optional */
#define POWCOND_NOCHANGE 0 /* M No change in power condition. */
#define POWCOND_ACTIVE 1 /* M Place device in Active condition (highest power) */
#define POWCOND_IDLE 2 /* M Place device in Idle condition (lower power) */
#define POWCOND_STDBY 3 /* M Place device in Standby (lower power than Idle) */
/* 4 - Reserved */
#define POWCOND_SLEEP 5 /* M Place device in Sleep condition (lower power than STDBY) */
/* 6 - Reserved */
#define POWCOND_DEV_CTRL 7 /* O Device Control */
/* 0x08 - 0x0F - Reserved */
/* Table 49 - Sense key descriptions spc3r17.pdf */
#define SENSE_KEY_NO_SENSE (0x00)
#define SENSE_KEY_RECOVERED_ERROR (0x01)
#define SENSE_KEY_NOT_READY (0x02)
#define SENSE_KEY_MEDIUM_ERROR (0x03)
#define SENSE_KEY_HARDWARE_ERROR (0x04)
#define SENSE_KEY_ILLEGAL_REQUEST (0x05)
#define SENSE_KEY_UNIT_ATTENTION (0x06)
#define SENSE_KEY_DATA_PROTECT (0x07)
#define SENSE_KEY_BLANK_CHECK (0x08)
#define SENSE_KEY_VENDOR_SPECIFIC (0x09)
#define SENSE_KEY_COPY_ABORTED (0x0A)
#define SENSE_KEY_ABORTED_COMMAND (0x0B)
#define SENSE_KEY_EQUAL (0x0C) // Obsolete
#define SENSE_KEY_VOLUME_OVERFLOW (0x0D)
#define SENSE_KEY_MISCOMPARE (0x0E)
/* Table 30 - ASC and ASCQ assignments, spc3r17.pdf */
/* ASC code assignments */
#define ASC_NO_ADDITIONAL_SENSE_INFORMATION (0x00)
#define ASC_LOGICAL_UNIT_NOT_READY (0x04)
#define ASC_INVALID_FIELD_IN_CDB (0x24)
#define ASC_WRITE_PROTECTED (0x27)
#define ASC_FORMAT_ERROR (0x31)
#define ASC_INVALID_COMMAND_OPERATION_CODE (0x20)
#define ASC_NOT_READY_TO_READY_CHANGE (0x28)
#define ASC_MEDIUM_NOT_PRESENT (0x3A)
/* ASCQ code assignments : Additional Sense Code Qualifier */
#define ASCQ_00 (0x00)
#define ASCQ_FORMAT_COMMAND_FAILED (0x01)
#define ASCQ_OPERATION_IN_PROGRESS (0x07)
/* Table C.11
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -