?? rbccmd.h
字號:
#ifndef __RBCCMD_H__
#define __RBCCMD_H__
/*
// RBC commands
*/
#define RBC_CMD_FORMAT 0x04
#define RBC_CMD_READ10 0x28
#define RBC_CMD_READCAPACITY 0x25
#define RBC_CMD_STARTSTOPUNIT 0x1B
#define RBC_CMD_SYNCCACHE 0x35
#define RBC_CMD_VERIFY10 0x2F
#define RBC_CMD_WRITE10 0x2A
/*
// SPC-2 commands
*/
#define SPC_CMD_INQUIRY 0x12
#define SPC_CMD_MODESELECT6 0x15
#define SPC_CMD_MODESENSE6 0x1A
#define SPC_CMD_PERSISTANTRESERVIN 0x5E
#define SPC_CMD_PERSISTANTRESERVOUT 0x5F
#define SPC_CMD_PRVENTALLOWMEDIUMREMOVAL 0x1E
#define SPC_CMD_RELEASE6 0x17
#define SPC_CMD_REQUESTSENSE 0x03
#define SPC_CMD_RESERVE6 0x16
#define SPC_CMD_TESTUNITREADY 0x00
#define SPC_CMD_WRITEBUFFER 0x3B
#define SPC_CMD_READLONG 0x23
typedef union {
struct
{
INT8 Type;
INT8 Index;
} Descriptor;
struct
{
INT8 tx0; // MSB for 8051 Keil C
INT8 tx1;
INT8 endp;
INT8 c0; // LSB for 8051 Keil C
} chars;
struct
{
INT8 c3; // MSB for 8051 Keil C
INT8 c2;
INT8 c1;
INT8 c0; // LSB for 8051 Keil C
} chars0;
struct
{
INT16 i1; // MSW for 8051 keil C
INT16 i0; // LSW for 8051 Keil C
} ints;
INT32 u0;
} FLEXI_INT32;
typedef union {
struct
{
INT8 c1; // MSB for 8051 Keil C
INT8 c0; // LSB for 8051 Keil C
} chars;
INT16 i0;
} FLEXI_INT16, * PFLEXI_INT16;
/*
// ATAPI Command Descriptor Block
*/
typedef struct _READ_10 {
BYTE OperationCode;
BYTE Reserved1;
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
BYTE Reserved2;
BYTE XferLen_1;
BYTE XferLen_0;
BYTE Reserved3[3];
} READ_10, * PREAD_10;
typedef struct _WRITE_10 {
BYTE OperationCode;
BYTE Reserved1;
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
BYTE Reserved2;
BYTE XferLen_1;
BYTE XferLen_0;
BYTE Reserved3[3];
} WRITE_10, *PWRITE_10;
typedef struct _MODE_SENSE_10 {
BYTE OperationCode;
BYTE Reserved1;
BYTE PageCode;// : 6;
BYTE Pc;// : 2;
BYTE Reserved2[4];
BYTE ParameterListLengthMsb;
BYTE ParameterListLengthLsb;
BYTE Reserved3[3];
} MODE_SENSE_10, *PMODE_SENSE_10;
typedef struct _MODE_SELECT_10 {
BYTE OperationCode;
BYTE Reserved1;// : 4;
BYTE PFBit;// : 1;
BYTE Reserved2;// : 3;
BYTE Reserved3[5];
BYTE ParameterListLengthMsb;
BYTE ParameterListLengthLsb;
BYTE Reserved4[3];
} MODE_SELECT_10, *PMODE_SELECT_10;
/*
////////////////////////////////////////////////////////////////////////////////////
// Command Descriptor Block
// _RBC : Reduced Block Command
// _SPC : SPC-2 SCSI primary Command - 2
////////////////////////////////////////////////////////////////////////////////////
*/
/*
// Generic
*/
/*
// Generic
*/
typedef struct _GENERIC_CDB {
BYTE OperationCode;
BYTE Reserved[14];//0618 原來是15
} GENERIC_CDB,*PGENERIC_CDB;
typedef struct _GENERIC_RBC {
BYTE OperationCode;
BYTE Reserved[8];
BYTE Control;
} GENERIC_RBC,*PGENERIC_RBC;
/*
// format unit
*/
typedef struct _FORMAT_RBC {
BYTE OperationCode; /* 04H */
BYTE VendorSpecific;
BYTE Increment;// : 1;
BYTE PercentorTime;// : 1;
BYTE Progress;// : 1;
BYTE Immediate;// : 1;
BYTE VendorSpecific1;// : 4;
BYTE Reserved2[2];
BYTE Control;
} FORMAT_RBC, *PFORMAT_RBC;
/*
// Read Command
*/
typedef struct _READ_RBC {
BYTE OperationCode; /* 10H */
BYTE VendorSpecific;
union{
struct
{
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
} LBA_W8 ;
INT32 LBA_W32;
}LBA;
BYTE Reserved;
//BYTE XferLength_1;
//BYTE XferLength_0;
INT16 XferLength;
BYTE Control;
//BYTE Reserved1[3];
} READ_RBC, *PREAD_RBC;
/*
// Read Capacity Data - returned in Big Endian format
*/
typedef struct _READ_CAPACITY_DATA {
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
BYTE BlockLen_3;
BYTE BlockLen_2;
BYTE BlockLen_1;
BYTE BlockLen_0;
} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA;
//////////////////////////////////////////////////
typedef struct _READ_LONG_CMD{
BYTE OperationCode;
BYTE LogicalUnitNum;// :3;
BYTE RES_1;// :5;
BYTE RES_2;
BYTE RES_3;
BYTE RES_4;
BYTE RES_5;
BYTE RES_6;
INT16 AllocationLen;
BYTE RES_7;
BYTE RES_8;
BYTE RES_9;
}READ_LONG_CMD, *PREAD_LONG_CMD;
typedef struct _READ_LONG {
BYTE RES_1;
BYTE RES_2;
BYTE RES_3;
BYTE CAP_LIST_LEN;
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
BYTE Descripter;
BYTE BlockLen_2;
BYTE BlockLen_1;
BYTE BlockLen_0;
} READ_LONG, *PREAD_LONG;
/*
// Read Capacity command
*/
typedef struct _READ_CAPACITY_RBC {
BYTE OperationCode; /* 10H */
union {
FLEXI_INT32 l0[2];
INT32 l[2];
READ_CAPACITY_DATA CapData; /* Reserved area, here is used as temp*/
} tmpVar;
BYTE Control;
} READ_CAPACITY_RBC, *PREAD_CAPACITY_RBC;
typedef struct _READ_CAPACITY_RSP {
INT32 LastLBA;
INT32 BlockSize;
} READ_CAPACITY_RSP, *PREAD_CAPACITY_RSP;
/*
// START_STOP_UNIT
*/
typedef struct _START_STOP_RBC {
BYTE OperationCode; /*1BH*/
BYTE Immediate;//: 1;
BYTE Reserved1;// : 7;
BYTE Reserved2[2];
union _START_STOP_FLAGS
{
struct
{
BYTE Start ;// : 1;
BYTE LoadEject ;//: 1;
BYTE Reserved3 ;//: 2;
BYTE PowerConditions;//: 4;
} bits0;
struct
{
BYTE MediumState ;//: 2;
BYTE Reserved3 ;//: 2;
BYTE PowerConditions;//: 4;
} bits1;
} Flags;
BYTE Control;
} START_STOP_RBC, *PSTART_STOP_RBC;
/*
// Synchronize Cache
*/
typedef struct _SYNCHRONIZE_CACHE_RBC {
BYTE OperationCode; /* 0x35 */
BYTE Reserved[8];
BYTE Control;
} SYNCHRONIZE_CACHE_RBC, *PSYNCHRONIZE_CACHE_RBC;
/*
// Write Command
*/
typedef struct _WRITE_RBC {
BYTE OperationCode; /* 2AH */
//BYTE Reserved0 : 3;
//BYTE FUA : 1;
//BYTE Reserved1 : 4;
BYTE VendorSpecific;
union{
struct
{
BYTE LBA_3;
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
} LBA_W8 ;
INT32 LBA_W32;
} LBA;
BYTE Reserved2;
INT16 XferLength;
BYTE Control;
} WRITE_RBC, *PWRITE_RBC;
/*
// VERIFY Command
*/
typedef struct _VERIFY_RBC {
BYTE OperationCode; /* 2FH */
BYTE Reserved0;
BYTE LBA_3; /* Big Endian */
BYTE LBA_2;
BYTE LBA_1;
BYTE LBA_0;
BYTE Reserved1;
BYTE VerifyLength_1; /* Big Endian */
BYTE VerifyLength_0;
BYTE Control;
} VERIFY_RBC, *PVERIFY_RBC;
/*
//***********************************************************************************
// SPC-2 of SCSI-3 commands
//***********************************************************************************
*/
/*
// INQUIRY Command
*/
typedef struct _INQUIRY_SPC {
BYTE OperationCode; /* 12H */
BYTE EnableVPD;//:1 ;
BYTE CmdSupportData;//:1 ;
BYTE Reserved0;//:6 ;
BYTE PageCode;
BYTE Reserved1;
BYTE AllocationLen;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -