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 + -
显示快捷键?