⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rbccmd.h

📁 基于Embest开发环境
💻 H
📖 第 1 页 / 共 2 页
字号:
    BYTE Control;
} INQUIRY_SPC, *PINQUIRY_SPC;


typedef struct _STD_INQUIRYDATA {
    BYTE DeviceType;// : 5;
    BYTE Reserved0 ;//: 3;

    BYTE Reserved1 ;//: 7;
    BYTE RemovableMedia;// : 1;

    BYTE Reserved2;

    BYTE Reserved3 ;//: 5;
    BYTE NormACA ;//: 1;
    BYTE Obsolete0 ;//: 1;
    BYTE AERC ;//: 1;

    BYTE Reserved4[3];

    BYTE SoftReset ;//: 1;
    BYTE CommandQueue ;// 1;
	BYTE Reserved5 ;// 1;
	BYTE LinkedCommands ;// 1;
	BYTE Synchronous ;// 1;
	BYTE Wide16Bit ;// 1;
	BYTE Wide32Bit ;// 1;
	BYTE RelativeAddressing ;// 1;

	BYTE VendorId[8];

	BYTE ProductId[16];

	BYTE ProductRevisionLevel[4];

/*
//  Above is 36 bytes
//  can be tranmitted by Bulk
*/

    BYTE VendorSpecific[20];
    BYTE InfoUnitSupport ;// 1;
    BYTE QuickArbitSupport ;// 1;
    BYTE Clocking ;// 2;
    BYTE Reserved6 ;// 4;

    BYTE  Reserved7 ;
    INT16 VersionDescriptor[8] ;

    BYTE Reserved8[22];
} STD_INQUIRYDATA, *PSTD_INQUIRYDATA;

typedef struct _SERIALNUMBER_PAGE {
    BYTE DeviceType ;// 5;
    BYTE DeviceTypeQualifier ;// 3;

    BYTE PageCode ;
    BYTE Reserved0 ;

    BYTE PageLength ;
    BYTE SerialNumber[24] ;

}VPD_SERIAL_PAGE,* PVPD_SERIAL_PAGE;

#define ASCII_ID_STRING 32
typedef struct _ID_DESCRIPTOR {
	BYTE   CodeSet ;// 4;
	BYTE   Reserved0 ;// 4;

	BYTE   IDType ;// 4;
    BYTE   Association ;// 2;
    BYTE   Reserved1 ;// 2;

    BYTE   Reserved2;

	BYTE   IDLength ;
	BYTE   AsciiID[ASCII_ID_STRING];
} ASCII_ID_DESCRIPTOR,* PASCII_ID_DESCRIPTOR;

typedef struct _DEVICE_ID_PAGE
{
    BYTE DeviceType ;// 5;
    BYTE DeviceTypeQualifier ;// 3;

    BYTE PageCode ;
    BYTE Reserved0 ;

    BYTE PageLength ;

    ASCII_ID_DESCRIPTOR   AsciiIdDescriptor[1];
} VPD_DEVICE_ID_PAGE, * PVPD_DEVICE_ID_PAGE;



/*
// Mode Select
*/
typedef struct _MODE_SELECT_SPC {
	BYTE OperationCode;	/* 15H */
	BYTE SavePage ;// 1 ;
	BYTE Reseved0 ;// 3 ;
	BYTE PageFormat ;// 1 ;
	BYTE Reserved1 ;// 3 ;
	BYTE Reserved2[2];
	BYTE ParameterLen;
	BYTE Control;
} MODE_SELECT_SPC, * PMODE_SELECT_SPC;

typedef struct _MBR_BLOCK {
  BYTE Res[454];
  INT32 StartSector;
  INT32 TotalSector;
  BYTE Res1[50];
} MBR_BLOCK,* PMBR_BLOCK;

typedef struct _BPB_BLOCK {
  BYTE BS_jmpBoo[3];
  BYTE BS_OEMName[8];
  INT16 BPB_BytesPerSec;
  BYTE BPB_SecPerClus;
  BYTE BPB_RsvdSecCn[2];
  BYTE BPB_NumFATs;
  INT16 BPB_RootEntCnt;
  INT16 BPB_TotSec16;
  BYTE BPB_Media;
  INT16 BPB_FATSz16;
  INT16 BPB_SecPerTrk;
  INT16 BPB_NumHeads;
  unsigned long BPB_HiddSec;
  unsigned long BPB_TotSec32;
  BYTE BS_DrvNum;
  BYTE BS_Reserved1;
  BYTE BS_BootSig;
  BYTE BS_VolID[4];
  BYTE BS_VolLab[11];
  BYTE BS_FilSysType[8];
  BYTE ExecutableCode[448];
  BYTE Marker[2];
} * PBPB_BLOCK;//,* PBPB_BLOCK;

