1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     hid_DeviceStatus.h
4 
5   Copyright (C)2009-2012 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 /* Please see man pages for details
17 
18 
19 */
20 
21 #ifndef NN_HID_CTR_HID_DEVICESTATUS_H_
22 #define NN_HID_CTR_HID_DEVICESTATUS_H_
23 
24 #include <nn/types.h>
25 #include <nn/math/math_Types.h>
26 #include <nn/config.h>
27 
28 namespace nn {
29 namespace hid {
30 namespace CTR {
31 
32 /* Please see man pages for details */
33 const bit32 BUTTON_A                = 0x00000001;
34 /* Please see man pages for details */
35 const bit32 BUTTON_B                = 0x00000002;
36 const bit32 PSEUDO_BUTTON_SELECT    = 0x00000004;
37 /* Please see man pages for details
38 
39 
40 
41 
42 */
43 const bit32 BUTTON_SELECT_FOR_DEBUGGING = 0x00000004;
44 /* Please see man pages for details */
45 const bit32 BUTTON_START            = 0x00000008;
46 /* Please see man pages for details */
47 const bit32 BUTTON_RIGHT            = 0x00000010;
48 /* Please see man pages for details */
49 const bit32 BUTTON_LEFT             = 0x00000020;
50 /* Please see man pages for details */
51 const bit32 BUTTON_UP               = 0x00000040;
52 /* Please see man pages for details */
53 const bit32 BUTTON_DOWN             = 0x00000080;
54 /* Please see man pages for details */
55 const bit32 BUTTON_R                = 0x00000100;
56 /* Please see man pages for details */
57 const bit32 BUTTON_L                = 0x00000200;
58 /* Please see man pages for details */
59 const bit32 BUTTON_X                = 0x00000400;
60 /* Please see man pages for details */
61 const bit32 BUTTON_Y                = 0x00000800;
62 /* Please see man pages for details
63 
64 
65 
66 */
67 const bit32 BUTTON_DEBUG            = 0x00001000;
68 const bit32 BUTTON_RESERVED         = 0x00002000;
69 
70 
71 /* Please see man pages for details */
72 const bit32 BUTTON_EMULATION_RIGHT  = 0x10000000;
73 /* Please see man pages for details */
74 const bit32 BUTTON_EMULATION_LEFT   = 0x20000000;
75 /* Please see man pages for details */
76 const bit32 BUTTON_EMULATION_UP     = 0x40000000;
77 /* Please see man pages for details */
78 const bit32 BUTTON_EMULATION_DOWN   = 0x80000000;
79 
80 /* Please see man pages for details */
81 const bit32 BUTTON_MASK             = BUTTON_A | BUTTON_B | BUTTON_START |
82                                       BUTTON_R | BUTTON_L | BUTTON_X | BUTTON_Y | BUTTON_DEBUG;
83 /* Please see man pages for details */
84 const bit32 PLUS_BUTTON_MASK        = BUTTON_RIGHT | BUTTON_LEFT | BUTTON_UP | BUTTON_DOWN;
85 /* Please see man pages for details */
86 const bit32 PLUS_BUTTON_EMULATION_MASK  = BUTTON_EMULATION_RIGHT | BUTTON_EMULATION_LEFT | BUTTON_EMULATION_UP | BUTTON_EMULATION_DOWN;
87 /* Please see man pages for details */
88 const bit32 ALL_MASK                = BUTTON_MASK | PLUS_BUTTON_MASK | PLUS_BUTTON_EMULATION_MASK;
89 
90 /*
91  * Related to Circle Pad Pro
92  */
93 /* Please see man pages for details */
94 const bit32 BUTTON_ZL = 0x00004000;
95 /* Please see man pages for details */
96 const bit32 BUTTON_ZR = 0x00008000;
97 
98 /* Please see man pages for details */
99 const bit32 BUTTON_EMULATION_R_RIGHT  = 0x01000000;
100 /* Please see man pages for details */
101 const bit32 BUTTON_EMULATION_R_LEFT   = 0x02000000;
102 /* Please see man pages for details */
103 const bit32 BUTTON_EMULATION_R_UP     = 0x04000000;
104 /* Please see man pages for details */
105 const bit32 BUTTON_EMULATION_R_DOWN   = 0x08000000;
106 
107 /* Please see man pages for details */
108 const bit32 PLUS_BUTTON_EMULATION_R_MASK = BUTTON_EMULATION_R_RIGHT | BUTTON_EMULATION_R_LEFT | BUTTON_EMULATION_R_UP | BUTTON_EMULATION_R_DOWN;
109 
110 
111 
112 /* Please see man pages for details
113 
114 */
115 typedef struct
116 {
117     /* Please see man pages for details */
118     s16         x;
119     /* Please see man pages for details */
120     s16         y;
121 } AnalogStickStatus;
122 
123 /* Please see man pages for details
124 
125 */
126 typedef struct
127 {
128     /* Please see man pages for details */
129     bit32             hold;
130     /* Please see man pages for details */
131     bit32             trigger;
132     /* Please see man pages for details */
133     bit32             release;
134     /* Please see man pages for details */
135     AnalogStickStatus stick;
136 } PadStatus;
137 
138 /* Please see man pages for details
139 
140 
141 
142 
143 */
144 typedef struct
145 {
146     /* Please see man pages for details */
147     u16         x;
148     /* Please see man pages for details */
149     u16         y;
150     /* Please see man pages for details */
151     u8          touch;
152     NN_PADDING3;
153 } TouchPanelStatus;
154 
155 /* Please see man pages for details
156 
157 */
158 typedef struct
159 {
160     /* Please see man pages for details */
161     s16         x;
162     /* Please see man pages for details */
163     s16         y;
164     /* Please see man pages for details */
165     s16         z;
166 }AccelerometerStatus;
167 
168 /* Please see man pages for details
169 
170 */
171 typedef struct
172 {
173     /* Please see man pages for details */
174     f32         x;
175     /* Please see man pages for details */
176     f32         y;
177     /* Please see man pages for details */
178     f32         z;
179 }AccelerationFloat;
180 
181 /* Please see man pages for details
182 
183 */
184 struct Direction{
185 public :
186     /* Please see man pages for details */
187     nn::math::VEC3 x;/**/
188 
189     /* Please see man pages for details */
190     nn::math::VEC3 y;
191 
192     /* Please see man pages for details */
193     nn::math::VEC3 z;
194 
195 public :
196     /* Please see man pages for details */
DirectionDirection197     Direction()
198     {};
199 
200     /* Please see man pages for details */
DirectionDirection201     explicit Direction(const nn::math::VEC3& vecx,const nn::math::VEC3& vecy,const nn::math::VEC3& vecz)
202     :x(vecx),y(vecy),z(vecz){}
203 
204     /* Please see man pages for details */
DirectionDirection205     Direction(const nn::math::MTX33 &mtx33)
206     :x(mtx33.v[0]),y(mtx33.v[1]),z(mtx33.v[2]){}
207 
208     /* Please see man pages for details */
ToMTX33Direction209     nn::math::MTX33 ToMTX33()
210     {
211         return nn::math::MTX33(
212             x.x,x.y,x.z,
213             y.x,y.y,y.z,
214             z.x,z.y,z.z);
215     }
216 };
217 
218 /* Please see man pages for details
219 
220 
221 
222 
223 
224 
225 
226 */
227 typedef struct {
228     /* Please see man pages for details */
229     nn::math::VEC3  speed;
230     /* Please see man pages for details */
231     nn::math::VEC3  angle;
232     /* Please see man pages for details */
233     Direction       direction;
234 } GyroscopeStatus;
235 
236 /* Please see man pages for details */
237 const bit16 DEBUG_PAD_BUTTON_UP           = 0x00000001;
238 /* Please see man pages for details */
239 const bit16 DEBUG_PAD_BUTTON_LEFT         = 0x00000002;
240 /* Please see man pages for details */
241 const bit16 DEBUG_PAD_TRIGGER_ZR          = 0x00000004;
242 /* Please see man pages for details */
243 const bit16 DEBUG_PAD_BUTTON_X            = 0x00000008;
244 /* Please see man pages for details */
245 const bit16 DEBUG_PAD_BUTTON_A            = 0x00000010;
246 /* Please see man pages for details */
247 const bit16 DEBUG_PAD_BUTTON_Y            = 0x00000020;
248 /* Please see man pages for details */
249 const bit16 DEBUG_PAD_BUTTON_B            = 0x00000040;
250 /* Please see man pages for details */
251 const bit16 DEBUG_PAD_TRIGGER_ZL          = 0x00000080;
252 const bit16 DEBUG_PAD_RESERVED            = 0x00000100;
253 /* Please see man pages for details */
254 const bit16 DEBUG_PAD_TRIGGER_R           = 0x00000200;
255 /* Please see man pages for details */
256 const bit16 DEBUG_PAD_BUTTON_PLUS         = 0x00000400;
257 /* Please see man pages for details */
258 const bit16 DEBUG_PAD_BUTTON_HOME         = 0x00000800;
259 /* Please see man pages for details */
260 const bit16 DEBUG_PAD_BUTTON_MINUS        = 0x00001000;
261 /* Please see man pages for details */
262 const bit16 DEBUG_PAD_TRIGGER_L           = 0x00002000;
263 /* Please see man pages for details */
264 const bit16 DEBUG_PAD_BUTTON_DOWN         = 0x00004000;
265 /* Please see man pages for details */
266 const bit16 DEBUG_PAD_BUTTON_RIGHT        = 0x00008000;
267 
268 
269 /* Please see man pages for details
270 
271 */
272 typedef struct
273 {
274     /* Please see man pages for details */
275     bit16             hold;
276     /* Please see man pages for details */
277     bit16             trigger;
278     /* Please see man pages for details */
279     bit16             release;
280     NN_PADDING2;
281     /* Please see man pages for details */
282     f32               leftStickX;
283     /* Please see man pages for details */
284     f32               leftStickY;
285     /* Please see man pages for details */
286     f32               rightStickX;
287     /* Please see man pages for details */
288     f32               rightStickY;
289 } DebugPadStatus;
290 
291 
292 
293 } // namespace CTR
294 } // namespace hid
295 } // namespace nn
296 
297 #endif  //  NN_HID_CTR_HID_DEVICESTATUS_H_
298