]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - sys/dev/usb/uxb360gp_rdesc.h
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / sys / dev / usb / uxb360gp_rdesc.h
1 /*-
2  * Copyright (c) 2005 Ed Schouten <ed@fxq.nl>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  */
28
29 /*
30  * The descriptor has no output report format, thus preventing you from
31  * controlling the LEDs and the built-in rumblers.
32  */
33 static const uByte uhid_xb360gp_report_descr[] = {
34     0x05, 0x01,         /* USAGE PAGE (Generic Desktop)         */
35     0x09, 0x05,         /* USAGE (Gamepad)                      */
36     0xa1, 0x01,         /* COLLECTION (Application)             */
37     /* Unused */
38     0x75, 0x08,         /*  REPORT SIZE (8)                     */
39     0x95, 0x01,         /*  REPORT COUNT (1)                    */
40     0x81, 0x01,         /*  INPUT (Constant)                    */
41     /* Byte count */
42     0x75, 0x08,         /*  REPORT SIZE (8)                     */
43     0x95, 0x01,         /*  REPORT COUNT (1)                    */
44     0x05, 0x01,         /*  USAGE PAGE (Generic Desktop)        */
45     0x09, 0x3b,         /*  USAGE (Byte Count)                  */
46     0x81, 0x01,         /*  INPUT (Constant)                    */
47     /* D-Pad */
48     0x05, 0x01,         /*  USAGE PAGE (Generic Desktop)        */
49     0x09, 0x01,         /*  USAGE (Pointer)                     */
50     0xa1, 0x00,         /*  COLLECTION (Physical)               */
51     0x75, 0x01,         /*   REPORT SIZE (1)                    */
52     0x15, 0x00,         /*   LOGICAL MINIMUM (0)                */
53     0x25, 0x01,         /*   LOGICAL MAXIMUM (1)                */
54     0x35, 0x00,         /*   PHYSICAL MINIMUM (0)               */
55     0x45, 0x01,         /*   PHYSICAL MAXIMUM (1)               */
56     0x95, 0x04,         /*   REPORT COUNT (4)                   */
57     0x05, 0x01,         /*   USAGE PAGE (Generic Desktop)       */
58     0x09, 0x90,         /*   USAGE (D-Pad Up)                   */
59     0x09, 0x91,         /*   USAGE (D-Pad Down)                 */
60     0x09, 0x93,         /*   USAGE (D-Pad Left)                 */
61     0x09, 0x92,         /*   USAGE (D-Pad Right)                */
62     0x81, 0x02,         /*   INPUT (Data, Variable, Absolute)   */
63     0xc0,               /*  END COLLECTION                      */
64     /* Buttons 5-11 */
65     0x75, 0x01,         /*  REPORT SIZE (1)                     */
66     0x15, 0x00,         /*  LOGICAL MINIMUM (0)                 */
67     0x25, 0x01,         /*  LOGICAL MAXIMUM (1)                 */
68     0x35, 0x00,         /*  PHYSICAL MINIMUM (0)                */
69     0x45, 0x01,         /*  PHYSICAL MAXIMUM (1)                */
70     0x95, 0x07,         /*  REPORT COUNT (7)                    */
71     0x05, 0x09,         /*  USAGE PAGE (Button)                 */
72     0x09, 0x08,         /*  USAGE (Button 8)                    */
73     0x09, 0x07,         /*  USAGE (Button 7)                    */
74     0x09, 0x09,         /*  USAGE (Button 9)                    */
75     0x09, 0x0a,         /*  USAGE (Button 10)                   */
76     0x09, 0x05,         /*  USAGE (Button 5)                    */
77     0x09, 0x06,         /*  USAGE (Button 6)                    */
78     0x09, 0x0b,         /*  USAGE (Button 11)                   */
79     0x81, 0x02,         /*  INPUT (Data, Variable, Absolute)    */
80     /* Unused */
81     0x75, 0x01,         /*  REPORT SIZE (1)                     */
82     0x95, 0x01,         /*  REPORT COUNT (1)                    */
83     0x81, 0x01,         /*  INPUT (Constant)                    */
84     /* Buttons 1-4 */
85     0x75, 0x01,         /*  REPORT SIZE (1)                     */
86     0x15, 0x00,         /*  LOGICAL MINIMUM (0)                 */
87     0x25, 0x01,         /*  LOGICAL MAXIMUM (1)                 */
88     0x35, 0x00,         /*  PHYSICAL MINIMUM (0)                */
89     0x45, 0x01,         /*  PHYSICAL MAXIMUM (1)                */
90     0x95, 0x04,         /*  REPORT COUNT (4)                    */
91     0x05, 0x09,         /*  USAGE PAGE (Button)                 */
92     0x19, 0x01,         /*  USAGE MINIMUM (Button 1)            */
93     0x29, 0x04,         /*  USAGE MAXIMUM (Button 4)            */
94     0x81, 0x02,         /*  INPUT (Data, Variable, Absolute)    */
95     /* Triggers */
96     0x75, 0x08,         /*  REPORT SIZE (8)                     */
97     0x15, 0x00,         /*  LOGICAL MINIMUM (0)                 */
98     0x26, 0xff, 0x00,   /*  LOGICAL MAXIMUM (255)               */
99     0x35, 0x00,         /*  PHYSICAL MINIMUM (0)                */
100     0x46, 0xff, 0x00,   /*  PHYSICAL MAXIMUM (255)              */
101     0x95, 0x02,         /*  REPORT SIZE (2)                     */
102     0x05, 0x01,         /*  USAGE PAGE (Generic Desktop)        */
103     0x09, 0x32,         /*  USAGE (Z)                           */
104     0x09, 0x35,         /*  USAGE (Rz)                          */
105     0x81, 0x02,         /*  INPUT (Data, Variable, Absolute)    */
106     /* Sticks */
107     0x75, 0x10,         /*  REPORT SIZE (16)                    */
108     0x16, 0x00, 0x80,   /*  LOGICAL MINIMUM (-32768)            */
109     0x26, 0xff, 0x7f,   /*  LOGICAL MAXIMUM (32767)             */
110     0x36, 0x00, 0x80,   /*  PHYSICAL MINIMUM (-32768)           */
111     0x46, 0xff, 0x7f,   /*  PHYSICAL MAXIMUM (32767)            */
112     0x95, 0x04,         /*  REPORT COUNT (4)                    */
113     0x05, 0x01,         /*  USAGE PAGE (Generic Desktop)        */
114     0x09, 0x30,         /*  USAGE (X)                           */
115     0x09, 0x31,         /*  USAGE (Y)                           */
116     0x09, 0x33,         /*  USAGE (Rx)                          */
117     0x09, 0x34,         /*  USAGE (Ry)                          */
118     0x81, 0x02,         /*  INPUT (Data, Variable, Absolute)    */
119     /* Unused */
120     0x75, 0x30,         /*  REPORT SIZE (48)                    */
121     0x95, 0x01,         /*  REPORT COUNT (1)                    */
122     0x81, 0x01,         /*  INPUT (Constant)                    */
123     0xc0,               /* END COLLECTION                       */
124 };