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

📄 mass.h

📁 zlg_fs.rar
💻 H
字号:

#ifndef _MASS_H
#define _MASS_H
#include	"chap9.h"

typedef struct	epi
{
	unsigned 				max_packet_size:10;		// 端点最大封包
	unsigned 				dev_addr:7;			// 设备地址
	unsigned 				ep_num:5;				// 端点号
	unsigned 				toggle:1;				// DATA0,DATA1
	unsigned 				speed:1;				// 传输整速度:全速或低速
	unsigned 				direction:2;				// 端点方向
	unsigned 				tr_type:1;				// "Async or Iso" for PTD parameter
	unsigned 				transfer_type:3;			// Ctrl, Iso, Bulk, Intrr
	std_endpoint_descriptor	endpoint_descriptor;		// 端点描述符
	unsigned int			endpoint_create_id;		// 端点创建ID
	struct transfr			*tr_instance_ptr;			// 传输描述符链表指针
}endpoint_info;

#define		MAX_ENDPOINT_NUM				6
typedef struct	dev
{
	unsigned char			address;						// 设备地址
	unsigned char			speed;						// 
	std_dev_descriptor		dev_descriptor;					// 设备描述符
	std_conf_descriptor		conf_descriptor;					// 配置描述符
	std_interface_descriptor	interfacef_descriptor;				// 接口描述符
	endpoint_info			*epi_ptr[ MAX_ENDPOINT_NUM ];	// 端点描述信息指针列表
	#ifdef STRING_DESCRIPTOR
	unsigned short			*string_manufacturer;				// 厂商描述符字符串指针
	unsigned short			*string_product;					// 产品描述符字符串指针
	unsigned short			*string_serialNum;				// 设备序列号字符串指针
	#endif
	void					*class_instance_ptr;				// 类实例结构指针
	unsigned char			topology_layer;				// 拓朴层,根集线器下的设备为第1层
}device_instance;
						


#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)								

typedef struct _LIST_ENTRY{
	struct	transfr 	*Flink;
	struct	transfr 	*Blink;
}LIST_ENTRY,*PLIST_ENTRY;

typedef struct transfr{
	/*  for general ATL transfers		*/
									
	unsigned char		lock;				// 非0则该传输实例被锁,其底7位为索引号
	unsigned char		*data_ptr_base;		// 该传输数据缓冲区基地址指针
	unsigned char		*data_ptr_start;		// 当该指针为非NULL则该传输实例在中断中被传输
	unsigned char		*data_ptr_end;
	unsigned char		*readout_position;	// 
	endpoint_info		*epi_ptr;				// 传输端点描述
	void				(*callback)( struct	transfr *ptr );	// 传输完成回调函数
	unsigned int		need_transfer_total_size;	// 需要传输的总字节数	
	unsigned short		transferred_size;		// 已传输的字节数
	unsigned char		direction;				// 传输方向,IN,OUT,SETUP
	unsigned char		completion_code;		// 完成代码
	unsigned char		fatal_error;			// 严重错误标记
	unsigned long 		endpoint_create_id;	// 端点ID号
	LIST_ENTRY		tr_list_for_tr;
	LIST_ENTRY		tr_list_for_ep;

	/*  for interrupt transfer			*/
	/*  中断传输  */
	unsigned char		schedule_rate;		// 轮询数据传送端点的时间间隔	 
	unsigned long		poll_timing_timer;	// 轮询时间记数器
								
	/* for uC/OS-II */
	OS_EVENT *os_event_ptr;					//uC/OS-II 事件指针
}transfer_instance;

#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;

#endif //	_MASS_H


⌨️ 快捷键说明

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