typedef struct _SYS_INFO_BLOCK{
  unsigned long StartSector;
  unsigned long TotalSector;
  //BYTE BS_jmpBoo[3];
  //BYTE BS_OEMName[8];
  INT16 BPB_BytesPerSec;
  BYTE BPB_SecPerClus;
  INT16 BPB_RsvdSecCn;//保留扇区数,从DBR到FAT
  BYTE BPB_NumFATs;
  INT16 BPB_RootEntCnt;
  INT16 BPB_TotSec16;
  BYTE BPB_Media;
  INT16 BPB_FATSz16;
  INT16 BPB_SecPerTrk;
  INT16 BPB_NumHeads;
  unsigned long BPB_HiddSec;
  unsigned long BPB_TotSec32;
  BYTE BS_DrvNum;
  //BYTE BS_Reserved1;
  BYTE BS_BootSig;
  BYTE BS_VolID[4];
  BYTE BS_VolLab[11];
  BYTE BS_FilSysType[8];
  //BYTE ExecutableCode[448];
  //BYTE Marker[2];
  ///////////////////////////////
  unsigned long FatStartSector;
  unsigned long RootStartSector;
  unsigned long DataStartSector;
  unsigned long FirstDataSector;
  //unsigned long FirstSectorofCluster;
} SYS_INFO_BLOCK,* PSYS_INFO_BLOCK;

typedef struct _FILE_INFO{
  unsigned char bFileOpen;
  unsigned int StartCluster;
  unsigned long LengthInByte;
  unsigned int ClusterPointer;
  unsigned long SectorPointer;
  unsigned int OffsetofSector;
  unsigned char SectorofCluster;
  unsigned long pointer;
  unsigned int	FatSectorPointer;
  

} FILE_INFO, * PFILE_INFO;

typedef struct _DIR_INFO{
	unsigned char name[8];
	unsigned char extension[3];
	unsigned char attribute;
	unsigned char Reserved[10];
	unsigned int lastUpdateDate;
	unsigned int lastUpdateTime;
	unsigned int startCluster;
	unsigned long length;
} DIR_INFO,* PDIR_INFO;
/*
// Mode Sense
*/
typedef struct _MODE_SENSE_SPC {
    BYTE OperationCode;	/* 1AH */
    BYTE Reseved0 ;// 3 ;
    BYTE DisableBlockDescriptor ;// 1 ;
    BYTE Reserved0 ;// 4 ;
    BYTE PageCode;//6 ;
    BYTE PageControl ;// 2 ;
    BYTE Reserved1;
    BYTE ParameterLen;
    BYTE Control;
} MODE_SENSE_SPC, * PMODE_SENSE_SPC;

typedef struct _MODE_PARAMETER_HEAD {
    BYTE DataLen;
    BYTE MediumType;
    BYTE DeviceParameter;
    BYTE BlockDescriptorLen;
} MODE_PARAMETER_HEAD, * PMODE_PARAMETER_HEAD;

/*
// Define Device Capabilities page.
*/
typedef struct _MODE_RBC_DEVICE_PARAMETERS_PAGE {
    BYTE PageCode ;// 6;
	BYTE Reserved ;// 1;
    BYTE PageSavable ;// 1;
    BYTE PageLength;
    BYTE WriteCacheDisable ;// 1;
    BYTE Reserved1 ;// 7;
    BYTE LogicalBlockSize[2];
    BYTE NumberOfLogicalBlocks[5];
    BYTE PowerPerformance;
    BYTE Lockable ;// 1;
    BYTE Formattable ;// 1;
    BYTE Writable ;// 1;
    BYTE Readable ;// 1;
    BYTE Reserved2 ;// 4;
    BYTE Reserved3;
}MODE_RBC_DEVICE_PARAMETERS_PAGE, *PMODE_RBC_DEVICE_PARAMETERS_PAGE;

