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