亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usb.h

?? HID 設(shè)備測試程序
?? H
字號:
/*===============================================================================//
//== 文 件 名:USB.h
//== author	 :gnsusn
//== 說    明:USB 描述符,控制命令等信息
//== 修改日志:2008.8.12 創(chuàng)建文件
//== 
//===============================================================================*/

#ifndef __USB_H__
#define __USB_H__

#define SWAP16(x)  ((((unsigned short)(x))<<8)|(((unsigned short)(x))>>8))	//== 高低字節(jié)交換
#define LSB(x) ((unsigned char)(x))											//== 取一個整數(shù)的低字節(jié) 
#define MSB(x) ((unsigned char)(((unsigned short)(x))>>8))					//== 取一個整數(shù)的高字節(jié)
//***************************************************************************************
//== 定義標(biāo)準(zhǔn)的USB請求命令,即USB分配的各種請求的編號,即bRequest字段的值
#define GET_STATUS						0x00	//== 獲取狀態(tài)請求
#define CLEAR_FEATURE					0x01	//== 清除特性請求
#define SET_FEATURE						0x03	//== 設(shè)置特性請求
#define SET_ADDRESS						0x05	//== 設(shè)置地址請求
#define GET_DESCRIPTOR					0x06	//== 獲取描述符請求
#define SET_DESCRIPTOR					0x07	//== 設(shè)置描述符請求
#define GET_CONFIGURATION				0x08	//== 獲取配置請求
#define SET_CONFIGURATION				0x09	//== 設(shè)置配置請求
#define GET_INTERFACE					0x0A	//== 獲取接口請求
#define SET_INTERFACE					0x0B	//== 設(shè)置接口請求
#define SYNCH_FRAME						0x0C	//== 同步幀請求
//=======================================================================================


//***************************************************************************************
//== 定義標(biāo)準(zhǔn)的描述符類型,也就是USB分配的各種描述符的編號,即bDescriptorType 字段的值
#define DEVICE_DESCRIPTOR				0x01	//== 設(shè)備描述符
#define CONFIGURATION_DESCRIPTOR		0x02	//== 配置描述符
#define STRING_DESCRIPTOR				0x03	//== 字符串描述符
#define INTERFACE_DESCRIPTOR			0x04	//== 接口描述符
#define ENDPOINT_DESCRIPTOR				0x05	//== 端點(diǎn)描述符
#define HID_DESCRIPTOR					0x21	//== HID描述符
#define REPORT_DESCRIPTOR				0x22	//== 報(bào)告描述符
#define PHYSICAL_DESCRIPTOR				0x23	//== 物理描述符
//=======================================================================================


//***************************************************************************************
//== 定義USB HID特定命令請求
#define GET_REPORT						0x01	//== 獲取報(bào)告
#define GET_IDLE						0x02	//== 獲取空閑狀態(tài)
#define GET_PROTOCOL					0x03	//== 獲取協(xié)議
#define SET_REPORT						0x09	//== 設(shè)置報(bào)告
#define SET_IDLE						0x0A	//== 設(shè)置空閑
#define SET_PROTOCOL					0x0B	//== 設(shè)置協(xié)議
//=======================================================================================


//***************************************************************************************
//== 定義特性選擇器
#define ENDPOINT_HALT					0x00	//== 端點(diǎn)的禁止特性

//== USB defined Feature selectors
#define USB_FEATURE_ENDPOINT_STALL		0x0000
#define USB_FEATURE_REMOTE_WAKEUP		0x0001	//== 設(shè)備的遠(yuǎn)程喚醒特性
#define USB_FEATURE_POWER_D0			0x0002
#define USB_FEATURE_POWER_D1			0x0003
#define USB_FEATURE_POWER_D2			0x0004
#define USB_FEATURE_POWER_D3			0x0005
//=======================================================================================