/*
// prevent/allow medium removal
*/
typedef struct _MEDIA_REMOVAL_SPC {
	BYTE OperationCode;    /* 1EH */
	BYTE Reserved0[3];
	BYTE Prevent;
	//BYTE Reserved1:6 ;
	//BYTE Control;
} MEDIA_REMOVAL_SPC, *PMEDIA_REMOVAL_SPC;

/*
// Request Sense
*/
typedef struct _REQUEST_SENSE_SPC {
    BYTE OperationCode;    /* 03H */
    BYTE Reserved[3];
    BYTE AllocationLen;
    BYTE Control;
} REQUEST_SENSE_SPC, *PREQUEST_SENSE_SPC;

typedef struct _REQUEST_SENSE_DATA {
    BYTE ResponseCode ;// 7;
    BYTE Valid ;// 1;

    BYTE SegmentNum;

    BYTE SenseKey ;// 4;
    BYTE Reserved0 ;// 1;
    BYTE WrongLenIndicator ;// 1;
    BYTE EndofMedium ;// 1;
    BYTE FileMark ;// 1;

    BYTE Info_0;
    BYTE Info_1;
    BYTE Info_2;
    BYTE Info_3;

    BYTE AdditionalSenseLen;

    BYTE CommandSpecInfo_0;
    BYTE CommandSpecInfo_1;
    BYTE CommandSpecInfo_2;
    BYTE CommandSpecInfo_3;

    BYTE ASC;
    BYTE ASCQ;
    BYTE FieldReplacableUnitCode;
    BYTE SenseKeySpec_0 ;// 7;
    BYTE SenseKeySpecValid ;// 1;
    BYTE SenseKeySpec_1;
    BYTE SenseKeySpec_2;

} REQUEST_SENSE_DATA, *PREQUEST_SENSE_DATA;

/*
// Test Unit Ready
*/
typedef struct _TEST_UNIT_SPC {
	BYTE OperationCode;    /* 00H */
	BYTE Reserved[4];
	BYTE Control;
} TEST_UNIT_SPC, *PTEST_UNIT_SPC;

/*
// Write Buffer
*/
typedef struct _WRITE_BUFFER_SPC {
    BYTE OperationCode;    /* 3BH */
    BYTE Mode;//4 ;
    BYTE Reserved0;//4 ;
	BYTE BufferID;
    BYTE BufferOff_2;
    BYTE BufferOff_1;
    BYTE BufferOff_0;
    BYTE ParameterLen_2;
    BYTE ParameterLen_1;
	BYTE ParameterLen_0;
    BYTE Control;
} WRITE_BUFFER_SPC, *PWRITE_BUFFER_SPC;

typedef union _CDB_RBC {
    GENERIC_CDB             Cdb_Generic;
  
     // RBC commands
    GENERIC_RBC             RbcCdb_Generic;

    FORMAT_RBC              RbcCdb_Format;
    READ_RBC                RbcCdb_Read;
    READ_CAPACITY_RBC       RbcCdb_ReadCapacity;
    START_STOP_RBC          RbcCdb_OnOffUnit;
    SYNCHRONIZE_CACHE_RBC   RbcCdb_SyncCache;
    VERIFY_RBC              RbcCdb_Verify;
    WRITE_RBC               RbcCdb_Write;

   
    // SPC-2 commands
   
    INQUIRY_SPC             SpcCdb_Inquiry;
    MODE_SELECT_SPC         SpcCdb_ModeSelect;
    MODE_SENSE_SPC          SpcCdb_ModeSense;
    MEDIA_REMOVAL_SPC       SpcCdb_Remove;
    REQUEST_SENSE_SPC       SpcCdb_RequestSense;
    TEST_UNIT_SPC           SpcCdb_TestUnit;
    WRITE_BUFFER_SPC        SpcCdb_WriteBuffer;

    // ATAPI Commands
    READ_10         CmdRead10;
    WRITE_10        CmdWrite10;
    MODE_SELECT_10  CmdModeSel10;
    MODE_SENSE_10   CmdModeSen10;
    //////////////////////////////////////
    READ_LONG_CMD	SpcCdb_ReadLong;

} CDB_RBC, *PCDB_RBC;

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -