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

📄 mass.h

📁 ARM读写U盘驱动软件包源程序
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                     graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: mass.h
** Last modified Date: 2005-04-22
** Last Version: V1.0 
** Description: 
**
**------------------------------------------------------------------------------------------------------
** Created By: Lishan Zhou
** Created date: 2005-04-22
** Version: V1.0 
** Description:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/

#ifndef _MASS_H
#define _MASS_H

#include	"dev_ep.h"
#include	"transfer.h"

#define MAX_MASS_DEVICES_DEFINE	2
#define MAX_MASS_DEVICES_LUN_DEFINE 	MAX_MASS_DEVICES_DEFINE

#define		mass_instance_ptr( x )			((x)->class_instance_ptr)								


#define MAX_MASS_LUN 1
/* 大容量设备描述数据结构 */
typedef struct MASS_STORAGE_CLASS
{	unsigned char  		LUN;							/* 该设备的逻辑单元数*/
	struct _HMEDLUN	*LUN_infor_ptr[MAX_MASS_LUN];	/* 逻辑单元描述信息结构指针 */ 
	device_instance 		*dvi_ptr;						/* 设备信息描述结构指针*/
	endpoint_info		*setup_epi_ptr;					/* 控制端点描述信息结构指针 */ 
	transfer_instance 	*tr_bulk_in_ptr;					/* 批量输入传输描述符 */
	transfer_instance 	*tr_bulk_out_ptr;				/* 批量输出传输描述符 */
	transfer_instance 	*tr_int_in_ptr; 					/* 中断输入传输描述符CBI-Only使用*/
	unsigned char		SubclassCode;					/* 子类代码 */
	unsigned char		ProtocolCode;					/* 传输协议代码CBI 或BULK*/ 
	unsigned char		*CBW_BuffPtr;					/* 批量传输的命令包缓冲区指针 */
	unsigned char		RBC_BuffPtr[12];				/* 命令设置缓冲区 */
}MassStorageClass,*PMassStorageClass;


/* 媒介设备句柄 */ 
typedef struct _HMEDLUN
{
	unsigned char  		LUN;					// 所在大容量设备的逻辑单元号
	MassStorageClass	*MSC;					// 大容量设备的描述信息结构

	unsigned char  		VendorInfo[8];			// 厂商信息
	unsigned char  		ProductInfo[16];		// 产品信息
	unsigned char  		ProductRev[4];			// 产品版本
	
	unsigned int		LastLogicalBlookAddress;// 最后逻辑块地址
	unsigned int  		BlockLengthInBytes;		// 逻辑块长度

}hMedLUN;



/* RBC与传输的通讯的数据结构 */
typedef  struct _TR_With_RBC
{
/*  */
	MassStorageClass	*MSC;			/*协议代码CBI 或BULK*/ 
	unsigned char  	LUN;					// 所在大容量设备的逻辑单元号

/* RBC到传输 */
	uint16	DataTransferLength;
	uint8 	TrDirection;				/* 数据传输方向(输入、输出、无数据) */
	uint8 	CBLength;				/* 命令有效字节的长度,UFI固定为12字节 */
	uint8 	*RBC_BuffPtr;			/* 命令设置缓冲区指针 */
/* 传输到RBC */
	uint8 	*Data_BuffPtr;			/* 命令接收数据缓冲区指针*/
}TR_With_RBC;

void ini_mass_device_LUN_mem(void);
void ini_mass_device_mem(void);
unsigned short		mass_init_commands( device_instance *dvi_ptr );
unsigned short		mass_dispose_process( device_instance *dvi_ptr );

hMedLUN * Creat_Medium(device_instance *dvi_ptr ,unsigned char LUNIndex);
void Close_Medium(hMedLUN *hMedLUNPtr,unsigned char LUNIndex);
unsigned short ReadBlockData(hMedLUN 	*MediumPtr, unsigned char *BufferPtr,
							   unsigned int LBA, unsigned short TrBLength);		
unsigned short WriteBlockData(hMedLUN 	*MediumPtr, unsigned char *BufferPtr,
							   unsigned int LBA, unsigned short TrBLength);							  

#endif //	_MASS_H


⌨️ 快捷键说明

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