1 /* This file is part of Clementine.
2    Copyright 2010, David Sansome <me@davidsansome.com>
3 
4    Clementine is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8 
9    Clementine is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13 
14    You should have received a copy of the GNU General Public License
15    along with Clementine.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 
18 #ifndef WIIMOTEDEV_CONSTS_H
19 #define WIIMOTEDEV_CONSTS_H
20 
21 #define WIIMOTEDEV_CONFIG_FILE "/etc/wiimotedev/wiimotedev.conf"
22 #define WIIMOTEDEV_TCP_PORT 50091
23 
24 #define WIIMOTEDEV_DBUS_SERVICE_NAME "org.wiimotedev.daemon"
25 
26 #define WIIMOTEDEV_DBUS_IFACE_EVENTS "org.wiimotedev.deviceEvents"
27 #define WIIMOTEDEV_DBUS_IFACE_SERVICE "org.wiimotedev.service"
28 #define WIIMOTEDEV_DBUS_OBJECT_EVENTS "/deviceEvents"
29 #define WIIMOTEDEV_DBUS_OBJECT_SERVICE "/service"
30 
31 /* Compatibility ------------------------------------------------- */
32 
33 #define WIIMOTEDEV_DBUS_SERVICE_IFACE "org.wiimotedev.service"
34 #define WIIMOTEDEV_DBUS_EVENTS_IFACE "org.wiimotedev.deviceEvents"
35 #define WIIMOTEDEV_DBUS_SERVICE_OBJECT "/service"
36 #define WIIMOTEDEV_DBUS_EVENTS_OBJECT "/deviceEvents"
37 
38 /* Typedefs ------------------------------------------------------ */
39 
40 typedef unsigned long long uint64;
41 typedef unsigned int uint32;
42 typedef unsigned short uint16;
43 typedef unsigned char uint8;
44 
45 typedef signed long long int64;
46 typedef signed int int32;
47 typedef signed short int16;
48 typedef signed char int8;
49 
50 /* Wiiremote status  --------------------------------------------- */
51 
52 const uint8 STATUS_WIIMOTE_DISCONNECTED = 0x00;
53 const uint8 STATUS_WIIMOTE_CONNECTED = 0x01;
54 const uint8 STATUS_WIIMOTE_NUNCHUK_CONNECTED = 0x02;
55 const uint8 STATUS_WIIMOTE_CLASSIC_CONNECTED = 0x04;
56 
57 #define STATUS_NUNCHUK_CONNECTED STATUS_WIIMOTE_NUNCHUK_CONNECTED
58 #define STATUS_CLASSIC_CONNECTED STATUS_WIIMOTE_CLASSIC_CONNECTED
59 
60 /* Structs  --------------------------------------------- */
61 
62 struct irpoint {
63   int16 size;
64   uint16 x;
65   uint16 y;
66 };
67 
68 struct accdata {
69   uint8 x;
70   uint8 y;
71   uint8 z;
72   double pitch;
73   double roll;
74 };
75 
76 struct stickdata {
77   uint8 x;
78   uint8 y;
79 };
80 
81 enum GENERAL_BUTTONS {
82   // 1.0 API
83   GENERAL_WIIMOTE_BTN_1 = 0,
84   GENERAL_WIIMOTE_BTN_2,
85   GENERAL_WIIMOTE_BTN_A,
86   GENERAL_WIIMOTE_BTN_B,
87   GENERAL_WIIMOTE_BTN_MINUS,
88   GENERAL_WIIMOTE_BTN_PLUS,
89   GENERAL_WIIMOTE_BTN_HOME,
90   GENERAL_WIIMOTE_BTN_RIGHT,
91   GENERAL_WIIMOTE_BTN_LEFT,
92   GENERAL_WIIMOTE_BTN_DOWN,
93   GENERAL_WIIMOTE_BTN_UP,
94   GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD,
95   GENERAL_WIIMOTE_BTN_SHIFT_FORWARD,
96   GENERAL_WIIMOTE_BTN_SHIFT_RIGHT,
97   GENERAL_WIIMOTE_BTN_SHIFT_LEFT,
98   GENERAL_WIIMOTE_BTN_SHIFT_DOWN,
99   GENERAL_WIIMOTE_BTN_SHIFT_UP,
100   GENERAL_WIIMOTE_BTN_TILT_FRONT,
101   GENERAL_WIIMOTE_BTN_TILT_BACK,
102   GENERAL_WIIMOTE_BTN_TILT_RIGHT,
103   GENERAL_WIIMOTE_BTN_TILT_LEFT,
104   GENERAL_NUNCHUK_BTN_C,
105   GENERAL_NUNCHUK_BTN_Z,
106   GENERAL_NUNCHUK_BTN_STICK_RIGHT,
107   GENERAL_NUNCHUK_BTN_STICK_LEFT,
108   GENERAL_NUNCHUK_BTN_STICK_DOWN,
109   GENERAL_NUNCHUK_BTN_STICK_UP,
110   GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD,
111   GENERAL_NUNCHUK_BTN_SHIFT_FORWARD,
112   GENERAL_NUNCHUK_BTN_SHIFT_RIGHT,
113   GENERAL_NUNCHUK_BTN_SHIFT_LEFT,
114   GENERAL_NUNCHUK_BTN_SHIFT_DOWN,
115   GENERAL_NUNCHUK_BTN_SHIFT_UP,
116   GENERAL_NUNCHUK_BTN_TILT_FRONT,
117   GENERAL_NUNCHUK_BTN_TILT_BACK,
118   GENERAL_NUNCHUK_BTN_TILT_RIGHT,
119   GENERAL_NUNCHUK_BTN_TILT_LEFT,
120   GENERAL_CLASSIC_BTN_X,
121   GENERAL_CLASSIC_BTN_Y,
122   GENERAL_CLASSIC_BTN_A,
123   GENERAL_CLASSIC_BTN_B,
124   GENERAL_CLASSIC_BTN_L,
125   GENERAL_CLASSIC_BTN_R,
126   GENERAL_CLASSIC_BTN_ZL,
127   GENERAL_CLASSIC_BTN_ZR,
128   GENERAL_CLASSIC_BTN_MINUS,
129   GENERAL_CLASSIC_BTN_PLUS,
130   GENERAL_CLASSIC_BTN_HOME,
131   GENERAL_CLASSIC_BTN_RIGHT,
132   GENERAL_CLASSIC_BTN_LEFT,
133   GENERAL_CLASSIC_BTN_DOWN,
134   GENERAL_CLASSIC_BTN_UP,
135   GENERAL_CLASSIC_BTN_LSTICK_RIGHT,
136   GENERAL_CLASSIC_BTN_LSTICK_LEFT,
137   GENERAL_CLASSIC_BTN_LSTICK_DOWN,
138   GENERAL_CLASSIC_BTN_LSTICK_UP,
139   GENERAL_CLASSIC_BTN_RSTICK_RIGHT,
140   GENERAL_CLASSIC_BTN_RSTICK_LEFT,
141   GENERAL_CLASSIC_BTN_RSTICK_DOWN,
142   GENERAL_CLASSIC_BTN_RSTICK_UP,
143   // 1.2 API
144   GENERAL_WIIMOTE_BTN_SHIFT_SHAKE,
145   GENERAL_NUNCHUK_BTN_SHIFT_SHAKE
146 };
147 
148 #define calcbit(x) (static_cast<uint64>(true) << x)
149 
150 const uint64 WIIMOTE_BTN_1 = calcbit(GENERAL_WIIMOTE_BTN_1);
151 const uint64 WIIMOTE_BTN_2 = calcbit(GENERAL_WIIMOTE_BTN_2);
152 const uint64 WIIMOTE_BTN_A = calcbit(GENERAL_WIIMOTE_BTN_A);
153 const uint64 WIIMOTE_BTN_B = calcbit(GENERAL_WIIMOTE_BTN_B);
154 
155 const uint64 WIIMOTE_BTN_MINUS = calcbit(GENERAL_WIIMOTE_BTN_MINUS);
156 const uint64 WIIMOTE_BTN_PLUS = calcbit(GENERAL_WIIMOTE_BTN_PLUS);
157 const uint64 WIIMOTE_BTN_HOME = calcbit(GENERAL_WIIMOTE_BTN_HOME);
158 
159 const uint64 WIIMOTE_BTN_RIGHT = calcbit(GENERAL_WIIMOTE_BTN_RIGHT);
160 const uint64 WIIMOTE_BTN_LEFT = calcbit(GENERAL_WIIMOTE_BTN_LEFT);
161 const uint64 WIIMOTE_BTN_DOWN = calcbit(GENERAL_WIIMOTE_BTN_DOWN);
162 const uint64 WIIMOTE_BTN_UP = calcbit(GENERAL_WIIMOTE_BTN_UP);
163 
164 const uint64 WIIMOTE_BTN_SHIFT_BACKWARD =
165     calcbit(GENERAL_WIIMOTE_BTN_SHIFT_BACKWARD);
166 const uint64 WIIMOTE_BTN_SHIFT_FORWARD =
167     calcbit(GENERAL_WIIMOTE_BTN_SHIFT_FORWARD);
168 const uint64 WIIMOTE_BTN_SHIFT_RIGHT = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_RIGHT);
169 const uint64 WIIMOTE_BTN_SHIFT_LEFT = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_LEFT);
170 const uint64 WIIMOTE_BTN_SHIFT_DOWN = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_DOWN);
171 const uint64 WIIMOTE_BTN_SHIFT_UP = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_UP);
172 
173 const uint64 WIIMOTE_BTN_TILT_FRONT = calcbit(GENERAL_WIIMOTE_BTN_TILT_FRONT);
174 const uint64 WIIMOTE_BTN_TILT_BACK = calcbit(GENERAL_WIIMOTE_BTN_TILT_BACK);
175 const uint64 WIIMOTE_BTN_TILT_RIGHT = calcbit(GENERAL_WIIMOTE_BTN_TILT_RIGHT);
176 const uint64 WIIMOTE_BTN_TILT_LEFT = calcbit(GENERAL_WIIMOTE_BTN_TILT_LEFT);
177 
178 const uint64 NUNCHUK_BTN_C = calcbit(GENERAL_NUNCHUK_BTN_C);
179 const uint64 NUNCHUK_BTN_Z = calcbit(GENERAL_NUNCHUK_BTN_Z);
180 
181 const uint64 NUNCHUK_BTN_STICK_RIGHT = calcbit(GENERAL_NUNCHUK_BTN_STICK_RIGHT);
182 const uint64 NUNCHUK_BTN_STICK_LEFT = calcbit(GENERAL_NUNCHUK_BTN_STICK_LEFT);
183 const uint64 NUNCHUK_BTN_STICK_DOWN = calcbit(GENERAL_NUNCHUK_BTN_STICK_DOWN);
184 const uint64 NUNCHUK_BTN_STICK_UP = calcbit(GENERAL_NUNCHUK_BTN_STICK_UP);
185 
186 const uint64 NUNCHUK_BTN_SHIFT_BACKWARD =
187     calcbit(GENERAL_NUNCHUK_BTN_SHIFT_BACKWARD);
188 const uint64 NUNCHUK_BTN_SHIFT_FORWARD =
189     calcbit(GENERAL_NUNCHUK_BTN_SHIFT_FORWARD);
190 const uint64 NUNCHUK_BTN_SHIFT_RIGHT = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_RIGHT);
191 const uint64 NUNCHUK_BTN_SHIFT_LEFT = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_LEFT);
192 const uint64 NUNCHUK_BTN_SHIFT_DOWN = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_DOWN);
193 const uint64 NUNCHUK_BTN_SHIFT_UP = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_UP);
194 
195 const uint64 NUNCHUK_BTN_TILT_FRONT = calcbit(GENERAL_NUNCHUK_BTN_TILT_FRONT);
196 const uint64 NUNCHUK_BTN_TILT_BACK = calcbit(GENERAL_NUNCHUK_BTN_TILT_BACK);
197 const uint64 NUNCHUK_BTN_TILT_RIGHT = calcbit(GENERAL_NUNCHUK_BTN_TILT_RIGHT);
198 const uint64 NUNCHUK_BTN_TILT_LEFT = calcbit(GENERAL_NUNCHUK_BTN_TILT_LEFT);
199 
200 const uint64 CLASSIC_BTN_X = calcbit(GENERAL_CLASSIC_BTN_X);
201 const uint64 CLASSIC_BTN_Y = calcbit(GENERAL_CLASSIC_BTN_Y);
202 const uint64 CLASSIC_BTN_A = calcbit(GENERAL_CLASSIC_BTN_A);
203 const uint64 CLASSIC_BTN_B = calcbit(GENERAL_CLASSIC_BTN_B);
204 const uint64 CLASSIC_BTN_L = calcbit(GENERAL_CLASSIC_BTN_L);
205 const uint64 CLASSIC_BTN_R = calcbit(GENERAL_CLASSIC_BTN_R);
206 const uint64 CLASSIC_BTN_ZL = calcbit(GENERAL_CLASSIC_BTN_ZL);
207 const uint64 CLASSIC_BTN_ZR = calcbit(GENERAL_CLASSIC_BTN_ZR);
208 const uint64 CLASSIC_BTN_MINUS = calcbit(GENERAL_CLASSIC_BTN_MINUS);
209 const uint64 CLASSIC_BTN_PLUS = calcbit(GENERAL_CLASSIC_BTN_PLUS);
210 const uint64 CLASSIC_BTN_HOME = calcbit(GENERAL_CLASSIC_BTN_HOME);
211 const uint64 CLASSIC_BTN_RIGHT = calcbit(GENERAL_CLASSIC_BTN_RIGHT);
212 const uint64 CLASSIC_BTN_LEFT = calcbit(GENERAL_CLASSIC_BTN_LEFT);
213 const uint64 CLASSIC_BTN_DOWN = calcbit(GENERAL_CLASSIC_BTN_DOWN);
214 const uint64 CLASSIC_BTN_UP = calcbit(GENERAL_CLASSIC_BTN_UP);
215 
216 const uint64 CLASSIC_BTN_LSTICK_RIGHT =
217     calcbit(GENERAL_CLASSIC_BTN_LSTICK_RIGHT);
218 const uint64 CLASSIC_BTN_LSTICK_LEFT = calcbit(GENERAL_CLASSIC_BTN_LSTICK_LEFT);
219 const uint64 CLASSIC_BTN_LSTICK_DOWN = calcbit(GENERAL_CLASSIC_BTN_LSTICK_DOWN);
220 const uint64 CLASSIC_BTN_LSTICK_UP = calcbit(GENERAL_CLASSIC_BTN_LSTICK_UP);
221 
222 const uint64 CLASSIC_BTN_RSTICK_RIGHT =
223     calcbit(GENERAL_CLASSIC_BTN_RSTICK_RIGHT);
224 const uint64 CLASSIC_BTN_RSTICK_LEFT = calcbit(GENERAL_CLASSIC_BTN_RSTICK_LEFT);
225 
226 const uint64 CLASSIC_BTN_RSTICK_DOWN = calcbit(GENERAL_CLASSIC_BTN_RSTICK_DOWN);
227 const uint64 CLASSIC_BTN_RSTICK_UP = calcbit(GENERAL_CLASSIC_BTN_RSTICK_UP);
228 
229 const uint64 WIIMOTE_BTN_SHIFT_SHAKE = calcbit(GENERAL_WIIMOTE_BTN_SHIFT_SHAKE);
230 const uint64 NUNCHUK_BTN_SHIFT_SHAKE = calcbit(GENERAL_NUNCHUK_BTN_SHIFT_SHAKE);
231 
232 const uint64 WIIMOTE_BUTTON_MASK =
233     WIIMOTE_BTN_1 | WIIMOTE_BTN_2 | WIIMOTE_BTN_A | WIIMOTE_BTN_B |
234     WIIMOTE_BTN_MINUS | WIIMOTE_BTN_PLUS | WIIMOTE_BTN_HOME |
235     WIIMOTE_BTN_RIGHT | WIIMOTE_BTN_LEFT | WIIMOTE_BTN_DOWN | WIIMOTE_BTN_UP;
236 
237 const uint64 WIIMOTE_SHIFT_MASK =
238     WIIMOTE_BTN_SHIFT_BACKWARD | WIIMOTE_BTN_SHIFT_FORWARD |
239     WIIMOTE_BTN_SHIFT_RIGHT | WIIMOTE_BTN_SHIFT_LEFT | WIIMOTE_BTN_SHIFT_DOWN |
240     WIIMOTE_BTN_SHIFT_UP | WIIMOTE_BTN_SHIFT_SHAKE;
241 
242 const uint64 WIIMOTE_TILT_MASK = WIIMOTE_BTN_TILT_FRONT |
243                                  WIIMOTE_BTN_TILT_BACK |
244                                  WIIMOTE_BTN_TILT_RIGHT | WIIMOTE_BTN_TILT_LEFT;
245 
246 const uint64 NUNCHUK_BUTTON_MASK = NUNCHUK_BTN_C | NUNCHUK_BTN_Z;
247 
248 const uint64 NUNCHUK_STICK_MASK = NUNCHUK_BTN_STICK_RIGHT |
249                                   NUNCHUK_BTN_STICK_LEFT |
250                                   NUNCHUK_BTN_STICK_DOWN | NUNCHUK_BTN_STICK_UP;
251 
252 const uint64 NUNCHUK_SHIFT_MASK =
253     NUNCHUK_BTN_SHIFT_BACKWARD | NUNCHUK_BTN_SHIFT_FORWARD |
254     NUNCHUK_BTN_SHIFT_RIGHT | NUNCHUK_BTN_SHIFT_LEFT | NUNCHUK_BTN_SHIFT_DOWN |
255     NUNCHUK_BTN_SHIFT_UP | NUNCHUK_BTN_SHIFT_SHAKE;
256 
257 const uint64 NUNCHUK_TILT_MASK = NUNCHUK_BTN_TILT_FRONT |
258                                  NUNCHUK_BTN_TILT_BACK |
259                                  NUNCHUK_BTN_TILT_RIGHT | NUNCHUK_BTN_TILT_LEFT;
260 
261 const uint64 CLASSIC_BUTTON_MASK =
262     CLASSIC_BTN_X | CLASSIC_BTN_Y | CLASSIC_BTN_A | CLASSIC_BTN_B |
263     CLASSIC_BTN_L | CLASSIC_BTN_R | CLASSIC_BTN_ZL | CLASSIC_BTN_ZR |
264     CLASSIC_BTN_MINUS | CLASSIC_BTN_PLUS | CLASSIC_BTN_HOME |
265     CLASSIC_BTN_RIGHT | CLASSIC_BTN_LEFT | CLASSIC_BTN_DOWN | CLASSIC_BTN_UP;
266 
267 const uint64 CLASSIC_LSTICK_MASK =
268     CLASSIC_BTN_LSTICK_RIGHT | CLASSIC_BTN_LSTICK_LEFT |
269     CLASSIC_BTN_LSTICK_DOWN | CLASSIC_BTN_LSTICK_UP;
270 
271 const uint64 CLASSIC_RSTICK_MASK =
272     CLASSIC_BTN_RSTICK_RIGHT | CLASSIC_BTN_RSTICK_LEFT |
273     CLASSIC_BTN_RSTICK_DOWN | CLASSIC_BTN_RSTICK_UP;
274 
275 const uint64 WIIMOTE_BUTTON_NOTMASK = ~WIIMOTE_BUTTON_MASK;
276 const uint64 WIIMOTE_SHIFT_NOTMASK = ~WIIMOTE_SHIFT_MASK;
277 const uint64 WIIMOTE_TILT_NOTMASK = ~WIIMOTE_TILT_MASK;
278 const uint64 NUNCHUK_BUTTON_NOTMASK = ~NUNCHUK_BUTTON_MASK;
279 const uint64 NUNCHUK_STICK_NOTMASK = ~NUNCHUK_STICK_MASK;
280 const uint64 NUNCHUK_SHIFT_NOTMASK = ~NUNCHUK_SHIFT_MASK;
281 const uint64 NUNCHUK_TILT_NOTMASK = ~NUNCHUK_TILT_MASK;
282 const uint64 CLASSIC_BUTTON_NOTMASK = ~CLASSIC_BUTTON_MASK;
283 const uint64 CLASSIC_LSTICK_NOTMASK = ~CLASSIC_LSTICK_MASK;
284 const uint64 CLASSIC_RSTICK_NOTMASK = ~CLASSIC_RSTICK_MASK;
285 
286 #endif  // WIIMOTEDEV_CONSTS_H
287