?? descriptor.h
字號:
#include "mytype.h"
#include "hiduse.h"
#ifndef _descriptor_h_
#define _descriptor_h_
//定義標準的設備描述符結構
typedef struct _DEVICE_DCESCRIPTOR_STRUCT
{
uint8 blength; //設備描述符的字節數大小
uint8 bDescriptorType; //設備描述符類型編號
uint16 bcdUSB; //USB版本號
uint8 bDeviceClass; //USB分配的設備類代碼
uint8 bDeviceSubClass; //USB分配的子類代碼
uint8 bDeviceProtocol; //USB分配的設備協議代碼
uint8 bMaxPacketSize0; //端點0的最大包大小
uint16 idVendor; //廠商編號
uint16 idProduct; //產品編號
uint16 bcdDevice; //設備出廠編號
uint8 iManufacturer; //設備廠商字符串的索引
uint8 iProduct; //描述產品字符串的索引
uint8 iSerialNumber; //描述設備序列號字符串的索引
uint8 bNumConfigurations; //可能的配置數量
}DEVICE_DESCRIPTOR_STRUCT, *pDEVICE_DESCRIPTOR_STRUCT;
//定義標準的配置描述符結構
typedef struct _CONFIGURATION_DESCRIPTOR_STRUCT
{
uint8 bLength; //配置描述符的字節數大小
uint8 bDescriptorType; //配置描述符類型編號
uint16 wTotalLength; //此配置返回的所有數據大小
uint8 bNumInterfaces; //此配置所支持的接口數量
uint8 bConfigurationValue; //Set_Configuration命令所需要的參數值
uint8 iConfiguration; //描述該配置的字符串的索引值
uint8 bmAttributes; //供電模式的選擇
uint8 MaxPower; //設備從總線提取的最大電流
}CONFIGURATION_DESCRIPTOR_STRUCT, *pCONFIGURATION_DESCRIPTOR_STRUCT;
//定義標準的接口描述符結構
typedef struct _INTERFACE_DESCRIPTOR_STRUCT
{
uint8 bLength; //接口描述符的字節數大小
uint8 bDescriptorType; //接口描述符的類型編號
uint8 bInterfaceNumber; //該接口的編號
uint8 bAlternateSetting; //備用的接口描述符編號
uint8 bNumEndpoints; //該接口使用的端點數,不包括端點0
uint8 bInterfaceClass; //接口類型
uint8 bInterfaceSubClass; //接口子類型
uint8 bInterfaceProtocol; //接口遵循的協議
uint8 iInterface; //描述該接口的字符串索引值
}INTERFACE_DESCRIPTOR_STRUCT, *pINTERFACE_DESCRIPTOR_STRUCT;
//定義標準的端點描述符結構
typedef struct _ENDPOINT_DESCRIPTOR_STRUCT
{
uint8 bLength; //端點描述符字節數大小
uint8 bDescriptorType; //端點描述符類型編號
uint8 bEndpointAddress; //端點地址及輸入輸出屬性
uint8 bmAttributes; //端點的傳輸類型屬性
uint16 wMaxPacketSize; //端點收、發的最大包大小
uint8 bInterval; //主機查詢端點的時間間隔
}ENDPOINT_DESCRIPTOR_STRUCT, * pENDPOINT_DESCRIPTOR_STRUCT;
//HID描述符中的下級描述符號
typedef struct _HID_SUB_DESCRIPTOR_STRUCT
{
uint8 bDescriptorType; //下級描述符的類型編號
uint16 wDescriptorLength; //下級描述符的長度
}HID_SUB_DESCRIPTOR_STRUCT,*pHID_SUB_DESCRIPTOR_STRUCT;
#define NUM_SUB_DESCRIPTORS 1
//定義HID描述符結構
typedef struct _HID_DESCRIPTOR_STRUCT
{
uint8 bLength;
uint8 bDescriptorType;
uint16 bcdHID;
uint8 bCountryCode;
uint8 bNumDescriptors;
HID_SUB_DESCRIPTOR_STRUCT HidSubDescriptors[NUM_SUB_DESCRIPTORS];
}HID_DESCRIPTOR_STRUCT,*pHID_DESCRIPTOR_STRUCT;
//一個字符串描述符結構
typedef struct _STRING_DESCRIPTOR_STRUCT
{
uint8 bLength; //字符串描述符的字節數大小
uint8 bDescriptorType; //字符串描述符類型編號
uint8 StringDesriptor[36]; //UNICODE編碼的字符串
}STRING_DESCRIPTOR_STRUCT, *pSTRING_DESCRIPTOR_STRUCT;
#define ENDPOINT_NUMBER 2
//定義配置,接口,端點等描述符結構體
typedef struct _USB_DESCRIPTOR_STRUCT
{
CONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;
INTERFACE_DESCRIPTOR_STRUCT interface_descriptor;
HID_DESCRIPTOR_STRUCT hid_descriptor;
ENDPOINT_DESCRIPTOR_STRUCT endpoint_descriptor[ENDPOINT_NUMBER];
}USB_DESCRIPTOR_STRUCT, *pUSB_DESCRIPTOR_STRUCT;
//*******************************************************
// USB 設備請求類型掩碼 masks
//*******************************************************
//(1) 接收方: D4...D0
#define USB_RECIPIENT 0x1F
#define USB_RECIPIENT_DEVICE 0x00
#define USB_RECIPIENT_INTERFACE 0x01
#define USB_RECIPIENT_ENDPOINT 0x02
//(2) 類型: D6...D5
#define USB_REQUEST_TYPE 0x60
#define USB_STANDARD_REQUEST 0x00
#define USB_CLASS_REQUEST 0x20
#define USB_VENDOR_REQUEST 0x40
//(3) 數據傳輸方向: D7
#define USB_ENDPOINT_DIRECTION_MASK 0x80
//地址掩碼
#define DEVICE_ADDRESS_MASK 0x7F
//(4) USB 請求
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -