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

📄 ufi.h

📁 F-R程序
💻 H
字号:
#ifndef _UFI_H
#define _UFI_H

#include "DataType.h"
#define CBW_SIGNATURE   0x43425355
#define CSW_SIGNATURE   0x53425355

//******************************************************************************
//The macroinstruction of USB Mass Storage Class -UFI Command Specification
//*****************************************************************************
#define UFI_CMD_FORMAT			0x04
#define UFI_CMD_INQUIRY			0x12
#define UFI_CMD_MODESELECT		0x15
#define UFI_CMD_MODESENSE6		0x1A
#define UFI_CMD_LOCKORNOT		0x1E
#define UFI_CMD_READ			0x28
#define UFI_CMD_READCAPACITY	0x25
#define UFI_CMD_REQUESTSENSE	0x03
#define UFI_CMD_STARTSTOPUNIT	0x1B
#define UFI_CMD_TESTUNITREADY	0x00
#define UFI_CMD_VERIFY			0x2F
#define UFI_CMD_WRITE			0x2A
/////////////////////////////////////////////////////////////////////
typedef struct _GENERIC_CDB {
	U8 OperationCode;
    U8 Reserved[15];
} GENERIC,*PGENERIC;

typedef struct _READ {
		U8 Reserved1;
		U8 L3;
		U8 L2;
		U8 L1;
		U8 L0;
		U8 Reserved2;
		U16 ReadLength;
		U8 Reserved3;
		} READ, * PREAD;

//////////////////////////////////////////////////////
typedef struct _WRITE {
		U8 Reserved1;
		U8 L3;
		U8 L2;
		U8 L1;
		U8 L0;
		U8 Reserved2;
		U16 WriteLength;
		U8 Reserved3;
		} WRITE, *PWRITE;	

///////////////////////////////////////////
typedef struct _READ_CAPACITY {
		U8 Resverd2[8];
		U8 Rseverd1;
	} READ_CAPACITY, *PREAD_CAPACITY;
//////////////////////////////////////////////////////

typedef struct _INQUIRY {
	U8 Reserved0 ;
	U8 PageCode;
	U8 Reserved1;
	U8 AllocationLen;
    U8 Resverd2;		
	} INQUIRY, *PINQUIRY;
/////////////////////////////////////////////////////
typedef struct _REQUEST_SENSE {  
		U8 Reserved1[3];
		U8 AllocationLen;
		U8 Reserved2;
	} REQUEST_SENSE, *PREQUEST_SENSE;
///////////////////////////////////////////////////
typedef struct _TEST_UNIT {
		U8 Reserved[4];
		U8 Reserved1;
	} TEST_UNIT, *PTEST_UNIT;
///////////////////////////////////////////////////////
typedef union _CBWCB{   
		GENERIC					ufi_GenRic;
		READ					Ufi_Read;
		READ_CAPACITY			Ufi_ReadCapacity;
		WRITE					Ufi_Write;
		INQUIRY					Ufi_Inquiry;
		REQUEST_SENSE			Ufi_RequestSense;
		TEST_UNIT				Ufi_TestUnit;
	} CBWCB, *PCBWCB;
//**********************************************************************************
//Defined the USB bulk transcation.
//the structure of  CBW( command Block Wrapper)and CSW(Command Status Wrapper)
//all the USB's packet are transferd by CBW,and the status are returned by 
//CSW.
//**********************************************************************************
typedef struct _COMMAND_BLOCK_WRAPPER{
		U32  dCBW_Signature;
		U32  dCBW_Tag;
		U32  dCBW_DataXferLen;
		U8   bCBW_Flag;
		U8   bCBW_LUN;
		U8   bCBW_CDBLen;	
		U8   OperationCode; 
		CBWCB  CBWCommand;		
	} CBW, *PCBW;
////////////////////////////////////////////////
typedef struct _COMMAND_STATUS_WRAPPER{
		U32   dCSW_Signature;
		U32   dCSW_Tag;
		U32   dCSW_DataResidue;
		U8    bCSW_Status;
	} CSW, *PCSW;
//////////////////////////////////////////////
typedef union _Block{
		CBW		CbwBlock;
		CSW		CswBlock;
	} BLOCK, * PBLOCK;
//**********************************************************************************
//Functions
//
//**********************************************************************************
U8 BulkOut(U8 *pbBuffer,U16 len);
U8 BulkIn(U8 *pbBuffer,U16 len);
U8 Inquiry(void);
U8 TestUnit(void);
U8 RequestSense(void);
U8 ReadCapacity(void);
U8 Read(U32 dlba,U8 blen,U8 *pbBuffer);
U8 Write(U32 dlba,U8 blen,U8 *pbBuffer);
U8 PollDisk(void);

#endif

⌨️ 快捷键说明

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