scsiblk.h
来自「RDC R2886 USB Ehci ohc测试源码,paradigm c++上」· C头文件 代码 · 共 221 行
H
221 行
#define test_unit_rdy6_opcd 0x00
#define send_diag12_opcd 0x1d
#define prevent_allow6_opcd 0x1e
#define read_cap10_opcd 0x25
#define read10_opcd 0x28
#define write10_opcd 0x2a
#define read12_opcd 0xa8
#define write12_opcd 0xaa
#define inquiry6_opcd 0x12
#define seek10_opcd 0x2b
#define rzero10_opcd 0x01
#define start_stop_opcd 0x1b
#define verify_opcd 0x2f
#define mode_select_55 0x55
#define mode_sense_5a 0x5a
#define mode_select_15 0x15
#define mode_sense_1a 0x1a
#define read_format_cap 0x23
#define request_sense 0x03
#define VENDOR_CMD 0xff
#define GET_COUNT_OF_FLASH 0x00
#define GET_ID_OF_FLASH 0x01
#define ERASE_FLASH_BLK 0x02
#define READ_4_BYTE 0x03
#define WRITE_4_BYTE 0x04
#define ENTER_PASSWD 0x05
#define EN_SECURITY 0x06
#define CHG_PASSWD 0x07
#define Ready 0
#define COMMAND_PHASE 1
#define DATA_OUT_PHASE 2
#define DATA_IN_PHASE 3
#define STATUS_PHASE 4
#define CONTROL_DATA_OUT_PHASE 5
#define MAX_LOG_BLK 30000
#define test_unit_ready_cdb6 {test_unit_rdy6_opcd,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define inquiry_cdb6 {inquiry6_opcd ,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define prevent_allow_removal_cdb6 {prevent_allow6_opcd,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0}
#define read_cap_cdb10 {read_cap10_opcd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define read_cdb10 {read10_opcd,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}
#define write_cdb10 {write10_opcd,0,0,0,0,0x01,0,0,2,0,0,0,0,0,0,0}
#define send_diag_cdb12 {send_diag12_opcd,0x40,0,0,0,6,0,0,0,0,0,0,0,0,0,0}
#define seek_cdb10 {seek10_opcd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define rzero_cdb10 {rzero10_opcd,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
#define CBW_DataIN 0x80
#define CBW_DataOUT 0x00
struct CBW
{
unsigned char dCBWSignature[4];
long dCBWTag;
long dCBWDataTransferLength;
unsigned char bmCBWFlags;
unsigned char bCBWLUN;
unsigned char bCBWCBLength;
unsigned char CDB[16];
};
struct CSW
{
unsigned char dCSWSignature[4];
unsigned long dCSWTag;
unsigned long dCSWDataResidue;
unsigned char bCSWStatus;
};
typedef struct scsi_blk {
struct CBW command;
struct CSW status;
unsigned long start_log_blk;
unsigned long len_of_blk;
unsigned long data_len; /* in Byte */
unsigned long cur_pos; /* in Byte */
unsigned long cur_log_blk;
unsigned long cur_pos_in_cur_blk;
unsigned char phase;
unsigned char *data_buf;
} scsi_blk;
struct INQUIRY_DATA
{
unsigned char PDT;
unsigned char RMB;
unsigned char ANSI;
unsigned char RDF;
unsigned char ADD_LEN;
unsigned char reserv[3];
unsigned char VENDOR_INFO[8];
unsigned char PRODUCT_INFO[16];
unsigned char PRODUCT_LEV[4];
};
struct MP6
{
unsigned char DATA_LEN;
unsigned char MEDIUM_TYPE_CODE;
unsigned char WP;
unsigned char RESERVED;
};
struct RW_ERR_RECOVER_PAGE
{
unsigned char PAGE_CODE;
unsigned char PAGE_LEN;
unsigned char ERR_PARM;
unsigned char READ_RETRY_COUNT;
unsigned char RESERVED[4];
unsigned char WRITE_RETRY_COUNT;
unsigned char RESERVED2[3];
};
struct FLEX_PAGE
{
unsigned char PAGE_CODE;
unsigned char PAGE_LEN;
unsigned char TRANS_RATE_H;
unsigned char TRANS_RATE_L;
unsigned char NUM_OF_HEAD;
unsigned char NUM_OF_TRACK;
unsigned char BYTE_PER_SEC_H;
unsigned char BYTE_PER_SEC_L;
unsigned char NUM_OF_CYL_H;
unsigned char NUM_OF_CYL_L;
unsigned char RESERVED1[9];
unsigned char MOTOR_ON_DELAY;
unsigned char MOTOR_OFF_DELAY;
unsigned char RESERVED2[7];
unsigned char MEDIUM_ROT_RATE_H;
unsigned char MEDIUM_ROT_RATE_L;
unsigned char RESERVED3[2];
};
struct REMOVEABLE_BLK_CAP_PAGE
{
unsigned char PAGE_CODE;
unsigned char PAGE_LEN;
unsigned char RESERVED1;
unsigned char TLUN;
unsigned char RESERVED2[8];
};
struct TIMER_AND_PROTECT_PAGE
{
unsigned char PAGE_CODE;
unsigned char PAGE_LEN;
unsigned char RESERVED1;
unsigned char INACTIVITY_TIMER;
unsigned char RESERVED2[4];
};
#if 1
struct MODE_PARAMETER_8
{
unsigned char PAGE_LEN_H;
unsigned char PAGE_LEN_L;
unsigned char MEDIUM_TYPE_CODE;
unsigned char WP;
unsigned char RESERVED[4];
};
#endif
struct MODE_DATA_6
{
struct MP6 mp6 ;
struct RW_ERR_RECOVER_PAGE rw_err_recover_page;
struct FLEX_PAGE flex_page;
struct REMOVEABLE_BLK_CAP_PAGE removeable_blk_cap_page;
struct TIMER_AND_PROTECT_PAGE timer_and_protect_page;
};
#if 1
struct MODE_DATA_8
{
struct MODE_PARAMETER_8 mode_parameter_8 ;
struct RW_ERR_RECOVER_PAGE rw_err_recover_page;
struct FLEX_PAGE flex_page;
struct REMOVEABLE_BLK_CAP_PAGE removeable_blk_cap_page;
struct TIMER_AND_PROTECT_PAGE timer_and_protect_page;
};
#endif
#define MODE_PARAMETER_6_INIT {0x43,0x00,0x00,0x00}
// #define MODE_PARAMETER_8_INIT {70,0x00,0x00,0x00,{0,0,0,0}}
#define MODE_PARAMETER_8_INIT {0,70,0x00,0x00,{0,0,0,0}}
#define RW_ERR_RECOVER_PAGE_INIT {0x01,0x0a,0x00,0x03,{0x00,0x00,0x00,0x00},0x80,03,00,00}
#define FLEX_PAGE_INIT {0x05,0x1e,0x13,0x88,0x08,0x10,0x02,0x00,0x00,0xE0,{0,0,0,0,0,0,0,0,0},0x05,0x1e,{0,0,0,0,0,0,0},0x01,0x68,{0,0}}
#define REMOVEABLE_BLK_CAP_PAGE_INIT {0x1b,0x0a,0x00,0x01,{0,0,0,0,0,0,0,0}}
#define TIMER_AND_PROTECT_PAGE_INIT {0x1c,0x06,0x00,0x05,{0,0,0,0}}
struct SENSE_KEY_DATA
{
unsigned char ERR_CODE;
unsigned char RESERVED1;
unsigned char KEY;
unsigned char INFO[4];
unsigned char ADDITION_LEN;
unsigned char RESERVED2[4];
unsigned char ASC;
unsigned char ASCQ;
unsigned char RESERVED3[4];
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?