📄 mass.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 + -