?? usb.h
字號(hào):
/******************************************************************
本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
我的郵箱:computer-lov@tom.com
歡迎訪問(wèn)我的blog: http://computer00.21ic.org
USB.H file
Created by Computer-lov
Date: 2004.7.13
Edit date:2006.3.2
Version V1.1
Copyright(C) Computer-lov 2004-2014
All rigths reserved
*******************************************************************/
#ifndef __USB_H__
#define __USB_H__
#define BYTE unsigned char
#define WORD unsigned int
// 定義標(biāo)準(zhǔn)的描述符類型,也就是USB分配的各種描述符的編號(hào),即bDescriptorType 字段的值
#define DEVICE_DESCRIPTOR 0x01 //設(shè)備描述符
#define CONFIGURATION_DESCRIPTOR 0x02 //配置描述符
#define STRING_DESCRIPTOR 0x03 //字符串描述符
#define INTERFACE_DESCRIPTOR 0x04 //接口描述符
#define ENDPOINT_DESCRIPTOR 0x05 //端點(diǎn)描述符
//定義標(biāo)準(zhǔn)的USB請(qǐng)求命令,即USB分配的各種請(qǐng)求的編號(hào),即bRequest字段的值
#define GET_STATUS 0x00 //獲取狀態(tài)請(qǐng)求
#define CLEAR_FEATURE 0x01 //清除特性請(qǐng)求
#define SET_FEATURE 0x03 //設(shè)置特性請(qǐng)求
#define SET_ADDRESS 0x05 //設(shè)置地址請(qǐng)求
#define GET_DESCRIPTOR 0x06 //獲取描述符請(qǐng)求
#define SET_DESCRIPTOR 0x07 //設(shè)置描述符請(qǐng)求
#define GET_CONFIGURATION 0x08 //獲取配置請(qǐng)求
#define SET_CONFIGURATION 0x09 //設(shè)置配置請(qǐng)求
#define GET_INTERFACE 0x0A //獲取接口請(qǐng)求
#define SET_INTERFACE 0x0B //設(shè)置接口請(qǐng)求
#define SYNCH_FRAME 0x0C //同步幀請(qǐng)求
//定義特性選擇器
#define ENDPOINT_HALT 0x00 //端點(diǎn)的禁止特性
#define DEVICE_REMOTE_WAKEUP 0x01 //設(shè)備的遠(yuǎn)程喚醒特性
//使用的端點(diǎn)數(shù)
//#define Number_Endpoint 0x05 //端點(diǎn)數(shù)量為5
//定義的端點(diǎn)類型
#define ENDPOINT_TYPE_CONTROL 0x00 //控制傳輸
#define ENDPOINT_TYPE_ISOCHRONOUS 0x01 //同步傳輸
#define ENDPOINT_TYPE_BULK 0x02 //批量傳輸
#define ENDPOINT_TYPE_INTERRUPT 0x03 //中斷傳輸
//定義標(biāo)準(zhǔn)的設(shè)備描述符結(jié)構(gòu)
typedef struct _DEVICE_DCESCRIPTOR_STRUCT
{
BYTE blength; //設(shè)備描述符的字節(jié)數(shù)大小
BYTE bDescriptorType; //設(shè)備描述符類型編號(hào)
WORD bcdUSB; //USB版本號(hào)
BYTE bDeviceClass; //USB分配的設(shè)備類代碼
BYTE bDeviceSubClass; //USB分配的子類代碼
BYTE bDeviceProtocol; //USB分配的設(shè)備協(xié)議代碼
BYTE bMaxPacketSize0; //端點(diǎn)0的最大包大小
WORD idVendor; //廠商編號(hào)
WORD idProduct; //產(chǎn)品編號(hào)
WORD bcdDevice; //設(shè)備出廠編號(hào)
BYTE iManufacturer; //設(shè)備廠商字符串的索引
BYTE iProduct; //描述產(chǎn)品字符串的索引
BYTE iSerialNumber; //描述設(shè)備序列號(hào)字符串的索引
BYTE bNumConfigurations; //可能的配置數(shù)量
}
DEVICE_DESCRIPTOR_STRUCT, * pDEVICE_DESCRIPTOR_STRUCT;
//定義標(biāo)準(zhǔn)的配置描述符結(jié)構(gòu)
typedef struct _CONFIGURATION_DESCRIPTOR_STRUCT
{
BYTE bLength; //配置描述符的字節(jié)數(shù)大小
BYTE bDescriptorType; //配置描述符類型編號(hào)
WORD wTotalLength; //此配置返回的所有數(shù)據(jù)大小
BYTE bNumInterfaces; //此配置所支持的接口數(shù)量
BYTE bConfigurationValue; //Set_Configuration命令所需要的參數(shù)值
BYTE iConfiguration; //描述該配置的字符串的索引值
BYTE bmAttributes; //供電模式的選擇
BYTE MaxPower; //設(shè)備從總線提取的最大電流
}
CONFIGURATION_DESCRIPTOR_STRUCT, * pCONFIGURATION_DESCRIPTOR_STRUCT;
//定義標(biāo)準(zhǔn)的接口描述符結(jié)構(gòu)
typedef struct _INTERFACE_DESCRIPTOR_STRUCT
{
BYTE bLength; //接口描述符的字節(jié)數(shù)大小
BYTE bDescriptorType; //接口描述符的類型編號(hào)
BYTE bInterfaceNumber; //該接口的編號(hào)
BYTE bAlternateSetting; //備用的接口描述符編號(hào)
BYTE bNumEndpoints; //該接口使用的端點(diǎn)數(shù),不包括端點(diǎn)0
BYTE bInterfaceClass; //接口類型
BYTE bInterfaceSubClass; //接口子類型
BYTE bInterfaceProtocol; //接口遵循的協(xié)議
BYTE iInterface; //描述該接口的字符串索引值
}
INTERFACE_DESCRIPTOR_STRUCT, * pINTERFACE_DESCRIPTOR_STRUCT;
//定義標(biāo)準(zhǔn)的端點(diǎn)描述符結(jié)構(gòu)
typedef struct _ENDPOINT_DESCRIPTOR_STRUCT
{
BYTE bLegth; //端點(diǎn)描述符字節(jié)數(shù)大小
BYTE bDescriptorType; //端點(diǎn)描述符類型編號(hào)
BYTE bEndpointAddress; //端點(diǎn)地址及輸入輸出屬性
BYTE bmAttributes; //端點(diǎn)的傳輸類型屬性
WORD wMaxPacketSize; //端點(diǎn)收、發(fā)的最大包大小
BYTE bInterval; //主機(jī)查詢端點(diǎn)的時(shí)間間隔
}
ENDPOINT_DESCRIPTOR_STRUCT, * pENDPOINT_DESCRIPTOR_STRUCT;
//一個(gè)字符串描述符結(jié)構(gòu)
typedef struct _STRING_DESCRIPTOR_STRUCT
{
BYTE bLength; //字符串描述符的字節(jié)數(shù)大小
BYTE bDescriptorType; //字符串描述符類型編號(hào)
BYTE SomeDesriptor[36]; //UNICODE編碼的字符串
}
STRING_DESCRIPTOR_STRUCT, * pSTRING_DESCRIPTOR_STRUCT;
//標(biāo)準(zhǔn)設(shè)備請(qǐng)求命令結(jié)構(gòu)
typedef struct _REQUESTCMD
{
BYTE bmRequestType; //請(qǐng)求命令類型
BYTE bRequest; //請(qǐng)求命令代碼
WORD wValue; //命令信息
WORD wIndex; //索引信息
WORD wLength; //傳輸數(shù)據(jù)大小
}
REQUESTCMD, * pREQUESTCMD;
//setup_packet緩沖區(qū)
#define MAX_CONTROL_DATA_SIZE 16
typedef struct _control_data_buff
{
REQUESTCMD DeviceRequest; //USB設(shè)備請(qǐng)求
unsigned int wLength;
unsigned int wCount;
unsigned char * pData;
unsigned char dataBuffer[MAX_CONTROL_DATA_SIZE];
}CONTROL_DATA_BUFF;
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -