SDL-1.2.14
[sdl_omap.git] / src / joystick / os2 / joyos2.h
1 /*****************************************************************************/
2 /*                                                                           */
3 /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
4 /*                                                                           */
5 /*    The following IBM OS/2 source code is provided to you solely for       */
6 /*    the purpose of assisting you in your development of OS/2 device        */
7 /*    drivers. You may use this code in accordance with the IBM License      */
8 /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
9 /*    Copyright statement may not be removed.                                */
10 /*                                                                           */
11 /*****************************************************************************/
12 #ifndef JOYOS2_H
13 #define JOYOS2_H
14
15 /****** GAMEPORT.SYS joystick definitions, start *****************************/
16 #define GAME_VERSION    0x20           /* 2.0 First IBM version */
17 #define GAMEPDDNAME     "GAME$   "
18 #define IOCTL_CAT_USER  0x80
19 #define GAME_PORT_GET   0x20            /* read GAMEPORT.SYS values */
20 #define GAME_PORT_RESET 0x60            /* reset joystick mask with given value */
21
22 #pragma pack(1)                         /* pack structure size is 1 byte */
23 typedef struct {                        /* GAMEPORT.SYS structure */
24         USHORT  usJs_AxCnt;             /* Joystick_A X position */
25         USHORT  usJs_AyCnt;             /* Joystick_A Y position */
26         USHORT  usJs_BxCnt;             /* Joystick_B X position */
27         USHORT  usJs_ByCnt;             /* Joystick_B Y position */
28         USHORT  usJs_ButtonA1Cnt;       /* button A1 press count */
29         USHORT  usJs_ButtonA2Cnt;       /* button A2 press count */
30         USHORT  usJs_ButtonB1Cnt;       /* button B1 press count */
31         USHORT  usJs_ButtonB2Cnt;       /* button B2 press count */
32         UCHAR   ucJs_JoyStickMask;      /* mask of connected joystick pots */
33         UCHAR   ucJs_ButtonStatus;      /* bits of switches down */
34         ULONG   ulJs_Ticks;             /* joystick clock ticks */
35 } GAME_PORT_STRUCT;
36 #pragma pack()                          /*reset to normal pack size */
37 /****** GAMEPORT.SYS joystick definitions, end *******************************/
38
39
40 /****************************************************************************/
41 #define GAME_GET_VERSION                0x01
42 #define GAME_GET_PARMS                  0x02
43 #define GAME_SET_PARMS                  0x03
44 #define GAME_GET_CALIB                  0x04
45 #define GAME_SET_CALIB                  0x05
46 #define GAME_GET_DIGSET                 0x06
47 #define GAME_SET_DIGSET                 0x07
48 #define GAME_GET_STATUS                 0x10
49 #define GAME_GET_STATUS_BUTWAIT         0x11
50 #define GAME_GET_STATUS_SAMPWAIT        0x12
51 /****************************************************************************/
52
53 /****************************************************************************/
54 // bit masks for each axis
55 #define JOY_AX_BIT      0x01
56 #define JOY_AY_BIT      0x02
57 #define JOY_A_BITS      (JOY_AX_BIT|JOY_AY_BIT)
58 #define JOY_BX_BIT      0x04
59 #define JOY_BY_BIT      0x08
60 #define JOY_B_BITS      (JOY_BX_BIT|JOY_BY_BIT)
61 #define JOY_ALLPOS_BITS (JOY_A_BITS|JOY_B_BITS)
62
63 // bit masks for each button
64 #define JOY_BUT1_BIT    0x10
65 #define JOY_BUT2_BIT    0x20
66 #define JOY_BUT3_BIT    0x40
67 #define JOY_BUT4_BIT    0x80
68 #define JOY_ALL_BUTS    (JOY_BUT1_BIT|JOY_BUT2_BIT|JOY_BUT3_BIT|JOY_BUT4_BIT)
69 /****************************************************************************/
70
71 /****************************************************************************/
72 // 1-D position struct used for each axis
73 typedef SHORT   GAME_POS;       /* some data formats require signed values */
74
75 // simple 2-D position for each joystick
76 typedef struct
77 {
78         GAME_POS                x;
79         GAME_POS                y;
80 }
81 GAME_2DPOS_STRUCT;
82
83 // struct defining the instantaneous state of both sticks and all buttons
84 typedef struct
85 {
86         GAME_2DPOS_STRUCT       A;
87         GAME_2DPOS_STRUCT       B;
88         USHORT                  butMask;
89 }
90 GAME_DATA_STRUCT;
91
92 // struct to be used for calibration and digital response on each axis
93 typedef struct
94 {
95         GAME_POS                lower;
96         GAME_POS                centre;
97         GAME_POS                upper;
98 }
99 GAME_3POS_STRUCT;
100 /****************************************************************************/
101
102 /****************************************************************************/
103 // status struct returned to OS/2 applications:
104 // current data for all sticks as well as button counts since last read
105 typedef struct
106 {
107         GAME_DATA_STRUCT        curdata;
108         USHORT                  b1cnt;
109         USHORT                  b2cnt;
110         USHORT                  b3cnt;
111         USHORT                  b4cnt;
112 }
113 GAME_STATUS_STRUCT;
114 /****************************************************************************/
115
116 /****************************************************************************/
117 /* in use bitmasks originating in 0.2b */
118 #define GAME_USE_BOTH_OLDMASK   0x01    /* for backward compat with bool */
119 #define GAME_USE_X_NEWMASK      0x02
120 #define GAME_USE_Y_NEWMASK      0x04
121 #define GAME_USE_X_EITHERMASK   (GAME_USE_X_NEWMASK|GAME_USE_BOTH_OLDMASK)
122 #define GAME_USE_Y_EITHERMASK   (GAME_USE_Y_NEWMASK|GAME_USE_BOTH_OLDMASK)
123 #define GAME_USE_BOTH_NEWMASK   (GAME_USE_X_NEWMASK|GAME_USE_Y_NEWMASK)
124
125 /* only timed sampling implemented in version 1.0 */
126 #define GAME_MODE_TIMED         1       /* timed sampling */
127 #define GAME_MODE_REQUEST       2       /* request driven sampling */
128
129 /* only raw implemented in version 1.0 */
130 #define GAME_DATA_FORMAT_RAW    1       /* [l,c,r]   */
131 #define GAME_DATA_FORMAT_SIGNED 2       /* [-l,0,+r] */
132 #define GAME_DATA_FORMAT_BINARY 3       /* {-1,0,+1} */
133 #define GAME_DATA_FORMAT_SCALED 4       /* [-10,+10] */
134
135 // parameters defining the operation of the driver
136 typedef struct
137 {
138         USHORT                  useA;           /* new bitmasks: see above */
139         USHORT                  useB;
140         USHORT                  mode;           /* see consts above */
141         USHORT                  format;         /* see consts above */
142         USHORT                  sampDiv;        /* samp freq = 32 / n */
143         USHORT                  scale;          /* scaling factor */
144         USHORT                  res1;           /* must be 0 */
145         USHORT                  res2;           /* must be 0 */
146 }
147 GAME_PARM_STRUCT;
148 /****************************************************************************/
149
150 /****************************************************************************/
151 // calibration values for each axis:
152 //      - upper limit on value to be considered in lower range
153 //      - centre value
154 //      - lower limit on value to be considered in upper range
155 typedef struct
156 {
157         GAME_3POS_STRUCT        Ax;
158         GAME_3POS_STRUCT        Ay;
159         GAME_3POS_STRUCT        Bx;
160         GAME_3POS_STRUCT        By;
161 }
162 GAME_CALIB_STRUCT;
163 /****************************************************************************/
164
165 /****************************************************************************/
166 // struct defining the digital response values for all axes
167 typedef struct
168 {
169         GAME_3POS_STRUCT        Ax;
170         GAME_3POS_STRUCT        Ay;
171         GAME_3POS_STRUCT        Bx;
172         GAME_3POS_STRUCT        By;
173 }
174 GAME_DIGSET_STRUCT;
175 /****************************************************************************/
176
177 #endif