1 /*---------------------------------------------------------------------------* 2 Project: Cafe 3 File: vpadTypes.h 4 5 Copyright (C) 2011 Nintendo. 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 *---------------------------------------------------------------------------*/ 14 15 #ifndef __VPAD_TYPES_H__ 16 #define __VPAD_TYPES_H__ 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 #define VPAD_MAX_CONTROLLERS VPADBASE_MAX_CONTROLLERS 23 24 #define VPAD_BUTTON_LEFT VPADBASE_BUTTON_LEFT 25 #define VPAD_BUTTON_RIGHT VPADBASE_BUTTON_RIGHT 26 #define VPAD_BUTTON_DOWN VPADBASE_BUTTON_DOWN 27 #define VPAD_BUTTON_UP VPADBASE_BUTTON_UP 28 #define VPAD_BUTTON_A VPADBASE_BUTTON_A 29 #define VPAD_BUTTON_B VPADBASE_BUTTON_B 30 #define VPAD_BUTTON_X VPADBASE_BUTTON_X 31 #define VPAD_BUTTON_Y VPADBASE_BUTTON_Y 32 #define VPAD_BUTTON_HOME VPADBASE_BUTTON_HOME 33 #define VPAD_TRIGGER_ZR VPADBASE_TRIGGER_ZR 34 #define VPAD_TRIGGER_ZL VPADBASE_TRIGGER_ZL 35 #define VPAD_TRIGGER_R VPADBASE_TRIGGER_R 36 #define VPAD_TRIGGER_L VPADBASE_TRIGGER_L 37 38 #define VPAD_BUTTON_ZR VPADBASE_TRIGGER_ZR 39 #define VPAD_BUTTON_ZL VPADBASE_TRIGGER_ZL 40 #define VPAD_BUTTON_R VPADBASE_TRIGGER_R 41 #define VPAD_BUTTON_L VPADBASE_TRIGGER_L 42 43 #define VPAD_BUTTON_STICK_R VPADBASE_BUTTON_STICK_R 44 #define VPAD_BUTTON_STICK_L VPADBASE_BUTTON_STICK_L 45 46 #define VPAD_BUTTON_STICK_R_EMULATION_LEFT (0x04000000) 47 #define VPAD_BUTTON_STICK_R_EMULATION_RIGHT (0x02000000) 48 #define VPAD_BUTTON_STICK_R_EMULATION_UP (0x01000000) 49 #define VPAD_BUTTON_STICK_R_EMULATION_DOWN (0x00800000) 50 51 #define VPAD_BUTTON_STICK_L_EMULATION_LEFT (0x40000000) 52 #define VPAD_BUTTON_STICK_L_EMULATION_RIGHT (0x20000000) 53 #define VPAD_BUTTON_STICK_L_EMULATION_UP (0x10000000) 54 #define VPAD_BUTTON_STICK_L_EMULATION_DOWN (0x08000000) 55 56 // Typo definition for old sdk 57 #define VPAD_BUTTON_STICKL_R_EMULATION_LEFT (0x04000000) 58 #define VPAD_BUTTON_STICKL_R_EMULATION_RIGHT (0x02000000) 59 #define VPAD_BUTTON_STICKL_R_EMULATION_UP (0x01000000) 60 #define VPAD_BUTTON_STICKL_R_EMULATION_DOWN (0x00800000) 61 62 #define VPAD_BUTTON_STICKL_L_EMULATION_LEFT (0x40000000) 63 #define VPAD_BUTTON_STICKL_L_EMULATION_RIGHT (0x20000000) 64 #define VPAD_BUTTON_STICKL_L_EMULATION_UP (0x10000000) 65 #define VPAD_BUTTON_STICKL_L_EMULATION_DOWN (0x08000000) 66 67 68 #define VPAD_BUTTON_PLUS VPADBASE_BUTTON_PLUS 69 #define VPAD_BUTTON_MINUS VPADBASE_BUTTON_MINUS 70 71 72 #define VPAD_BUTTON_MASK 0x0007ffff 73 #define VPAD_PLUS_BUTTON_MASK 0x7f87ffff 74 #define VPAD_BUTTON_RPT 0x80000000 75 76 #define VPAD_RING_BUFS 16 77 #define VPAD_MAX_READ_BUFS VPAD_RING_BUFS 78 79 #define VPAD_READ_ERR_NONE 0 80 81 #define VPAD_READ_ERR_NO_DATA -1 82 #define VPAD_READ_ERR_NO_CONTROLLER -2 83 #define VPAD_READ_ERR_SETUP -3 84 #define VPAD_READ_ERR_LOCKED -4 85 #define VPAD_READ_ERR_INIT -5 86 87 88 #define VPAD_BUTTON_PROC_MODE_LOOSE 0 89 #define VPAD_BUTTON_PROC_MODE_TIGHT 1 90 91 92 //====== Touch Panel ======/ 93 #define VPAD_TP_TOUCH_OFF 0 94 #define VPAD_TP_TOUCH_ON 1 95 96 #define VPAD_TP_VALIDITY_VALID 0 97 #define VPAD_TP_VALIDITY_INVALID_X 1 98 #define VPAD_TP_VALIDITY_INVALID_Y 2 99 #define VPAD_TP_VALIDITY_INVALID_XY (VPAD_TP_VALIDITY_INVALID_X | \ 100 VPAD_TP_VALIDITY_INVALID_Y) 101 102 103 //====== Motor =====// 104 #define VPAD_MOTOR_PATTERN_SIZE_MAX 15 105 #define VPAD_MOTOR_PATTERN_LENGTH_MAX 120 106 107 108 // Battery level 109 #define VPAD_BATTERY_LEVEL_CHARGE VPADBASE_BATTERY_LEVEL_CHARGE 110 #define VPAD_BATTERY_LEVEL_SHUTDOWN VPADBASE_BATTERY_LEVEL_SHUTDOWN 111 #define VPAD_BATTERY_LEVEL_CRITICAL VPADBASE_BATTERY_LEVEL_CRITICAL 112 #define VPAD_BATTERY_LEVEL_LOW VPADBASE_BATTERY_LEVEL_LOW 113 #define VPAD_BATTERY_LEVEL_MEDIUM VPADBASE_BATTERY_LEVEL_MEDIUM 114 #define VPAD_BATTERY_LEVEL_HIGH VPADBASE_BATTERY_LEVEL_HIGH 115 #define VPAD_BATTERY_LEVEL_MAX VPADBASE_BATTERY_LEVEL_MAX 116 117 118 // External mic Status 119 #define VPAD_EXTERNAL_MIC_ON 0x08 120 121 122 // Touch panel Resolution setting 123 typedef enum VPADTPResolution 124 { 125 VPAD_TP_1920x1080, 126 VPAD_TP_1280x720, 127 VPAD_TP_854x480 128 } VPADTPResolution ; 129 130 typedef enum VPADGyroZeroDriftMode { 131 VPAD_GYRO_ZERODRIFT_LOOSE = 0, 132 VPAD_GYRO_ZERODRIFT_STANDARD, 133 VPAD_GYRO_ZERODRIFT_TIGHT, 134 VPAD_GYRO_ZERODRIFT_NONE 135 } VPADGyroZeroDriftMode ; 136 137 138 // LCD mode 139 typedef enum VPADLcdMode { 140 VPAD_LCD_MODE_MUTE = 0, 141 VPAD_LCD_MODE_GAME_CONTROLLER = 1, 142 VPAD_LCD_MODE_ON = 0xFF 143 } VPADLcdMode; 144 145 146 typedef enum VPADPlayMode { 147 VPAD_PLAY_MODE_LOOSE = 0, 148 VPAD_PLAY_MODE_TIGHT 149 } VPADPlayMode ; 150 151 typedef struct { 152 u16 x ; // x coordinate value 153 u16 y ; // y coordinate value 154 u16 touch ; // Touch Check Flag 155 u16 validity ; // Validity of coordinate value 156 } VPADTPData; 157 158 // For Touch panel Calibration 159 typedef struct { 160 s16 offsetX; 161 s16 offsetY; 162 f32 scaleX; 163 f32 scaleY; 164 } VPADTPCalibrationParam; 165 166 167 typedef struct VPADDir{ 168 Vec X ; 169 Vec Y ; 170 Vec Z ; 171 } VPADDir ; 172 173 174 typedef struct VPADStatus { 175 u32 hold ; // Flag for button hold 176 u32 trig ; // Flag for button trigger 177 u32 release ; // Flag for button release 178 Vec2 lStick ; // Left stick 179 Vec2 rStick ; // Right stick 180 Vec acc ; // Accelerometer value 181 f32 accValue ; // Accelerometer magnitude 182 f32 accSpeed ; // Accelerometer variation 183 Vec2 accVertical ; // Vertical direction of DRC 184 Vec gyro ; // Gyro sensor value ( 1.0 = 360 dps ) 185 Vec angle ; // Rotation angle value ( 1.0 = 360 degree ) 186 187 s8 vpadErr ; // Error status 188 189 VPADTPData tpData ; // Structure for touch panel data 190 VPADTPData tpFilteredData1 ; // Filtered touch panel data 1 191 VPADTPData tpFilteredData2 ; // Filtered touch panel data 2 192 193 VPADDir dir ; // Structure for 3D pose for DRC 194 195 BOOL headphoneStatus ; // Headphone status 196 // (TRUE : headphones are inserted ) 197 198 Vec magnet ; // magnetometer value 199 200 u8 slideVolume ; // Slide Volume value (0 - 255) 201 202 u8 batteryLevel ; // Battery level ( 0 - 6 ) 203 204 u8 micStatus ; // Mic status 205 206 u8 slideVolumeCalibrated ; 207 208 u8 __paddings__[7]; 209 } VPADStatus ; 210 211 // Callback 212 typedef void ( *VPADSamplingCallback )( s32 chan ); 213 214 #ifdef __cplusplus 215 } 216 #endif 217 218 #endif // __VPAD_TYPES_H__ 219