//***************************************************************************************
//== 定義的端點(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) 18字節(jié)(0x12)
typedef struct _DEVICE_DCESCRIPTOR_STRUCT
{
	unsigned char	blength;								//== 1:設(shè)備描述符的字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== 1:設(shè)備描述符類型編號
	unsigned short	bcdUSB;									//== 2:USB版本號
	unsigned char	bDeviceClass;							//== 1:USB分配的設(shè)備類代碼
	unsigned char	bDeviceSubClass;						//== 1:USB分配的子類代碼
	unsigned char	bDeviceProtocol;						//== 1:USB分配的設(shè)備協(xié)議代碼
	unsigned char	bMaxPacketSize0;						//== 1:端點(diǎn)0的最大包大小
	unsigned short	idVendor;								//== 2:廠商編號
	unsigned short	idProduct;								//== 2:產(chǎn)品編號
	unsigned short	bcdDevice;								//== 2:設(shè)備出廠編號
	unsigned char	iManufacturer;							//== 1:設(shè)備廠商字符串的索引
	unsigned char	iProduct;								//== 1:描述產(chǎn)品字符串的索引
	unsigned char	iSerialNumber;							//== 1:描述設(shè)備序列號字符串的索引
	unsigned char	bNumConfigurations;						//== 1:可能的配置數(shù)量
}
DEVICE_DESCRIPTOR_STRUCT, * pDEVICE_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== 定義標(biāo)準(zhǔn)的配置描述符結(jié)構(gòu) 9字節(jié)
typedef struct _CONFIGURATION_DESCRIPTOR_STRUCT
{
	unsigned char	bLength;								//== 1:配置描述符的字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== 1:配置描述符類型編號
	unsigned short	wTotalLength;							//== 2:此配置返回的所有數(shù)據(jù)大小
	unsigned char	bNumInterfaces;							//== 1:此配置所支持的接口數(shù)量
	unsigned char	bConfigurationValue;					//== 1:Set_Configuration命令所需要的參數(shù)值
	unsigned char	iConfiguration;							//== 1:描述該配置的字符串的索引值
	unsigned char	bmAttributes;							//== 1:供電模式的選擇
	unsigned char	MaxPower;								//== 1:設(shè)備從總線提取的最大電流
}
CONFIGURATION_DESCRIPTOR_STRUCT, * pCONFIGURATION_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== 定義標(biāo)準(zhǔn)的接口描述符結(jié)構(gòu) 9字節(jié)
typedef struct _INTERFACE_DESCRIPTOR_STRUCT
{
	unsigned char	bLength;								//== 接口描述符的字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== 接口描述符的類型編號
	unsigned char	bInterfaceNumber;						//== 該接口的編號
	unsigned char	bAlternateSetting;						//== 備用的接口描述符編號
	unsigned char	bNumEndpoints;							//== 該接口使用的端點(diǎn)數(shù),不包括端點(diǎn)0
	unsigned char	bInterfaceClass;						//== 接口類型
	unsigned char	bInterfaceSubClass;						//== 接口子類型
	unsigned char	bInterfaceProtocol;						//== 接口遵循的協(xié)議
	unsigned char	iInterface;								//== 描述該接口的字符串索引值
}
INTERFACE_DESCRIPTOR_STRUCT, * pINTERFACE_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== 定義標(biāo)準(zhǔn)的端點(diǎn)描述符結(jié)構(gòu) 7字節(jié)
typedef struct _ENDPOINT_DESCRIPTOR_STRUCT
{
	unsigned char	bLength;								//== 端點(diǎn)描述符字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== 端點(diǎn)描述符類型編號
	unsigned char	bEndpointAddress;						//== 端點(diǎn)地址及輸入輸出屬性
	unsigned char	bmAttributes;							//== 端點(diǎn)的傳輸類型屬性
	unsigned short	wMaxPacketSize;							//== 端點(diǎn)收、發(fā)的最大包大小
	unsigned char	bInterval;								//== 主機(jī)查詢端點(diǎn)的時間間隔
}
ENDPOINT_DESCRIPTOR_STRUCT, * pENDPOINT_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== HID描述符中的下級描述符號 3字節(jié)
typedef struct _HID_SUB_DESCRIPTOR_STRUCT
{
	unsigned char	bDescriptorType;	//== 下級描述符的類型編號
	unsigned short	wDescriptorLength;	//== 下級描述符的長度
}
HID_SUB_DESCRIPTOR_STRUCT,*pHID_SUB_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
#define NUM_SUB_DESCRIPTORS 1
//=======================================================================================


//***************************************************************************************
//== 定義HID描述符結(jié)構(gòu) 9字節(jié)
typedef struct _HID_DESCRIPTOR_STRUCT
{
	unsigned char	bLength;								//== HID描述符字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== HID描述符類型編號
	unsigned short	bcdHID;									//== HID版本號
	unsigned char	bCountryCode;							//== 國家代碼
	unsigned char	bNumDescriptors;						//== 
	HID_SUB_DESCRIPTOR_STRUCT HidSubDescriptors[NUM_SUB_DESCRIPTORS]; 
}
HID_DESCRIPTOR_STRUCT,*pHID_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== 一個字符串描述符結(jié)構(gòu)
typedef struct _STRING_DESCRIPTOR_STRUCT
{
	unsigned char	bLength;								//== 字符串描述符的字節(jié)數(shù)大小
	unsigned char	bDescriptorType;						//== 字符串描述符類型編號
	unsigned char	SomeDesriptor[36];						//== UNICODE編碼的字符串
}
STRING_DESCRIPTOR_STRUCT, * pSTRING_DESCRIPTOR_STRUCT;
//=======================================================================================


//***************************************************************************************
//== 標(biāo)準(zhǔn)設(shè)備請求命令結(jié)構(gòu)
typedef struct _REQUESTCMD
{
	unsigned char	bmRequestType;							//== 請求命令類型
	unsigned char	bRequest;								//== 請求命令代碼
	unsigned short	wValue;									//== 命令信息
	unsigned short	wIndex;									//== 索引信息
	unsigned short	wLength;								//== 傳輸數(shù)據(jù)大小
}
REQUESTCMD, * pREQUESTCMD;

//== 標(biāo)準(zhǔn)設(shè)備請求命令結(jié)構(gòu)中用到的掩碼
#define USB_RECIPIENT            (unsigned char)0x1F		//== bmRequestType的(4~0)位指明了操作的對象
#define USB_RECIPIENT_DEVICE     (unsigned char)0x00		//== 設(shè)備
#define USB_RECIPIENT_INTERFACE  (unsigned char)0x01		//== 接口
#define USB_RECIPIENT_ENDPOINT   (unsigned char)0x02		//== 端點(diǎn)

#define USB_REQUEST_TYPE_MASK    (unsigned char)0x60		//== bmRequestType的(6~5)位指明了主機(jī)請求的類型
#define USB_STANDARD_REQUEST     (unsigned char)0x00		//== 標(biāo)準(zhǔn)請求(主機(jī)詢問設(shè)備的一些標(biāo)準(zhǔn)特性)
#define USB_CLASS_REQUEST        (unsigned char)0x20		//== 類請求(主機(jī)詢問設(shè)備的類特性)
#define USB_VENDOR_REQUEST       (unsigned char)0x40		//== 廠商請求(主機(jī)詢問設(shè)備的廠商)

#define USB_REQUEST_MASK         (unsigned char)0x0F		//== bRequest 請求命令的掩碼

#define DEVICE_ADDRESS_MASK      (unsigned char)0x7F		//== 地址掩碼
#define USB_ENDPOINT_DIRECTION_MASK	(unsigned char)0x80		//== 端點(diǎn)號掩碼
//=======================================================================================

//***************************************************************************************
//== setup_packet 包緩沖區(qū)
#define MAX_CONTROLDATA_SIZE 8

typedef struct _control_data_buff
{
	REQUESTCMD DeviceRequest;								//== USB設(shè)備請求
	unsigned short wLength;									//== 主機(jī)請求的長度
	unsigned short wCount;									//== 數(shù)據(jù)的實(shí)際長度
	unsigned char * pData;
	unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
}CONTROL_DATA_BUFF;
//=======================================================================================


//***************************************************************************************
//== USB 的控制端點(diǎn)有4種狀態(tài):空閑,接收,發(fā)送,忙
#define USB_IDLE		0							//== 表示控制端點(diǎn)空閑
#define USB_TRANSMIT	1							//== 表示控制端點(diǎn)處于發(fā)送狀態(tài),(等待發(fā)送數(shù)據(jù)的到來)
#define USB_RECEIVE		2							//== 表示控制端點(diǎn)處于接收完?duì)顟B(tài),(數(shù)據(jù)接收完接收,等待對接收數(shù)據(jù)的處理)
#define USB_HANDEL		3							//== 表示控制端點(diǎn)正在處理,忙

