?? usb.h
字號:
/********************************************************************************/
/* filename: usb.h */
/* version : v1.00 */
/* created : hw-chen */
/* descript: HID MOUSE DESCRIPTOR DECLARATIONS */
/********************************************************************************/
#ifndef __USB_H__
#define __USB_H__
/********************************************************************************/
/* ACK 表示數據包沒有位填充或數據字段上的CRC錯,并且數據PID被正確收到. */
/* ACK在下列的情況下被發放 */
/* 1. 當時序位(Sequence Bit)匹配且接收器能接受數據的時候. */
/* 2. 當時序位失配,但發送方和接收器互相之間必須再同步(Resynchronize)的 */
/* 時候. */
/* ACK握手信號只適用于數據被傳送且期待握手信號的事務中.對于輸入事務, */
/* ACK由主機返回,而對于輸出或建立事務則由功能部件返回. */
/* NAK 對于輸出事務,表示功能部件不會從主機接受數據 */
/* 對于輸入事務,表示能部件沒有傳輸數據到主機 */
/* STALL 作為輸入標記的回應,或者在輸出事務的數據時相之后由功能部件返回. */
/* STALL表示功能部件不能傳輸/接收數據/不支持一個控制管道請求, */
/* 在任何條件下都不允許主機返回STALL. */
/********************************************************************************/
/********************************************************************************/
/* 定義USB的模式 */
/********************************************************************************/
#define MODE_DISABLE 0B0000 //* 禁止模式
#define MODE_NAK_IN_OUT 0B0001 //*
#define MODE_STATUS_OUT 0B0010
#define MODE_STALL_IN_OUT 0B0011
#define MODE_STATUS_ONLY 0B0110
#define MODE_NAK_OUT 0B1000
#define MODE_ACK_OUT 0B1001
#define MODE_ACK_OUT_STATUS_IN 0B1011
#define MODE_NAK_IN 0B1100
#define MODE_ACK_IN 0B1101
#define MODE_ACK_IN_STATUS_OUT 0B1111
#define USB_MODE_MASK 0B1111
#define stall_inout MODE_STALL_IN_OUT
/********************************************************************************/
/* 定義標準的描述符類型,也就是USB分配的各種描述符的編號,即bDescriptorType */
/* 字段的值 */
/********************************************************************************/
#define DESCRIPTOR_DEVICE 0x01 //* 設備描述符
#define DESCRIPTOR_CONFIGURATION 0x02 //* 配置描述符
#define DESCRIPTOR_STRING 0x03 //* 字符串描述符
#define DESCRIPTOR_INTERFACE 0x04 //* 接口描述符
#define DESCRIPTOR_ENDPOINT 0x05 //* 端點描述符
#define DESCRIPTOR_HID 0x21 //* HID描述符,hid class v1.0 draft
#define DESCRIPTOR_REPORT 0x22 //* 報告描述符
#define DESCRIPTOR_PHYSICAL 0x23 //* 物理描述符
/********************************************************************************/
/* 定義標準的USB請求命令,即USB分配的各種請求的編號,即bRequest字段的值 */
/********************************************************************************/
#define GET_STATUS 0x0 //* 獲取狀態請求
#define CLR_FEATURE 0x1 //* 清除特性請求
#define SET_FEATURE 0x3 //* 設置特性請求
#define SET_ADDRESS 0x5 //* 設置地址請求
#define GET_DESCRIPTOR 0x6 //* 獲取描述符請求
#define SET_DESCRIPTOR 0x7 //* 設置描述符請求
#define GET_CONFIGURATION 0x8 //* 獲取配置請求
#define SET_CONFIGURATION 0x9 //* 設置配置請求
#define GET_INTERFACE 0xA //* 獲取接口請求
#define SET_INTERFACE 0xB //* 設置接口請求
#define SYNCH_FRAME 0xC //* 同步幀請求
/********************************************************************************/
/* 定義USB HID特定命令請求 */
/********************************************************************************/
#define GET_REPORT 0x1 //* 獲取報告
#define GET_IDLE 0x2 //* 獲取空閑狀態
#define GET_PROTOCOL 0x3 //* 獲取協議
#define SET_REPORT 0x9 //* 設置報告
#define SET_IDLE 0xA //* 設置空閑
#define SET_PROTOCOL 0xB //* 設置協議
/********************************************************************************/
/* 定義的端點類型 */
/********************************************************************************/
#define ENDPOINT_TYPE_CONTROL 0x0 //* 控制傳輸
#define ENDPOINT_TYPE_ISOCHRONOUS 0x1 //* 同步傳輸
#define ENDPOINT_TYPE_BULK 0x2 //* 批量傳輸
#define ENDPOINT_TYPE_INTERRUPT 0x3 //* 中斷傳輸
#define NUM_SUB_DESCRIPTORS 0x1 //* HID的下級描述符個數
#define ENDPOINT_NUMBER 0x1
#define MAX_CONTROL_DATA_SIZE 0x10
/********************************************************************************/
/* 定義desciptor_type字節的位 */
/********************************************************************************/
#define HST_2_DEV 0B00000000
#define DEV_2_HST 0B10000000
#define STANDARD 0B00000000
#define CLASS 0B00100000
#define VENDOR 0B01000000
#define DEVICE 0B00000000
#define INTERFACE 0B00000001
#define ENDPOINT 0B00000010
#define OTHER 0B00000011
#define REQ_MASK 0B01100000 //* 請求命令MASK,5-6BIT
/********************************************************************************/
/* 配置狀態 */
/********************************************************************************/
#define CONFIGURED 0x1 //* configuration status values
#define UNCONFIG 0x0
#define DIS_REM_WAKEUP 0x0 //* bit[1] = 0
#define ENB_REM_WAKEUP 0x2 //* bit[1] = 1
#define EPT_STALL 0x0 //* standard feature selectors, recipient endpoint
#define DEV_REM_WAKEUP 0x1 //* recipient device
#define BOOT_PROTOCOL 0x0
#define REPT_PROTOCOL 0x1
#define usb_i_type_device (DEV_2_HST|STANDARD|DEVICE)
#define usb_i_type_endpoint (DEV_2_HST|STANDARD|ENDPOINT)
#define usb_i_type_interface (DEV_2_HST|STANDARD|INTERFACE)
#define usb_o_type_device (HST_2_DEV|STANDARD|DEVICE)
#define usb_o_type_endpoint (HST_2_DEV|STANDARD|ENDPOINT)
#define usb_o_type_interface (HST_2_DEV|STANDARD|INTERFACE)
#define usb_i_class_interface (DEV_2_HST|CLASS|INTERFACE)
#define usb_o_class_interface (HST_2_DEV|CLASS|INTERFACE)
#define usb_o_class_endpoint (HST_2_DEV|CLASS|ENDPOINT)
#define SETUP_RECEIVED 7
#define IN_RECEIVED 6
#define OUT_RECEIVED 5
#define ACKNOWLEDGE 4
#define ADDRESS_ENABLE_BIT 0x80
#define ACK_RECEIVED_MASK (1 << ACKNOWLEDGE)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -