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