typedef union _epp_flags							//== 程序運(yùn)行標(biāo)志位
{
	unsigned short Register;
	struct _flags
	{
		unsigned char bus_reset				:1;		//== 總線復(fù)位標(biāo)志
		unsigned char suspend				:1;		//== 掛起改變標(biāo)志
		unsigned char remote_wakeup			:1;		//== 遠(yuǎn)程喚醒標(biāo)志(未使用)
		unsigned char int_isr				:1;		//== USB中斷標(biāo)志
		unsigned char control_state			:2;		//== 控制端點(diǎn)處理狀態(tài)
													//== 0:  空閑
													//== 1:  數(shù)據(jù)發(fā)送
													//== 2:  數(shù)據(jù)接收
		unsigned char configuration			:1;		//== 配置標(biāo)志(0:未配置;1:已經(jīng)配置)
		unsigned char verbose				:1;
		unsigned char first_get_descriptor	:1;		//== 第一次獲得描述符描述符

		unsigned char setup_packet_in		:1;
		unsigned char setup_packet_out		:1;

		unsigned char usb_endp0_in			:1;
		unsigned char usb_endp2_in			:1;
		unsigned char usb_endp2_out			:1;
		unsigned char reserve				:2;
//		unsigned char dma_state				:2;
//		unsigned char setup_dma				:1;
	}bits;
}EPPFLAGS;
//=======================================================================================

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久久免费一区二区| 国产不卡免费视频| 欧美一区二区黄色| 免费美女久久99| 欧美精品一区男女天堂| 国产精品自在欧美一区| 国产精品欧美久久久久无广告| 成人av在线资源| 一区二区三区毛片| 日韩一区二区视频| 国产精品一区二区三区99| 国产精品五月天| 欧美日韩一区视频| 精品一区二区三区在线播放视频| 久久久久久久久蜜桃| 成人a免费在线看| 亚洲成av人片一区二区三区| 日韩免费看的电影| 成人性色生活片免费看爆迷你毛片| 成人欧美一区二区三区在线播放| 日本韩国欧美在线| 毛片av一区二区| 国产精品色眯眯| 欧美另类一区二区三区| 久久超碰97中文字幕| 国产精品妹子av| 欧美日韩国产小视频| 激情五月播播久久久精品| 欧美国产成人在线| 欧美日韩在线一区二区| 久久99精品久久只有精品| ...中文天堂在线一区| 欧美一区二区久久久| 国产a级毛片一区| 日韩国产欧美在线播放| 中文字幕+乱码+中文字幕一区| 色久优优欧美色久优优| 国产美女av一区二区三区| 亚洲国产一区二区视频| 欧美国产日韩在线观看| 宅男在线国产精品| 91麻豆精品一区二区三区| 美女在线视频一区| 亚洲色图丝袜美腿| 久久亚洲影视婷婷| 欧美三级电影在线观看| 国产不卡一区视频| 麻豆国产欧美日韩综合精品二区 | 免费视频一区二区| 综合激情网...| 2023国产精华国产精品| 在线播放欧美女士性生活| 欧美高清精品3d| 91麻豆精品国产91久久久资源速度| 国产精品久久久久久久久免费丝袜 | 国内精品写真在线观看| 一级中文字幕一区二区| 艳妇臀荡乳欲伦亚洲一区| 亚洲妇熟xx妇色黄| 麻豆精品一区二区三区| 福利电影一区二区三区| 99精品视频在线播放观看| 色国产精品一区在线观看| 欧美色涩在线第一页| 日韩丝袜美女视频| 国产精品视频一二三| 亚洲另类在线一区| 奇米影视7777精品一区二区| 国产一区在线精品| 91小视频免费看| 欧美一区日韩一区| 国产精品沙发午睡系列990531| 一区二区三区小说| 毛片av一区二区三区| 不卡视频在线观看| 欧美日韩大陆一区二区| 久久久久久久久久久黄色| 亚洲人成亚洲人成在线观看图片| 亚欧色一区w666天堂| 国产伦精品一区二区三区视频青涩| av午夜一区麻豆| 日韩欧美一卡二卡| 亚洲少妇30p| 精品一区二区三区免费毛片爱| 成人a级免费电影| 91麻豆精品国产91久久久久久 | 免费看日韩a级影片| 国产99久久久国产精品潘金网站| 在线一区二区三区四区| 2020国产成人综合网| 亚洲高清一区二区三区| 国产精品 欧美精品| 欧美系列一区二区| 国产精品久久久99| 免费在线成人网| 在线观看区一区二| 亚洲国产成人私人影院tom| 午夜激情久久久| 91麻豆国产精品久久| 久久久www成人免费毛片麻豆 | 日韩视频一区二区在线观看| 国产精品乱人伦中文| 久久疯狂做爰流白浆xx| 在线观看日韩av先锋影音电影院| 国产色爱av资源综合区| 免费观看日韩av| 91国产丝袜在线播放| 欧美国产精品中文字幕| 激情欧美一区二区三区在线观看| 色视频一区二区| 国产精品麻豆网站| 东方欧美亚洲色图在线| 91麻豆精品国产91久久久久| 亚洲精品亚洲人成人网在线播放| 风间由美性色一区二区三区| 精品少妇一区二区三区日产乱码 | 国产日韩精品视频一区| 热久久免费视频| 欧美日韩在线一区二区| 一区二区免费看| 成人av先锋影音| 国产亚洲制服色| 久久99热99| 日韩欧美在线网站| 青青草原综合久久大伊人精品优势| 欧洲视频一区二区| 亚洲免费观看高清在线观看| 成人激情午夜影院| 中文字幕va一区二区三区| 国产精品一区二区久激情瑜伽| 日韩免费视频线观看| 奇米精品一区二区三区四区| 欧美日韩免费一区二区三区视频| 亚洲精品美腿丝袜| 91福利社在线观看| 亚洲综合丝袜美腿| 91成人免费电影| 亚洲一区二区欧美激情| 日本精品免费观看高清观看| 亚洲男人的天堂在线观看| 色视频欧美一区二区三区| 亚洲精品免费一二三区| 欧美午夜电影在线播放| 午夜伊人狠狠久久| 7777精品伊人久久久大香线蕉最新版| 亚洲午夜精品久久久久久久久| 日本高清成人免费播放| 午夜精品福利一区二区三区av| 欧美日韩你懂得| 久久er99热精品一区二区| 久久久久久久综合日本| 成人av第一页| 伊人夜夜躁av伊人久久| 在线成人av影院| 精品亚洲欧美一区| 亚洲国产成人一区二区三区| 91亚洲资源网| 性做久久久久久免费观看| 91精品一区二区三区久久久久久| 麻豆91精品91久久久的内涵| 久久久综合精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 91精品国产综合久久久久久| 蜜臀av一级做a爰片久久| 久久亚洲综合av| 91免费看`日韩一区二区| 午夜欧美视频在线观看| 精品对白一区国产伦| 不卡视频免费播放| 午夜精品久久久久久久久久| 久久综合999| 色综合久久久网| 久久er99热精品一区二区| 中文字幕一区二区三区乱码在线 | 国产欧美视频在线观看| 色菇凉天天综合网| 激情综合色综合久久| 亚洲三级在线播放| 欧美一二区视频| av成人动漫在线观看| 日韩av电影免费观看高清完整版| 国产欧美日韩精品a在线观看| 色欧美片视频在线观看| 久久精品国产成人一区二区三区| 亚洲欧洲精品天堂一级| 欧美福利视频一区| 99久久伊人精品| 蜜臀91精品一区二区三区| ...xxx性欧美| 久久网站最新地址| 欧美日韩久久久| 99精品欧美一区二区三区综合在线| 五月开心婷婷久久| 亚洲欧美日韩久久精品| 久久在线免费观看| 欧美色图一区二区三区| 成人在线视频一区二区| 久久www免费人成看片高清| 亚洲一区二区在线免费看| 国产色爱av资源综合区|