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

📄 rbccmd.h

📁 该软件为在sunplus的61单片机上实现的mp3播放器.里面有完整的源代码.
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
// Synchronize Cache
*/
typedef struct _SYNCHRONIZE_CACHE_RBC {

	unsigned int OperationCode;    /* 0x35 */
	unsigned int Reserved[8];
	unsigned int Control;

} SYNCHRONIZE_CACHE_RBC, *PSYNCHRONIZE_CACHE_RBC;

/*
// Write Command
*/
typedef struct _WRITE_RBC {
    unsigned int OperationCode;	/* 2AH      */
    
    unsigned int Reserved0 : 3;
	unsigned int FUA : 1;
	unsigned int Reserved1 : 4;
	
	unsigned int LBA_3;
	unsigned int LBA_2;
	unsigned int LBA_1;
	unsigned int LBA_0;
	unsigned int Reserved2;
    unsigned int XferLength_1;
	unsigned int XferLength_0;
    unsigned int Control;
} WRITE_RBC, *PWRITE_RBC;

/*
// VERIFY Command
*/
typedef struct _VERIFY_RBC {
    unsigned int OperationCode;	/* 2FH */
    unsigned int Reserved0;
	unsigned int LBA_3;			/* Big Endian */
	unsigned int LBA_2;
	unsigned int LBA_1;
	unsigned int LBA_0;
	unsigned int Reserved1;
    unsigned int VerifyLength_1;		/* Big Endian */
	unsigned int VerifyLength_0;
	unsigned int Control;
} VERIFY_RBC, *PVERIFY_RBC;


/*
//***********************************************************************************
// SPC-2 of SCSI-3 commands
//***********************************************************************************
*/

/*
// INQUIRY Command
*/
typedef struct _INQUIRY_SPC {
	unsigned int OperationCode;	/* 12H */
	unsigned int EnableVPD:1 ;
    unsigned int CmdSupportData:1 ;
	unsigned int Reserved0:6 ;
	unsigned int PageCode;
	unsigned int Reserved1;
	unsigned int AllocationLen;
    unsigned int Control;
} INQUIRY_SPC, *PINQUIRY_SPC;


typedef struct _STD_INQUIRYDATA {
    unsigned int Reserved4[7];

    unsigned int SoftReset : 1;
    unsigned int CommandQueue : 1;
	unsigned int Reserved5 : 1;
	unsigned int LinkedCommands : 1;
	unsigned int Synchronous : 1;
	unsigned int Wide16Bit : 1;
	unsigned int Wide32Bit : 1;
	unsigned int RelativeAddressing : 1;

	unsigned int VendorId[8];

	unsigned int ProductId[16];

	unsigned int ProductRevisionLevel[4];

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

    unsigned int VendorSpecific[20];
    unsigned int InfoUnitSupport : 1;
    unsigned int QuickArbitSupport : 1;
    unsigned int Clocking : 2;
    unsigned int Reserved6 : 4;

    unsigned int  Reserved7 ;
    unsigned long int VersionDescriptor[8] ;

    unsigned int Reserved8[22];
} STD_INQUIRYDATA, *PSTD_INQUIRYDATA;

typedef struct _SERIALNUMBER_PAGE {
    unsigned int DeviceType : 5;
    unsigned int DeviceTypeQualifier : 3;

    unsigned int PageCode ;
    unsigned int Reserved0 ;

    unsigned int PageLength ;
    unsigned int SerialNumber[24] ;

}VPD_SERIAL_PAGE,* PVPD_SERIAL_PAGE;

#define ASCII_ID_STRING 32
typedef struct _ID_DESCRIPTOR {
	unsigned int   CodeSet : 4;
	unsigned int   Reserved0 : 4;

	unsigned int   IDType : 4;
    unsigned int   Association : 2;
    unsigned int   Reserved1 : 2;

    unsigned int   Reserved2;

	unsigned int   IDLength ;
	unsigned int   AsciiID[ASCII_ID_STRING];
} ASCII_ID_DESCRIPTOR,* PASCII_ID_DESCRIPTOR;

typedef struct _DEVICE_ID_PAGE
{
    unsigned int DeviceType : 5;
    unsigned int DeviceTypeQualifier : 3;

    unsigned int PageCode ;
    unsigned int Reserved0 ;

    unsigned int PageLength ;

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



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

/*
// Mode Sense
*/
typedef struct _MODE_SENSE_SPC {
    unsigned int OperationCode;	/* 1AH */
    unsigned int Reseved0 : 3 ;
    unsigned int DisableBlockDescriptor : 1 ;
    unsigned int Reserved0 : 4 ;
    unsigned int PageCode:6 ;
    unsigned int PageControl : 2 ;
    unsigned int Reserved1;
    unsigned int ParameterLen;
    unsigned int Control;
} MODE_SENSE_SPC, * PMODE_SENSE_SPC;

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

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

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

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

typedef struct _REQUEST_SENSE_DATA {
    unsigned int ResponseCode : 7;
    unsigned int Valid : 1;

    unsigned int SegmentNum;

    unsigned int SenseKey : 4;
    unsigned int Reserved0 : 1;
    unsigned int WrongLenIndicator : 1;
    unsigned int EndofMedium : 1;
    unsigned int FileMark : 1;

    unsigned int Info_0;
    unsigned int Info_1;
    unsigned int Info_2;
    unsigned int Info_3;

    unsigned int AdditionalSenseLen;

    unsigned int CommandSpecInfo_0;
    unsigned int CommandSpecInfo_1;
    unsigned int CommandSpecInfo_2;
    unsigned int CommandSpecInfo_3;

    unsigned int ASC;
    unsigned int ASCQ;
    unsigned int FieldReplacableUnitCode;
    unsigned int SenseKeySpec_0 : 7;
    unsigned int SenseKeySpecValid : 1;
    unsigned int SenseKeySpec_1;
    unsigned int SenseKeySpec_2;

} REQUEST_SENSE_DATA, *PREQUEST_SENSE_DATA;

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

/*
// Write Buffer
*/
typedef struct _WRITE_BUFFER_SPC {
    unsigned int OperationCode;    /* 3BH */
    unsigned int Mode:4 ;
    unsigned int Reserved0:4 ;
	unsigned int BufferID;
    unsigned int BufferOff_2;
    unsigned int BufferOff_1;
    unsigned int BufferOff_0;
    unsigned int ParameterLen_2;
    unsigned int ParameterLen_1;
	unsigned int ParameterLen_0;
    unsigned int 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_RBC         CmdRead10;
    WRITE_RBC        CmdWrite10;
    MODE_SELECT_SPC  CmdModeSel10;
    MODE_SENSE_SPC   CmdModeSen10;

} CDB_RBC, *PCDB_RBC;

#endif

⌨️ 快捷键说明

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