psl1ght
A free SDK for Sony's PS3 console
Loading...
Searching...
No Matches
pad.h
Go to the documentation of this file.
1
5#ifndef __LV2_PAD_H__
6#define __LV2_PAD_H__
7
8#include <ppu-types.h>
9
10#define MAX_PADS (127)
11#define MAX_PAD_CODES (64)
12#define MAX_PORT_NUM (7)
13#define MAX_PAD_CAPABILITY_INFO (32)
14#define MAX_PAD_ACTUATOR (2)
16#define PAD_TYPE_STANDARD (0)
17#define PAD_TYPE_REMOTE (4)
18#define PAD_TYPE_LDD (5)
20#define PAD_PRESS_MODE_ON (1)
21#define PAD_PRESS_MODE_OFF (0)
22
23#define PAD_INFO_SUPPORTED_PRESS_MODE (1)
24
25#define PAD_SENSOR_MODE_ON (1)
26#define PAD_SENSOR_MODE_OFF (0)
27
28#define PAD_INFO_SUPPORTED_SENSOR_MODE (1)
29
30#define PAD_SETTINGS_PRESS_ON (1<<1)
31#define PAD_SETTINGS_PRESS_OFF (0)
32#define PAD_SETTINGS_SENSOR_ON (1<<2)
33#define PAD_SETTINGS_SENSOR_OFF (0)
34
35// PAD_BUTTON_OFFSET_DIGITAL1 assignment
36#define PAD_CTRL_LEFT (1<<7)
37#define PAD_CTRL_DOWN (1<<6)
38#define PAD_CTRL_RIGHT (1<<5)
39#define PAD_CTRL_UP (1<<4)
40#define PAD_CTRL_START (1<<3)
41#define PAD_CTRL_R3 (1<<2)
42#define PAD_CTRL_L3 (1<<1)
43#define PAD_CTRL_SELECT (1<<0)
44
45// PAD_BUTTON_OFFSET_DIGITAL2 assignment
46#define PAD_CTRL_SQUARE (1<<7)
47#define PAD_CTRL_CROSS (1<<6)
48#define PAD_CTRL_CIRCLE (1<<5)
49#define PAD_CTRL_TRIANGLE (1<<4)
50#define PAD_CTRL_R1 (1<<3)
51#define PAD_CTRL_L1 (1<<2)
52#define PAD_CTRL_R2 (1<<1)
53#define PAD_CTRL_L2 (1<<0)
54
55#define PAD_OK 0
56#define PAD_ERROR_FATAL 0x80121101
57#define PAD_ERROR_INVALID_PARAMETER 0x80121102
58#define PAD_ERROR_ALREADY_INITIALIZED 0x80121103
59#define PAD_ERROR_NOT_INITIALIZED 0x80121104
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
75
87
91typedef struct _pad_data
92{
93 s32 len;
94 union{
96 struct {
97 u16 zeroes;
98 unsigned int : 8;
99 unsigned int seven : 4;
100 unsigned int halflen : 4;
101 unsigned int : 8;
102 /* Button information */
103 /* 0: UP, 1: DOWN */
104 unsigned int BTN_LEFT : 1;
105 unsigned int BTN_DOWN : 1;
106 unsigned int BTN_RIGHT : 1;
107 unsigned int BTN_UP : 1;
108 unsigned int BTN_START : 1;
109 unsigned int BTN_R3 : 1;
110 unsigned int BTN_L3 : 1;
111 unsigned int BTN_SELECT : 1;
113 unsigned int : 8;
114 unsigned int BTN_SQUARE : 1;
115 unsigned int BTN_CROSS : 1;
116 unsigned int BTN_CIRCLE : 1;
117 unsigned int BTN_TRIANGLE : 1;
118 unsigned int BTN_R1 : 1;
119 unsigned int BTN_L1 : 1;
120 unsigned int BTN_R2 : 1;
121 unsigned int BTN_L2 : 1;
123 /* Analog nub information */
124 /* 0x0000 - 0x00FF */
126 unsigned int ANA_R_H : 16;
128 unsigned int ANA_R_V : 16;
130 unsigned int ANA_L_H : 16;
132 unsigned int ANA_L_V : 16;
133
134 /* Pressure-sensitive information */
135 /* 0x0000 - 0x00FF */
137 unsigned int PRE_RIGHT : 16;
139 unsigned int PRE_LEFT : 16;
141 unsigned int PRE_UP : 16;
143 unsigned int PRE_DOWN : 16;
145 unsigned int PRE_TRIANGLE : 16;
147 unsigned int PRE_CIRCLE : 16;
149 unsigned int PRE_CROSS : 16;
151 unsigned int PRE_SQUARE : 16;
153 unsigned int PRE_L1 : 16;
155 unsigned int PRE_R1 : 16;
157 unsigned int PRE_L2 : 16;
159 unsigned int PRE_R2 : 16;
160
161 /* Sensor information */
162 /* 0x0000 - 0x03FF */
164 unsigned int SENSOR_X : 16;
166 unsigned int SENSOR_Y : 16;
168 unsigned int SENSOR_Z : 16;
170 unsigned int SENSOR_G : 16;
171
172 /* BD remote information */
173 unsigned int BTN_BDLEN : 16;
175 unsigned int BTN_BDCODE : 16;
178 u8 reserved[76];
179 };
180 };
182
187{
188 union {
191 struct {
192 unsigned int ps3spec : 1;
193 unsigned int has_pressure : 1;
194 unsigned int has_sensors : 1;
195 unsigned int has_hps : 1;
196 unsigned int has_vibrate : 1;
197 unsigned int : 27;
199 };
200 };
202
204typedef struct _pad_act_param
205{
206 union {
209 struct {
214 };
215 };
217 u8 reserved[6];
219
241
250
252typedef enum _io_pad_bd_code
253{
279 BTN_BD_L3 = 0x51,
280 BTN_BD_R3 = 0x52,
282 BTN_BD_UP = 0x54,
286 BTN_BD_L2 = 0x58,
287 BTN_BD_R2 = 0x59,
288 BTN_BD_L1 = 0x5a,
289 BTN_BD_R1 = 0x5b,
305
306 /* TV controller */
313 BTN_BD_PROGRAM_GUIDE = 0x1053
315
341
346s32 ioPadInit(u32 max);
347
352
358
363s32 ioPadClearBuf(u32 port);
364
370s32 ioPadGetCapabilityInfo(u32 port, padCapabilityInfo* capabilities);
371
381s32 ioPadGetData(u32 port, padData* data);
382
389s32 ioPadGetDataExtra(u32 port, u32* type, padData* data);
390
395s32 ioPadInfoPressMode(u32 port);
396
402s32 ioPadSetPressMode(u32 port, u32 mode);
403
409
415s32 ioPadSetSensorMode(u32 port, u32 mode);
416
422u32 ioPadSetActDirect(u32 port, padActParam* actParam);
423
430u32 ioPadLddDataInsert(s32 handle, padData* data);
431
436s32 ioPadLddGetPortNo(s32 handle);
437
442
448
449/* new in 3.41 */
455
461
471s32 ioPadPeriphGetData(u32 port, padPeriphData* periphData);
472
479s32 ioPadSetPortSetting(u32 port, u32 setting);
480
481#ifdef __cplusplus
482 }
483#endif
484
485#endif
s32 ioPadInfoPressMode(u32 port)
Get pad press mode.
s32 ioPadLddGetPortNo(s32 handle)
Get port number from registered virtual pad handle.
s32 ioPadGetInfo2(padInfo2 *info)
Get pad information (new format).
s32 ioPadLddRegisterController()
Register a new virtual pad.
#define MAX_PADS
Definition pad.h:10
struct _pad_act_param padActParam
Pad action parameters data structure.
struct _pad_capability_info padCapabilityInfo
Pad capability information data structure. All 1-bit values are 1 when the capability is present,...
s32 ioPadInit(u32 max)
Initialize Pad IO management.
s32 ioPadGetInfo(padInfo *info)
Get pad information.
#define MAX_PAD_ACTUATOR
Definition pad.h:14
struct _pad_data padData
Pad data data structure. All 1-bit button fields are zero when inctive, and 1 when active.
enum _io_pad_bd_code ioPadBdCode
BD remote button codes.
s32 ioPadSetPressMode(u32 port, u32 mode)
Set pad press mode.
s32 ioPadEnd()
End of Pad IO management.
s32 ioPadClearBuf(u32 port)
Clear pad buffer.
s32 ioPadInfoSensorMode(u32 port)
Get pad sensor mode.
s32 ioPadPeriphGetData(u32 port, padPeriphData *periphData)
Get pad peripheral data.
enum _io_pad_button_data_offset ioPadButtonDataOffset
struct _pad_info padInfo
Pad info data structure (old format).
u32 ioPadLddDataInsert(s32 handle, padData *data)
Insert pad data into virtual pad.
#define MAX_PAD_CODES
Definition pad.h:11
s32 ioPadLddUnregisterController(s32 handle)
Unregister a virtual pad.
s32 ioPadGetCapabilityInfo(u32 port, padCapabilityInfo *capabilities)
Get pad capability information.
#define MAX_PORT_NUM
Definition pad.h:12
u32 ioPadSetActDirect(u32 port, padActParam *actParam)
Set pad action (rumble) data.
s32 ioPadSetPortSetting(u32 port, u32 setting)
Set pad port setting.
_io_pad_bd_code
BD remote button codes.
Definition pad.h:253
@ BTN_BD_SCAN_FWD
Definition pad.h:274
@ BTN_BD_EJECT
Definition pad.h:267
@ BTN_BD_SQUARE
Definition pad.h:293
@ BTN_BD_DOWN
Definition pad.h:284
@ BTN_BD_SCAN_REV
Definition pad.h:273
@ BTN_BD_SLOW_FWD
Definition pad.h:295
@ BTN_BD_PREV_CHANNEL
Definition pad.h:312
@ BTN_BD_SUBTITLE
Definition pad.h:296
@ BTN_BD_PROGRAM_DOWN
Definition pad.h:311
@ BTN_BD_START
Definition pad.h:281
@ BTN_BD_POPUP_MENU
Definition pad.h:277
@ BTN_BD_NUMBER_12
Definition pad.h:308
@ BTN_BD_L1
Definition pad.h:288
@ BTN_BD_KEY_2
Definition pad.h:255
@ BTN_BD_STOP
Definition pad.h:275
@ BTN_BD_R1
Definition pad.h:289
@ BTN_BD_YELLOW
Definition pad.h:303
@ BTN_BD_R2
Definition pad.h:287
@ BTN_BD_KEY_9
Definition pad.h:262
@ BTN_BD_PROGRAM_GUIDE
Definition pad.h:313
@ BTN_BD_L3
Definition pad.h:279
@ BTN_BD_SLOW_REV
Definition pad.h:294
@ BTN_BD_KEY_4
Definition pad.h:257
@ BTN_BD_KEY_7
Definition pad.h:260
@ BTN_BD_PAUSE
Definition pad.h:276
@ BTN_BD_RED
Definition pad.h:301
@ BTN_BD_TOPMENU
Definition pad.h:268
@ BTN_BD_CIRCLE
Definition pad.h:291
@ BTN_BD_KEY_5
Definition pad.h:258
@ BTN_BD_UP
Definition pad.h:282
@ BTN_BD_PLAY
Definition pad.h:272
@ BTN_BD_GREEN
Definition pad.h:302
@ BTN_BD_NUMBER_11
Definition pad.h:307
@ BTN_BD_TIME
Definition pad.h:269
@ BTN_BD_ANGLE
Definition pad.h:298
@ BTN_BD_R3
Definition pad.h:280
@ BTN_BD_NEXT
Definition pad.h:271
@ BTN_BD_KEY_3
Definition pad.h:256
@ BTN_BD_RIGHT
Definition pad.h:283
@ BTN_BD_PROGRAM_UP
Definition pad.h:310
@ BTN_BD_LEFT
Definition pad.h:285
@ BTN_BD_KEY_8
Definition pad.h:261
@ BTN_BD_CROSS
Definition pad.h:292
@ BTN_BD_ENTER
Definition pad.h:264
@ BTN_BD_PREV
Definition pad.h:270
@ BTN_BD_KEY_1
Definition pad.h:254
@ BTN_BD_RETURN
Definition pad.h:265
@ BTN_BD_SELECT
Definition pad.h:278
@ BTN_BD_NUMBER_PERIOD
Definition pad.h:309
@ BTN_BD_CLEAR
Definition pad.h:266
@ BTN_BD_KEY_6
Definition pad.h:259
@ BTN_BD_RELEASE
Definition pad.h:304
@ BTN_BD_KEY_0
Definition pad.h:263
@ BTN_BD_DISPLAY
Definition pad.h:299
@ BTN_BD_BLUE
Definition pad.h:300
@ BTN_BD_L2
Definition pad.h:286
@ BTN_BD_AUDIO
Definition pad.h:297
@ BTN_BD_TRIANGLE
Definition pad.h:290
s32 ioPadPeriphGetInfo(padPeriphInfo *periphInfo)
Get pad peripheral information.
s32 ioPadGetData(u32 port, padData *data)
Get pad data.
#define MAX_PAD_CAPABILITY_INFO
Definition pad.h:13
_io_pad_button_data_offset
Definition pad.h:317
@ PAD_BUTTON_OFFSET_ANALOG_RIGHT_X
Definition pad.h:320
@ PAD_BUTTON_OFFSET_PRESS_CIRCLE
Definition pad.h:329
@ PAD_BUTTON_OFFSET_DIGITAL2
Definition pad.h:319
@ PAD_BUTTON_OFFSET_PRESS_L2
Definition pad.h:334
@ PAD_BUTTON_OFFSET_DIGITAL1
Definition pad.h:318
@ PAD_BUTTON_OFFSET_PRESS_TRIANGLE
Definition pad.h:328
@ PAD_BUTTON_OFFSET_PRESS_UP
Definition pad.h:326
@ PAD_BUTTON_OFFSET_PRESS_R1
Definition pad.h:333
@ PAD_BUTTON_OFFSET_ANALOG_LEFT_Y
Definition pad.h:323
@ PAD_BUTTON_OFFSET_ANALOG_RIGHT_Y
Definition pad.h:321
@ PAD_BUTTON_OFFSET_PRESS_R2
Definition pad.h:335
@ PAD_BUTTON_OFFSET_PRESS_CROSS
Definition pad.h:330
@ PAD_BUTTON_OFFSET_SENSOR_G
Definition pad.h:339
@ PAD_BUTTON_OFFSET_PRESS_DOWN
Definition pad.h:327
@ PAD_BUTTON_OFFSET_PRESS_LEFT
Definition pad.h:325
@ PAD_BUTTON_OFFSET_PRESS_RIGHT
Definition pad.h:324
@ PAD_BUTTON_OFFSET_SENSOR_Y
Definition pad.h:337
@ PAD_BUTTON_OFFSET_PRESS_L1
Definition pad.h:332
@ PAD_BUTTON_OFFSET_SENSOR_Z
Definition pad.h:338
@ PAD_BUTTON_OFFSET_ANALOG_LEFT_X
Definition pad.h:322
@ PAD_BUTTON_OFFSET_PRESS_SQUARE
Definition pad.h:331
@ PAD_BUTTON_OFFSET_SENSOR_X
Definition pad.h:336
struct _pad_periph_info padPeriphInfo
Pad peripheral information data structure.
struct _pad_periph_data padPeriphData
Pad peripheral data data structure.
struct _pad_info2 padInfo2
Pad info data structure (new format).
s32 ioPadSetSensorMode(u32 port, u32 mode)
Set pad sensor mode.
s32 ioPadGetDataExtra(u32 port, u32 *type, padData *data)
Get pad data.
Pad action parameters data structure.
Definition pad.h:205
u8 small_motor
Small Motor parameter 0: OFF, 1: On.
Definition pad.h:211
u8 large_motor
Large Motor 0: OFF, 1-255: Motor Speed, higher == faster.
Definition pad.h:213
u8 motor[(2)]
All motors statuses.
Definition pad.h:208
u8 reserved[6]
reserved
Definition pad.h:217
Pad capability information data structure. All 1-bit values are 1 when the capability is present,...
Definition pad.h:187
unsigned int ps3spec
controller meets ps3 specifications
Definition pad.h:192
unsigned int
reserved
Definition pad.h:197
unsigned int has_vibrate
controller has inbuilt vibration motor
Definition pad.h:196
unsigned int has_hps
controller has high precision stick
Definition pad.h:195
unsigned int has_pressure
controller has pressure-sensitive buttons
Definition pad.h:193
unsigned int has_sensors
controller has sensors, e.g. sixaxis, X,Y,Z,G
Definition pad.h:194
u32 reserved[(32) -1]
reserved
Definition pad.h:198
u32 info[(32)]
The whole capabilities in an array of 32-bit integers.
Definition pad.h:190
Pad data data structure. All 1-bit button fields are zero when inctive, and 1 when active.
Definition pad.h:92
unsigned int BTN_RIGHT
right button
Definition pad.h:106
unsigned int ANA_L_V
left analog nub vertical position (0x0000 - 0x00FF)
Definition pad.h:132
unsigned int PRE_L1
L1 button pressure information (0x0000 - 0x00FF)
Definition pad.h:153
unsigned int SENSOR_Z
Z sensor information (0x0000 - 0x03FF)
Definition pad.h:168
unsigned int BTN_R1
R1 button.
Definition pad.h:118
unsigned int BTN_LEFT
left button
Definition pad.h:104
unsigned int BTN_L3
L3 button.
Definition pad.h:110
unsigned int ANA_L_H
left analog nub horizontal position (0x0000 - 0x00FF)
Definition pad.h:130
unsigned int seven
always 0x7
Definition pad.h:99
unsigned int SENSOR_Y
Y sensor information (0x0000 - 0x03FF)
Definition pad.h:166
s32 len
structure length
Definition pad.h:93
unsigned int BTN_CROSS
cross button
Definition pad.h:115
unsigned int BTN_BDCODE
BD remote len information.
Definition pad.h:175
unsigned int BTN_R3
R3 button.
Definition pad.h:109
unsigned int PRE_R2
R2 button pressure information (0x0000 - 0x00FF)
Definition pad.h:159
unsigned int PRE_L2
L2 button pressure information (0x0000 - 0x00FF)
Definition pad.h:157
unsigned int PRE_R1
R1 button pressure information (0x0000 - 0x00FF)
Definition pad.h:155
unsigned int BTN_UP
up button
Definition pad.h:107
unsigned int SENSOR_X
X sensor information (0x0000 - 0x03FF)
Definition pad.h:164
unsigned int PRE_LEFT
left button pressure information (0x0000 - 0x00FF)
Definition pad.h:139
unsigned int BTN_DOWN
down button
Definition pad.h:105
unsigned int BTN_BDLEN
Definition pad.h:173
unsigned int SENSOR_G
G sensor information (0x0000 - 0x03FF)
Definition pad.h:170
unsigned int BTN_CIRCLE
circle button
Definition pad.h:116
u16 zeroes
zero bits
Definition pad.h:97
unsigned int BTN_L1
L1 button.
Definition pad.h:119
unsigned int BTN_R2
R2 button.
Definition pad.h:120
unsigned int PRE_DOWN
down button pressure information (0x0000 - 0x00FF)
Definition pad.h:143
unsigned int BTN_SELECT
select button
Definition pad.h:111
unsigned int ANA_R_H
right analog nub horizontal position (0x0000 - 0x00FF)
Definition pad.h:126
unsigned int BTN_START
start button
Definition pad.h:108
unsigned int halflen
len/2
Definition pad.h:100
unsigned int PRE_TRIANGLE
triangle button pressure information (0x0000 - 0x00FF)
Definition pad.h:145
u8 reserved[76]
BD remote code information see ioPadBdCode for values.
Definition pad.h:178
u16 button[(64)]
array of button values
Definition pad.h:95
unsigned int BTN_L2
L2 button.
Definition pad.h:121
unsigned int BTN_TRIANGLE
triangle button
Definition pad.h:117
unsigned int
reserved
Definition pad.h:98
unsigned int PRE_RIGHT
right button pressure information (0x0000 - 0x00FF)
Definition pad.h:137
unsigned int BTN_SQUARE
square button
Definition pad.h:114
unsigned int PRE_CIRCLE
circle button pressure information (0x0000 - 0x00FF)
Definition pad.h:147
unsigned int PRE_SQUARE
square button pressure information (0x0000 - 0x00FF)
Definition pad.h:151
unsigned int PRE_UP
up button pressure information (0x0000 - 0x00FF)
Definition pad.h:141
unsigned int ANA_R_V
right analog nub vertical position (0x0000 - 0x00FF)
Definition pad.h:128
unsigned int PRE_CROSS
cross button pressure information (0x0000 - 0x00FF)
Definition pad.h:149
Pad info data structure (new format).
Definition pad.h:78
u32 max
max pads allowed to connect
Definition pad.h:79
u32 device_type[(7)]
0: Standard, 4: Bluray Remote, 5: LDD
Definition pad.h:85
u32 connected
how many pads connected
Definition pad.h:80
u32 port_setting[(7)]
Bit 1: Pressure sensitivity turned on, Bit 2: Sensors turned on.
Definition pad.h:83
u32 port_status[(7)]
Bit 0: Connected (0: Disconnected, 1: Connected), Bit 1: assign changes?
Definition pad.h:82
u32 info
Bit 0 lets the system intercept pad? other bits are reserved.
Definition pad.h:81
u32 device_capability[(7)]
See: PadCapabilityInfo. Bit 0: PS3SPEC, Bit 1: has_pressure, Bit 2: has_sensor, Bit 3: has_hps,...
Definition pad.h:84
Pad info data structure (old format).
Definition pad.h:67
u16 vendor_id[(127)]
array of vendor ids
Definition pad.h:71
u32 connected
how many pads connected
Definition pad.h:69
u32 info
bit 0 lets the system intercept pad? other bits are reserved
Definition pad.h:70
u32 max
max pads allowed to connect
Definition pad.h:68
u16 product_id[(127)]
array of product ids
Definition pad.h:72
u8 status[(127)]
array of pad statuses
Definition pad.h:73
Pad peripheral data data structure.
Definition pad.h:244
u32 pclass_type
Pad class type.
Definition pad.h:245
s32 len
Length of button array.
Definition pad.h:247
u32 pclass_profile
Pas class profile.
Definition pad.h:246
u16 button[(64)]
Button array.
Definition pad.h:248
Pad peripheral information data structure.
Definition pad.h:222
u32 max
max pads allowed to connect
Definition pad.h:223
u32 info
bit 0 lets the system intercept pad? other bits are reserved
Definition pad.h:225
u32 connected
how many pads connected
Definition pad.h:224
u32 device_capability[(7)]
Pad capability.
Definition pad.h:236
u32 port_status[(7)]
Bit 0: Connected (0: Disconnected, 1: Connected), Bit 1: assign changes?
Definition pad.h:226
u32 pclass_profile[(7)]
Pad class profile.
Definition pad.h:239
u32 device_type[(7)]
0: Standard, 4: Bluray Remote, 5: LDD
Definition pad.h:237
u32 pclass_type[(7)]
Pad class type.
Definition pad.h:238
u32 port_setting[(7)]
Bit 1: Pressure sensitivity turned on, Bit 2: Sensors turned on.
Definition pad.h:227