1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     hid_DeviceStatus.h
4 
5   Copyright (C)2009 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: 36752 $
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 /* Please see man pages for details */
70 const bit32 BUTTON_EMULATION_RIGHT  = 0x10000000;
71 /* Please see man pages for details */
72 const bit32 BUTTON_EMULATION_LEFT   = 0x20000000;
73 /* Please see man pages for details */
74 const bit32 BUTTON_EMULATION_UP     = 0x40000000;
75 /* Please see man pages for details */
76 const bit32 BUTTON_EMULATION_DOWN   = 0x80000000;
77 
78 /* Please see man pages for details */
79 const bit32 BUTTON_MASK             = BUTTON_A | BUTTON_B | BUTTON_START |
80                                       BUTTON_R | BUTTON_L | BUTTON_X | BUTTON_Y | BUTTON_DEBUG;
81 /* Please see man pages for details */
82 const bit32 PLUS_BUTTON_MASK        = BUTTON_RIGHT | BUTTON_LEFT | BUTTON_UP | BUTTON_DOWN;
83 /* Please see man pages for details */
84 const bit32 PLUS_BUTTON_EMULATION_MASK  = BUTTON_EMULATION_RIGHT | BUTTON_EMULATION_LEFT | BUTTON_EMULATION_UP | BUTTON_EMULATION_DOWN;
85 /* Please see man pages for details */
86 const bit32 ALL_MASK                = BUTTON_MASK | PLUS_BUTTON_MASK | PLUS_BUTTON_EMULATION_MASK;
87 
88 /* Please see man pages for details
89 
90 */
91 typedef struct
92 {
93     /* Please see man pages for details */
94     s16         x;
95     /* Please see man pages for details */
96     s16         y;
97 } AnalogStickStatus;
98 
99 /* Please see man pages for details
100 
101 */
102 typedef struct
103 {
104     /* Please see man pages for details */
105     bit32             hold;
106     /* Please see man pages for details */
107     bit32             trigger;
108     /* Please see man pages for details */
109     bit32             release;
110     /* Please see man pages for details */
111     AnalogStickStatus stick;
112 } PadStatus;
113 
114 /* Please see man pages for details
115 
116 
117 
118 
119 */
120 typedef struct
121 {
122     /* Please see man pages for details */
123     u16         x;
124     /* Please see man pages for details */
125     u16         y;
126     /* Please see man pages for details */
127     u8          touch;
128     NN_PADDING3;
129 } TouchPanelStatus;
130 
131 /* Please see man pages for details
132 
133 */
134 typedef struct
135 {
136     /* Please see man pages for details */
137     s16         x;
138     /* Please see man pages for details */
139     s16         y;
140     /* Please see man pages for details */
141     s16         z;
142 }AccelerometerStatus;
143 
144 /* Please see man pages for details
145 
146 */
147 typedef struct
148 {
149     /* Please see man pages for details */
150     f32         x;
151     /* Please see man pages for details */
152     f32         y;
153     /* Please see man pages for details */
154     f32         z;
155 }AccelerationFloat;
156 
157 /* Please see man pages for details
158 
159 */
160 struct Direction{
161 public :
162     /* Please see man pages for details */
163     nn::math::VEC3 x;/**/
164 
165     /* Please see man pages for details */
166     nn::math::VEC3 y;
167 
168     /* Please see man pages for details */
169     nn::math::VEC3 z;
170 
171 public :
172     /* Please see man pages for details */
DirectionDirection173     Direction()
174     {};
175 
176     /* Please see man pages for details */
DirectionDirection177     explicit Direction(const nn::math::VEC3& vecx,const nn::math::VEC3& vecy,const nn::math::VEC3& vecz)
178     :x(vecx),y(vecy),z(vecz){}
179 
180     /* Please see man pages for details */
DirectionDirection181     Direction(const nn::math::MTX33 &mtx33)
182     :x(mtx33.v[0]),y(mtx33.v[1]),z(mtx33.v[2]){}
183 
184     /* Please see man pages for details */
ToMTX33Direction185     nn::math::MTX33 ToMTX33()
186     {
187         return nn::math::MTX33(
188             x.x,x.y,x.z,
189             y.x,y.y,y.z,
190             z.x,z.y,z.z);
191     }
192 };
193 
194 /* Please see man pages for details
195 
196 
197 
198 
199 
200 
201 
202 */
203 typedef struct {
204     /* Please see man pages for details */
205     nn::math::VEC3  speed;
206     /* Please see man pages for details */
207     nn::math::VEC3  angle;
208     /* Please see man pages for details */
209     Direction       direction;
210 } GyroscopeStatus;
211 
212 /* Please see man pages for details */
213 const bit16 DEBUG_PAD_BUTTON_UP           = 0x00000001;
214 /* Please see man pages for details */
215 const bit16 DEBUG_PAD_BUTTON_LEFT         = 0x00000002;
216 /* Please see man pages for details */
217 const bit16 DEBUG_PAD_TRIGGER_ZR          = 0x00000004;
218 /* Please see man pages for details */
219 const bit16 DEBUG_PAD_BUTTON_X            = 0x00000008;
220 /* Please see man pages for details */
221 const bit16 DEBUG_PAD_BUTTON_A            = 0x00000010;
222 /* Please see man pages for details */
223 const bit16 DEBUG_PAD_BUTTON_Y            = 0x00000020;
224 /* Please see man pages for details */
225 const bit16 DEBUG_PAD_BUTTON_B            = 0x00000040;
226 /* Please see man pages for details */
227 const bit16 DEBUG_PAD_TRIGGER_ZL          = 0x00000080;
228 const bit16 DEBUG_PAD_RESERVED            = 0x00000100;
229 /* Please see man pages for details */
230 const bit16 DEBUG_PAD_TRIGGER_R           = 0x00000200;
231 /* Please see man pages for details */
232 const bit16 DEBUG_PAD_BUTTON_PLUS         = 0x00000400;
233 /* Please see man pages for details */
234 const bit16 DEBUG_PAD_BUTTON_HOME         = 0x00000800;
235 /* Please see man pages for details */
236 const bit16 DEBUG_PAD_BUTTON_MINUS        = 0x00001000;
237 /* Please see man pages for details */
238 const bit16 DEBUG_PAD_TRIGGER_L           = 0x00002000;
239 /* Please see man pages for details */
240 const bit16 DEBUG_PAD_BUTTON_DOWN         = 0x00004000;
241 /* Please see man pages for details */
242 const bit16 DEBUG_PAD_BUTTON_RIGHT        = 0x00008000;
243 
244 
245 /* Please see man pages for details
246 
247 */
248 typedef struct
249 {
250     /* Please see man pages for details */
251     bit16             hold;
252     /* Please see man pages for details */
253     bit16             trigger;
254     /* Please see man pages for details */
255     bit16             release;
256     NN_PADDING2;
257     /* Please see man pages for details */
258     f32               leftStickX;
259     /* Please see man pages for details */
260     f32               leftStickY;
261     /* Please see man pages for details */
262     f32               rightStickX;
263     /* Please see man pages for details */
264     f32               rightStickY;
265 } DebugPadStatus;
266 
267 
268 
269 } // namespace CTR
270 } // namespace hid
271 } // namespace nn
272 
273 #endif  //  NN_HID_CTR_HID_DEVICESTATUS_H_
274