?? mass.h
字號(hào):
#ifndef _MASS_H
#define _MASS_H
#include "chap9.h"
typedef struct epi
{
unsigned max_packet_size:10; // 端點(diǎn)最大封包
unsigned dev_addr:7; // 設(shè)備地址
unsigned ep_num:5; // 端點(diǎn)號(hào)
unsigned toggle:1; // DATA0,DATA1
unsigned speed:1; // 傳輸整速度:全速或低速
unsigned direction:2; // 端點(diǎn)方向
unsigned tr_type:1; // "Async or Iso" for PTD parameter
unsigned transfer_type:3; // Ctrl, Iso, Bulk, Intrr
std_endpoint_descriptor endpoint_descriptor; // 端點(diǎn)描述符
unsigned int endpoint_create_id; // 端點(diǎn)創(chuàng)建ID
struct transfr *tr_instance_ptr; // 傳輸描述符鏈表指針
}endpoint_info;
#define MAX_ENDPOINT_NUM 6
typedef struct dev
{
unsigned char address; // 設(shè)備地址
unsigned char speed; //
std_dev_descriptor dev_descriptor; // 設(shè)備描述符
std_conf_descriptor conf_descriptor; // 配置描述符
std_interface_descriptor interfacef_descriptor; // 接口描述符
endpoint_info *epi_ptr[ MAX_ENDPOINT_NUM ]; // 端點(diǎn)描述信息指針列表
#ifdef STRING_DESCRIPTOR
unsigned short *string_manufacturer; // 廠商描述符字符串指針
unsigned short *string_product; // 產(chǎn)品描述符字符串指針
unsigned short *string_serialNum; // 設(shè)備序列號(hào)字符串指針
#endif
void *class_instance_ptr; // 類實(shí)例結(jié)構(gòu)指針
unsigned char topology_layer; // 拓樸層,根集線器下的設(shè)備為第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則該傳輸實(shí)例被鎖,其底7位為索引號(hào)
unsigned char *data_ptr_base; // 該傳輸數(shù)據(jù)緩沖區(qū)基地址指針
unsigned char *data_ptr_start; // 當(dāng)該指針為非NULL則該傳輸實(shí)例在中斷中被傳輸
unsigned char *data_ptr_end;
unsigned char *readout_position; //
endpoint_info *epi_ptr; // 傳輸端點(diǎn)描述
void (*callback)( struct transfr *ptr ); // 傳輸完成回調(diào)函數(shù)
unsigned int need_transfer_total_size; // 需要傳輸?shù)目傋止?jié)數(shù)
unsigned short transferred_size; // 已傳輸?shù)淖止?jié)數(shù)
unsigned char direction; // 傳輸方向,IN,OUT,SETUP
unsigned char completion_code; // 完成代碼
unsigned char fatal_error; // 嚴(yán)重錯(cuò)誤標(biāo)記
unsigned long endpoint_create_id; // 端點(diǎn)ID號(hào)
LIST_ENTRY tr_list_for_tr;
LIST_ENTRY tr_list_for_ep;
/* for interrupt transfer */
/* 中斷傳輸 */
unsigned char schedule_rate; // 輪詢數(shù)據(jù)傳送端點(diǎn)的時(shí)間間隔
unsigned long poll_timing_timer; // 輪詢時(shí)間記數(shù)器
/* for uC/OS-II */
OS_EVENT *os_event_ptr; //uC/OS-II 事件指針
}transfer_instance;
#define MAX_MASS_LUN 1
/* 大容量設(shè)備描述數(shù)據(jù)結(jié)構(gòu) */
typedef struct MASS_STORAGE_CLASS
{ unsigned char LUN; /* 該設(shè)備的邏輯單元數(shù)*/
struct _HMEDLUN *LUN_infor_ptr[MAX_MASS_LUN]; /* 邏輯單元描述信息結(jié)構(gòu)指針 */
device_instance *dvi_ptr; /* 設(shè)備信息描述結(jié)構(gòu)指針*/
endpoint_info *setup_epi_ptr; /* 控制端點(diǎn)描述信息結(jié)構(gòu)指針 */
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; /* 傳輸協(xié)議代碼CBI 或BULK*/
unsigned char *CBW_BuffPtr; /* 批量傳輸?shù)拿畎彌_區(qū)指針 */
unsigned char RBC_BuffPtr[12]; /* 命令設(shè)置緩沖區(qū) */
}MassStorageClass,*PMassStorageClass;
/* 媒介設(shè)備句柄 */
typedef struct _HMEDLUN
{
unsigned char LUN; // 所在大容量設(shè)備的邏輯單元號(hào)
MassStorageClass *MSC; // 大容量設(shè)備的描述信息結(jié)構(gòu)
unsigned char VendorInfo[8]; // 廠商信息
unsigned char ProductInfo[16]; // 產(chǎn)品信息
unsigned char ProductRev[4]; // 產(chǎn)品版本
unsigned int LastLogicalBlookAddress;// 最后邏輯塊地址
unsigned int BlockLengthInBytes; // 邏輯塊長度
}hMedLUN;
#endif // _MASS_H
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -