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

📄 scsi.h

📁 TELECHIPS MP3解决方案UMS实现源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////////////7
// MODE SENSE(6)

/* Page Control */
#define SCSI_PAGE_CONTROL_CURRENT		0
#define SCSI_PAGE_CONTROL_CHANGEABLE	1
#define SCSI_PAGE_CONTROL_DEFAULT		2
#define SCSI_PAGE_CONTROL_SAVED			3

/* Mode Page Codes */
#define SCSI_MODE_CODE_RW_RECOVERY		0x01
#define SCSI_MODE_CODE_CONNECT			0x02
#define SCSI_MODE_CODE_FORMAT_DEVICE	0x03
#define SCSI_MODE_CODE_REGID_DISK		0x04
#define SCSI_MODE_CODE_FLEXIBLE_DISK	0x05
#define SCSI_MODE_CODE_VERIFY_RECOVER	0x07
#define SCSI_MODE_CODE_CACHING			0x08
#define SCSI_MODE_CODE_PERIPHERAL		0x09
#define SCSI_MODE_CODE_CONTROL			0x0a
#define SCSI_MODE_CODE_MEDIA_SUPPORT	0x0b
#define SCSI_MODE_CODE_NOTCH_PARTITION	0x0c

#define SCSI_MODE_CODE_ALL				0x3f

#pragma packed on
typedef struct __tag_scsi_command_MODE_SENSE6
{
	unsigned char		opcode;			// must be 0x1a = MODE_SENSE6
	
	unsigned char		bLogicalUnit;	// LogicalUnit:3, Reserved1:1, DBD:1, Reserved2:3
	
	unsigned char		bPageCode;		// PC:2, PageCode:6

	unsigned char		bReserved3;
	unsigned char		bAllocationLength;
	unsigned char		bControl;
} SCSI_COMMAND_MODE_SENSE6;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PARAM_HEADER6
{
	unsigned char		bModeDataLength;
	unsigned char		bMediaType;
	unsigned char		bDeviceParam;
	unsigned char		bBlockDescLength;
} SCSI_MODE_PARAM_HEADER6;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PARAM_BLOCK_DESC
{
	unsigned char		bDensityCode;
	unsigned char		xNumberOfBlock[3];
	unsigned char		bReserved;
	unsigned char		xModeDataLength[3];
} SCSI_MODE_PARAM_BLOCK_DESC;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PAGE
{
	unsigned char		fPageCode;

	unsigned char		bPageLength;
	unsigned char		Parameters[1];
	/* ...... */
} SCSI_MODE_PAGE;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_RW_RECOVERY
{
	unsigned char		bPageCode;		// = PS:1, Reserved1:1, PageCode:6

	unsigned char		bPageLength;
	
	unsigned char		bAttributes;	// = AWRE:1, ARRE:1, TB:1, RC:1
										//   EER:1, PER:1, DTE:1, DCR:1
	unsigned char		bReadRetryCount;
	unsigned char		bCorrectionSpan;
	unsigned char		bHeadOffsetCount;
	unsigned char		bDataStrobeOffsetCount;
	unsigned char		bReserved2;
	unsigned char		bWriteRetryCount;
	unsigned char		bReserved3;
	unsigned short int	wRecoveryTimeLimit;
} SCSI_MODE_PAGE_RW_RECOVERY;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_FLEXIBLE_DISK
{
	unsigned char		bPageCode;		// 05h

	unsigned char		bPageLength;
	unsigned short int	wTransferRate;
	unsigned char		bNumberOfHead;
	unsigned char		bSectorPerTrack;
	unsigned short int	wSectorSize;
	unsigned short int	wNumberOfCylinder;
	unsigned short int	wStartCylinderWriteCompensation;
	unsigned short int	wStartCylinderReduceCurrent;
	unsigned short int	wDriveStepRate;
	unsigned char		bDriveStepPluseWidth;
	unsigned short int	wHeadSettleDelay;
	unsigned char		bMotorOnDelay;
	unsigned char		bMotorOffDelay;

	unsigned char		bDeviceStatus;
	unsigned char		bSPC;

	unsigned char		bWriteCompensation;
	unsigned char		bHeadLoadDelay;
	unsigned char		bHeadUnloadDelay;

	unsigned char		bPin34_Pin2;
	unsigned char		bPin4_Pin1;	

	unsigned short int	wMediaRotationRate;
	unsigned char		bReserved4;
	unsigned char		bReserved5;
} SCSI_MODE_PAGE_FLEXIBLE_DISK;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_CACHING
{
	unsigned char		bPageCode;			// = PS:1, Reserved1:1, PageCode:6 (0x08)

	unsigned char		bPageLenLength;
	
	unsigned char		bCacheCapability;	// = Reserved2:5, WCE:1, MF:1, RCD:1

	unsigned char		bRetentionPriority;	// = ReadRetention:4, WriteRetention:4

	unsigned short int	wDisableLen;
	unsigned short int	wMinPrefetch;
	unsigned short int	wMaxPrefetch;
	unsigned short int	wMaxPrefetchCeiling;
} SCSI_MODE_PAGE_CACHING;
#pragma packed off

#pragma packed on
typedef struct __tag_scsi_MODE_PAGE_NOTCH_PARTITION
{
	unsigned char		bPageCode;			// = PS:1, Reserved1:1, PageCode:6 (0x0c)

	unsigned char		bPageLength;
	
	unsigned char		bNotchAttributes;	// = ND:1, LPN:1, Reserved2:6
	
	unsigned char		bReserved3;
	unsigned short int	wMaximumNotches;
	unsigned short int	wActiveNotch;
	unsigned long int	dwStartBoundary;
	unsigned long int	dwEndBoundary;
	unsigned char		abPagesNotched[8];
} SCSI_MODE_PAGE_NOTCH_PARTITION;
#pragma packed off

/////////////////////////////////////////////////////////////////////////////
// PREVENT ALLOW MEDIA REMOVAL

#pragma packed on
typedef struct __tag_scsi_command_ALLOW_REMOVAL
{
	unsigned char		opcode;			// must be 0x1e = ALLOW_REMOVAL

	unsigned char		bLogicalUnit;	// = LogicalUnit:3, Reserved1:5
	
	unsigned char		bReserved2;
	unsigned char		bReserved3;
	
	unsigned char		bPreventRemoval;// = Reserved4:7, PreventRemoval:1

	unsigned char		bContol;
} SCSI_COMMAND_ALLOW_REMOVAL;
#pragma packed off


/////////////////////////////////////////////////////////////////////////////
// WRITE (10)

#pragma packed on
typedef struct __tag_scsi_command_WRITE10
{
	unsigned char		opcode;			// must be 0x2a = WRITE10

	unsigned char		bLogicalUnit;	// = LogicalUnit:3, DPO:1, FUA:1, Reserved1:2, RelAddr:1

	unsigned long		dwLogicalBlockAddr;
	unsigned char		bReserved2;
	unsigned short int	wTransferLength;
	unsigned char		bContol;
} SCSI_COMMAND_WRITE10;
#pragma packed off



/////////////////////////////////////////////////////////////////////////////
// RESERVE

#pragma packed on
typedef struct __tag_scsi_command_FORMAT_UNIT
{
	unsigned char		opcode;			// must be 0x04 = FORMAT_UNIT

	unsigned char		bLogicalUnit;	// = LogicalUnit:3, FormatData:1, CompleteList:1, DefectListFormat:3

	unsigned short int	wInterleave;
	unsigned char		bControl;
} SCSI_COMMAND_FORMAT_UNIT;
#pragma packed off


/////////////////////////////////////////////////////////////////////////////
// RESERVE

#pragma packed on
typedef struct __tag_scsi_command_RESERVE
{
	unsigned char		opcode;			// must be 0x16 = RESERVE

	unsigned char		bLogicalUnit;	// = LogicalUnit:3, ThirdParty:1, ThirdPartyID:3, Extend:1
	
	unsigned short int	wExtendListLen;
	unsigned char		bControl;
} SCSI_COMMAND_RESERVE;
#pragma packed off


/////////////////////////////////////////////////////////////////////////////
// SEND DIAGNOSTIC

#pragma packed on
typedef struct __tag_scsi_command_SEND_DIAGNOSTIC
{
	unsigned char		opcode;			// must be 0x1d = SEND_DIAGNOSTIC

	unsigned char		bLogicalUnit;	// = LogicalUnit:3,
	                                    //   PF:1, Reserved1:1, SelfTest:1, DevOfL:1, UnitOfL:1
	unsigned char		bReserved;
	
	unsigned short int	wParamListLen;
	unsigned char		bControl;
} SCSI_COMMAND_SEND_DIAGNOSTIC;
#pragma packed off


/////////////////////////////////////////////////////////////////////////////
// START STOP UNIT

#pragma packed on
typedef struct __tag_scsi_command_START_STOP_UNIT
{
	unsigned char		opcode;			// must be 0x1b = START_STOP_UNIT

	unsigned char		bLogicalUnit;	// = LogicalUnit:3, Reserved1:4, Immediate:1

	unsigned char		bReserved2;
	unsigned char		bReserved3;

	unsigned char		bLoadEject;		// Reserved4:6, LoadEject:1, Start:1

	unsigned char		bControl;
} SCSI_COMMAND_START_STOP_UNIT;
#pragma packed off


/////////////////////////////////////////////////////////////////////////////
// VERIFY

#pragma packed on
typedef struct __tag_scsi_command_VERIFY
{
	unsigned char		opcode;			// must be 0x1b = START_STOP_UNIT

	unsigned char		bLogicalUnit;	// = bLogicalUnit:3, DPO:1,
										//   Reserved1:1, Reserved2:1, ByteCheck:1, RelAddr:1

	unsigned long		dwLogicalBlockAddr;
	unsigned char		bReserved3;
	unsigned short int	wVerifyLength;
	unsigned char		bContol;
} SCSI_COMMAND_VERIFY;
#pragma packed off

typedef unsigned (*TCC730_MMCSCSI_RECVPROC)(void* lpData, unsigned nLen, CONST_FAKE void* lpCmd);
typedef unsigned (*TCC730_MMCSCSI_SENDPROC)(CONST_FAKE void* lpData, unsigned nLen, CONST_FAKE void* lpCmd);

#endif

⌨️ 快捷键说明

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