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

📄 usb.h

📁 PS2和USB兼容的鼠标源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#define SETUP_RECEIVED_MASK			    (1 << SETUP_RECEIVED)
#define IN_RECEIVED_MASK			    (1 << IN_RECEIVED)
#define OUT_RECEIVED_MASK			    (1 << OUT_RECEIVED)

#define DATAVALID					    0x40
#define COUNT_MASK					    0x0F



/********************************************************************************/
/* 定义标准的设备描述符结构                                                     */
/********************************************************************************/
typedef struct _descript_device
{   unsigned char   length;                     //* 设备描述符的字节数大小
    unsigned char   desciptor_type;	            //* 设备描述符类型编号
    unsigned char   usb_version_lo;             //* USB版本号
    unsigned char   usb_version_hi;
    unsigned char   device_class;               //* USB分配的设备类代码
    unsigned char   device_subclass;            //* USB分配的子类代码
    unsigned char   device_protocol;            //* USB分配的设备协议代码
    unsigned char   max_packet_size;            //* 端点0的最大包大小
    unsigned char   vendor_lo;                  //* 厂商编号
    unsigned char   vendor_hi;
    unsigned char   product_bcd_lo;             //* 产品编号
    unsigned char   product_bcd_hi;
    unsigned char   device_bcd_lo;              //* 设备出厂编号
    unsigned char   device_bcd_hi; 
    unsigned char   manufacturer;               //* 设备厂商字符串的索引
    unsigned char   product_index;              //* 描述产品字符串的索引
    unsigned char   serial_index;               //* 描述设备序列号字符串的索引
    unsigned char   configure_number;           //* 可能的配置数量
}st_descript_device;

/********************************************************************************/
/* 定义标准的配置描述符结构                                                     */
/********************************************************************************/
typedef struct _descript_configure
{   unsigned char   length;                     //* 配置描述符的字节数大小
    unsigned char   desciptor_type;             //* 配置描述符类型编号
    unsigned char   total_length_lo;            //* 此配置返回的所有数据大小
    unsigned char   total_length_hi;
    unsigned char   number_interface;           //* 此配置所支持的接口数量
    unsigned char   configure_value;            //* Set_Configuration命令所需要的参数值
    unsigned char   configure_index;            //* 描述该配置的字符串的索引值
    unsigned char   attributes;                 //* 供电模式的选择
    unsigned char   max_power;                  //* 设备从总线提取的最大电流
}st_descript_configure;

/********************************************************************************/
/* 定义标准的接口描述符结构                                                     */
/********************************************************************************/
typedef struct _descript_interface
{   unsigned char   length;                     //* 接口描述符的字节数大小
    unsigned char   desciptor_type;             //* 接口描述符的类型编号
    unsigned char   interface_code;             //* 该接口的编号
    unsigned char   alternate_setting;          //* 备用的接口描述符编号
    unsigned char   number_endpoints;           //* 该接口使用的端点数,不包括端点0
    unsigned char   interface_class;            //* 接口类型
    unsigned char   interface_subclass;         //* 接口子类型
    unsigned char   interface_protocol;         //* 接口遵循的协议
    unsigned char   interface_index;            //* 描述该接口的字符串索引值
}st_descript_interface;

/********************************************************************************/
/* 定义标准的端点描述符结构                                                     */
/********************************************************************************/
typedef struct _descript_endpoint
{   unsigned char   length;                     //* 端点描述符字节数大小
    unsigned char   desciptor_type;             //* 端点描述符类型编号
    unsigned char   endpoint_address;           //* 端点地址及输入输出属性
    unsigned char   attributes;                 //* 端点的传输类型属性
    unsigned char   max_packet_lo;              //* 端点收、发的最大包大小
    unsigned char   max_packet_hi;
    unsigned char   interval;                   //* 主机查询端点的时间间隔
}st_descript_endpoint;

/********************************************************************************/
/* HID描述符中的下级描述符号                                                    */
/********************************************************************************/
typedef struct _desc_subhid
{   unsigned char   desciptor_type;             //* 下级描述符的类型编号
    unsigned char   descriptor_length_lo;       //* 下级描述符的长度
    unsigned char   descriptor_length_hi;       //* 下级描述符的长度
}st_desc_subhid;

/********************************************************************************/
/* 定义HID描述符结构                                                            */
/********************************************************************************/
typedef struct _descript_hid
{   unsigned char   length;                     //* HID描述符字节数大小
    unsigned char   desciptor_type;             //* 类型
    unsigned char   HID_bcd_lo;                 //* 版本号低字节
    unsigned char   HID_bcd_hi;                 //* 版本号高字节
    unsigned char   country_code;               //* 国家代码
    unsigned char   number_descriptors;         //* 描述符个数
    st_desc_subhid  HID_subdescriptor[NUM_SUB_DESCRIPTORS]; 
}st_descript_hid;

/********************************************************************************/
/* 定义配置/接口/端点等描述符结构体/                                            */
/********************************************************************************/
typedef struct _all_confiure
{   st_descript_configure   descriptor_configuration;
    st_descript_interface   descriptor_interface;
    st_descript_hid         descriptor_hid;
    st_descript_endpoint    descriptor_endpoint[ENDPOINT_NUMBER];
}st_all_confiure;

/********************************************************************************/
/* 字符串描述符结构                                                             */
/********************************************************************************/
typedef struct _descript_string
{   unsigned char length;                       //* 字符串描述符的字节数大小
    unsigned char desciptor_type;               //* 字符串描述符类型编号
    unsigned char string[36];                   //* UNICODE编码的字符串
}st_descript_string;

/********************************************************************************/
/* USB的发送缓冲区结构                                                          */
/********************************************************************************/
typedef struct
{   const  char * cdata;            //* pointer to the data 
    signed char * mdata;            //* pointer to the data
    signed char   length;           //* length of data remaining to be returned       
    signed char   cflag;            //* 判断是ROM数据还是RAM数据标记,ROM=0x1
}st_usb_transmit;

extern st_usb_transmit usb_transmit;
extern unsigned char ctrl_logic_bit;

void usb_pro_setup_request(void);
void usb_pro_in_request(void);
void usb_main_tasking(void);
void usb_ret_initialize(void);
void usb_main_process(void);


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -