0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
/************** Descriptor of Joystick Mouse interface ****************/ /* 09 */
0x09, /*bLength: Interface Descriptor size*/
USB_INTERFACE_DESCRIPTOR_TYPE,/*bDescriptorType: Interface descriptor type描述符类型(中断)*/
0x00, /*bInterfaceNumber: Number of Interface中断号(0)*/ 0x00, /*bAlternateSetting: Alternate setting替换设置(0)*/ 0x02, /*bNumEndpoints支持的终端号(1)*/ 0x03, /*bInterfaceClass: HID*/
0x00, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
0x00, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/ 0, /*iInterface: Index of string descriptor*/
/******************** Descriptor of Joystick Mouse HID ********************/ /* 18 */
0x09, /*bLength: HID Descriptor size*/ HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
0x11, /*bcdHID: HID Class Spec release number*/ 0x01,
0x00, /*bCountryCode: Hardware target country*/
0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/ 0x22, /*bDescriptorType*/
(unsigned char) JOYSTICK_SIZ_REPORT_DESC,/*wItemLength: Total length of Report
descriptor*/
0x01,
/******************** Descriptor of Joystick Mouse endpoint ********************/ /* 27 */
0x07, /*bLength: Endpoint Descriptor size*/ USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
0x81, /*bEndpointAddress: Endpoint Address (IN)*/ 0x03, /*bmAttributes: Interrupt endpoint*/
0x40, /*最大包大小(5B);wMaxPacketSize: 0x04,4 Byte max */ 0x00,
0x01, /*查询间隔(1ms)bInterval: Polling Interval (1ms)*/ /******************** Descriptor of Joystick Mouse endpoint ********************/ /* 34 */
0x07, /*bLength: Endpoint Descriptor size*/ USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/
0x02, /*bEndpointAddress: Endpoint Address (IN)*/ 0x03, /*bmAttributes: Interrupt endpoint*/ 0x40, /*最大包大小(5B);wMaxPacketSize: 0x04,4 Byte max */ 0x00,
0x01, /*查询间隔(32ms)bInterval: Polling Interval (32 ms)*/
/* 41 */ }
; /* MOUSE_ConfigDescriptor */
const uint8_t Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] = { 0x05, 0x8c, // USAGE_PAGE (ST Page) 0x09, 0x01, // USAGE (Demo Kit) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x01, // report id // The Input report 0x09, 0x03, // USAGE ID - Vendor defined 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x00, 0xFF, // LOGICAL_MAXIMUM (255) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x04, // REPORT_COUNT (4) 0x81, 0x02, // INPUT (Data,Var,Abs) // The Output report 0x09, 0x04, // USAGE ID - Vendor defined 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x00, 0xFF, // LOGICAL_MAXIMUM (255) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x31, // REPORT_COUNT (50) 0x91, 0x02, // OUTPUT (Data,Var,Abs) 0xc0, //END_COLLECTION ///////////////////35
//Mouse
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x02, // REPORT_ID (Mouse)
0x09, 0x01, // USAGE (Pointer) 0xa1, 0x00, // COLLECTION (Physical) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM (Button 1) 0x29, 0x02, // USAGE_MAXIMUM (Button 2) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) 0x95, 0x02, // REPORT_COUNT (2) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x06, // REPORT_COUNT (6)
0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x75, 0x10, // REPORT_SIZE (16) 0x95, 0x01, // REPORT_COUNT (1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x20, 0x03, // LOGICAL_MAXIMUM (800) 0x35, 0x00, // PHYSICAL_MINIMUM (0) 0x46, 0x20, 0x03, // PHYSICAL_MAXIMUM (800) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x09, 0x31, // USAGE (Y) 0x75, 0x10, // REPORT_SIZE (16) 0x95, 0x01, // REPORT_COUNT (2) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x58, 0x02, // LOGICAL_MAXIMUM (600) 0x35, 0x00, // PHYSICAL_MINIMUM (0) 0x46, 0x58, 0x02, // PHYSICAL_MAXIMUM (600) 0x81, 0x02, // INPUT (Data,Var,Abs)
0xc0, // END_COLLECTION 0xc0, // END_COLLECTION //////////////////////107 //multitouch
0x05, 0x0D, // USAGE_PAGE (Digitizers) 0x09, 0x04, // USAGE (Touch Screen)
0xA1, 0x01, // COLLECTION (Application)
0x85, 0x03, // REPORT_ID (Touch) 0x09, 0x22, // USAGE (Finger) // 1st Touch
0xA1, 0x02, // COLLECTION (Logical)
0x09, 0x42, // USAGE (Tip Switch) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) 0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x09, 0x32, // USAGE (In Range) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x09, 0x47, // USAGE (Touch Valid) 0x81, 0x02, // INPUT (Data,Var,Abs)
0x95, 0x05, // REPORT_COUNT (5) 0x81, 0x03, // INPUT (Cnst,Ary,Abs) 0x75, 0x08, // REPORT_SIZE (
0x09, 0x51, // USAGE (Contact Identifier)
0x95, 0x01, // REPORT_COUNT (1) 0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desk..
0x09, 0x30, // USAGE (X) 0x75, 0x10, // REPORT_SIZE (16) 0x95, 0x01, // REPORT_COUNT (1) 0x15, 0x00, 0x26, 0x20, 0x03, 0x35, 0x00, 0x46, 0x20, 0x03, 0x81, 0x02, 0x09, 0x31, 0x75, 0x10, 0x95, 0x01, 0x15, 0x00, 0x26, 0x58, 0x02, 0x35, 0x00, 0x46, 0x58, 0x02, 0x81, 0x02, 0xC0, //2nd Touch 0x05, 0x0d, 0x09, 0x22, 0xA1, 0x02,
0x09, 0x42, 0x15, 0x00, 0x25, 0x01, 0x75, 0x01, 0x95, 0x01, 0x81, 0x02, 0x09, 0x32, // 0x81, 0x02, 0x09, 0x47, // 0x81, 0x02, // 0x95, 0x05, 0x81, 0x03, 0x75, 0x08, 0x09, 0x51, 0x95, 0x01, // LOGICAL_MINIMUM (0) // LOGICAL_MAXIMUM (800) // PHYSICAL_MINIMUM (0) // PHYSICAL_MAXIMUM (800) // INPUT (Data,Var,Abs) // USAGE (Y) // REPORT_SIZE (16) // REPORT_COUNT (2) // LOGICAL_MINIMUM (0) // LOGICAL_MAXIMUM (600) // PHYSICAL_MINIMUM (0) // PHYSICAL_MAXIMUM (600) // INPUT (Data,Var,Abs) // END_COLLECTION //USAGE_PAGE (Digitizers) // <--- move to here
// USAGE (Finger) // <--- add this line // COLLECTION (Logical) // USAGE (Tip Switch) // LOGICAL_MINIMUM (0) // LOGICAL_MAXIMUM (1) // REPORT_SIZE (1) // REPORT_COUNT (1) // INPUT (Data,Var,Abs) USAGE (In Range) // INPUT (Data,Var,Abs) USAGE (Touch Valid) INPUT (Data,Var,Abs)
// REPORT_COUNT (5) // INPUT (Cnst,Ary,Abs) // REPORT_SIZE (
// USAGE (Contact Identifier)
// REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic Desk..
0x09, 0x30, // USAGE (X) 0x75, 0x10, // REPORT_SIZE (16) 0x95, 0x01, // REPORT_COUNT (1) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x20, 0x03, // LOGICAL_MAXIMUM (800) 0x35, 0x00, // PHYSICAL_MINIMUM (0) 0x46, 0x20, 0x03, // PHYSICAL_MAXIMUM (800) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x09, 0x31, // USAGE (Y) 0x75, 0x10, // REPORT_SIZE (16) 0x95, 0x01, // REPORT_COUNT (2) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0x58, 0x02, // LOGICAL_MAXIMUM (600) 0x35, 0x00, // PHYSICAL_MINIMUM (0) 0x46, 0x58, 0x02, // PHYSICAL_MAXIMUM (600) 0x81, 0x02, // INPUT (Data,Var,Abs) 0xC0, // END_COLLECTION //////////////////////////////267
0x05, 0x0D, // USAGE_PAGE (Digitizers) 0x09, 0x54, // USAGE (Actual count) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x08, // REPORT_SIZE ( 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x08, // LOGICAL_MAXIMUM ( 0x81, 0x02, // INPUT (Data,Var,Abs) 0x85, 0x0a, // REPORT_ID (Feature) 0x09, 0x55, // USAGE(Maximum Count) 0x25, 0x02, // LOGICAL_MAXIMUM ( 0xB1, 0x02, // FEATURE (Data,Var,Abs) 0xC0 // END_COLLECTION }
; /* Joystick_ReportDescriptor */
const uint8_t MTFeatureReport[MT_Feature_Report_Size] = {
0x0a,0x02 }
2、 usb_proc.c设置端点属性
/* Initialize Endpoint 1 */
SetEPType(ENDP1, EP_INTERRUPT);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库stm32 USB模块的HID设备开发(8)在线全文阅读。
相关推荐: