?? 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 + -