⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb.h

📁 PS2和USB兼容的鼠标源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/********************************************************************************/
/* 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 + -