|
PS2SDK
PS2 Homebrew Libraries
|
#include <tamtypes.h>#include <kernel.h>#include <stdio.h>#include <string.h>#include <sifrpc.h>#include <sifcmd.h>#include "libpad.h"
Include dependency graph for libpad.c:Go to the source code of this file.
Data Structures | |
| struct | pad_state |
| struct | pad_data |
| struct | .padOpenResult |
| struct | .padResult |
| struct | .padOpenArgs |
| struct | .padCloseArgs |
| struct | .padSlotMaxArgs |
| struct | .padInfoModeArgs |
| struct | .padSetMainModeArgs |
| struct | .padModeResult |
| struct | .padGetButtonMaskArgs |
| struct | .padSetButtonInfoArgs |
| struct | .padSetButtonInfoResult |
| struct | .padInfoActArgs |
| struct | .padActDirAlignArgs |
Macros | |
| #define | PAD_BIND_RPC_ID1 0x8000010f |
| #define | PAD_BIND_RPC_ID2 0x8000011f |
| #define | PAD_RPCCMD_OPEN 0x80000100 |
| #define | PAD_RPCCMD_INFO_ACT 0x80000102 |
| #define | PAD_RPCCMD_INFO_COMB 0x80000103 |
| #define | PAD_RPCCMD_INFO_MODE 0x80000104 |
| #define | PAD_RPCCMD_SET_MMODE 0x80000105 |
| #define | PAD_RPCCMD_SET_ACTDIR 0x80000106 |
| #define | PAD_RPCCMD_SET_ACTALIGN 0x80000107 |
| #define | PAD_RPCCMD_GET_BTNMASK 0x80000108 |
| #define | PAD_RPCCMD_SET_BTNINFO 0x80000109 |
| #define | PAD_RPCCMD_SET_VREF 0x8000010a |
| #define | PAD_RPCCMD_GET_PORTMAX 0x8000010b |
| #define | PAD_RPCCMD_GET_SLOTMAX 0x8000010c |
| #define | PAD_RPCCMD_CLOSE 0x8000010d |
| #define | PAD_RPCCMD_END 0x8000010e |
| #define | PAD_RPCCMD_INIT 0x00000100 |
Functions | ||
| static SifRpcClientData_t padsif[2] | __attribute__ ((aligned(64))) | |
| union { | ||
| s32 | command | |
| struct { | ||
| s32 | unknown [3] | |
| s32 | result | |
| s32 | unknown2 | |
| void * | padBuf | |
| } | padOpenResult | |
| struct { | ||
| s32 | unknown [3] | |
| s32 | result | |
| } | padResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | unknown | |
| void * | padArea | |
| } | padOpenArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | unknown | |
| s32 | mode | |
| } | padCloseArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| } | padSlotMaxArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | infoMode | |
| s32 | index | |
| } | padInfoModeArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | mode | |
| s32 | lock | |
| } | padSetMainModeArgs | |
| struct { | ||
| s32 | unknown [5] | |
| s32 | result | |
| } | padModeResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| } | padGetButtonMaskArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | buttonInfo | |
| } | padSetButtonInfoArgs | |
| struct { | ||
| s32 | unknown [4] | |
| s32 | result | |
| } | padSetButtonInfoResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | actuator | |
| s32 | act_cmd | |
| } | padInfoActArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s8 | align [6] | |
| } | padActDirAlignArgs | |
| char | buffer [128] | |
| } | __attribute__ ((aligned(16))) | |
| static struct pad_data * | padGetDmaStr (int port, int slot) | |
| int | padInit (int mode) | |
| int | padPortInit (int mode) | |
| int | padEnd (void) | |
| int | padPortOpen (int port, int slot, void *padArea) | |
| int | padPortClose (int port, int slot) | |
| unsigned char | padRead (int port, int slot, struct padButtonStatus *data) | |
| int | padGetState (int port, int slot) | |
| unsigned char | padGetReqState (int port, int slot) | |
| int | padSetReqState (int port, int slot, int state) | |
| void | padStateInt2String (int state, char buf[16]) | |
| void | padReqStateInt2String (int state, char buf[16]) | |
| int | padGetPortMax (void) | |
| int | padGetSlotMax (int port) | |
| int | padGetModVersion () | |
| int | padInfoMode (int port, int slot, int infoMode, int index) | |
| int | padSetMainMode (int port, int slot, int mode, int lock) | |
| int | padInfoPressMode (int port, int slot) | |
| int | padEnterPressMode (int port, int slot) | |
| int | padExitPressMode (int port, int slot) | |
| int | padGetButtonMask (int port, int slot) | |
| int | padSetButtonInfo (int port, int slot, int buttonInfo) | |
| unsigned char | padInfoAct (int port, int slot, int actuator, int cmd) | |
| int | padSetActAlign (int port, int slot, const char actAlign[6]) | |
| int | padSetActDirect (int port, int slot, char actAlign[6]) | |
| int | padGetConnection (int port, int slot) | |
Variables | ||
| int | _iop_reboot_count | |
| static const char | padStateString [8][16] | |
| static const char | padReqStateString [3][16] = {"COMPLETE", "FAILED", "BUSY"} | |
| static int | padInitialised = 0 | |
| s32 | command | |
| struct { | ||
| s32 | unknown [3] | |
| s32 | result | |
| s32 | unknown2 | |
| void * | padBuf | |
| } | padOpenResult | |
| struct { | ||
| s32 | unknown [3] | |
| s32 | result | |
| } | padResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | unknown | |
| void * | padArea | |
| } | padOpenArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | unknown | |
| s32 | mode | |
| } | padCloseArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| } | padSlotMaxArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | infoMode | |
| s32 | index | |
| } | padInfoModeArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | mode | |
| s32 | lock | |
| } | padSetMainModeArgs | |
| struct { | ||
| s32 | unknown [5] | |
| s32 | result | |
| } | padModeResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| } | padGetButtonMaskArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | buttonInfo | |
| } | padSetButtonInfoArgs | |
| struct { | ||
| s32 | unknown [4] | |
| s32 | result | |
| } | padSetButtonInfoResult | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s32 | actuator | |
| s32 | act_cmd | |
| } | padInfoActArgs | |
| struct { | ||
| s32 | command | |
| s32 | port | |
| s32 | slot | |
| s8 | align [6] | |
| } | padActDirAlignArgs | |
| char | buffer [128] | |
| static struct pad_state | PadState [2][8] | |
Pad library functions Quite easy rev engineered from util demos.. Find any bugs? Mail me: pukko.nosp@m.@hom.nosp@m.e.se
Definition in file libpad.c.
| struct pad_state |
| struct pad_data |
| struct .padOpenResult |
| struct .padOpenArgs |
| struct .padCloseArgs |
| struct .padInfoModeArgs |
| struct .padSetMainModeArgs |
| struct .padModeResult |
| struct .padGetButtonMaskArgs |
| struct .padSetButtonInfoArgs |
| struct .padSetButtonInfoResult |
| struct .padInfoActArgs |
| struct .padActDirAlignArgs |
|
static |
|
static |
Common helper
Definition at line 253 of file libpad.c.
References PadState.
Referenced by padGetReqState(), padGetState(), padInfoAct(), padInfoMode(), padRead(), and padSetReqState().
| int padInit | ( | int | mode | ) |
Initialise libpad
| mode | Must be set to 0. |
Definition at line 297 of file libpad.c.
References padPortInit().
| int padPortInit | ( | int | mode | ) |
Initialise pad ports. Automatically called by padInit(), there is no need to call this function directly.
| mode | Must be set to 0. |
Note: PADMAN from release 1.3.4 does not have this function implemented. As a result, it is impossible to reinitialize libpad after calling padEnd().
Definition at line 338 of file libpad.c.
References PadState.
Referenced by padInit().
| int padEnd | ( | void | ) |
Ends all pad communication Note: PADMAN from release 1.3.4 does not have padPortInit implemented. As a result, it is impossible to reinitialize libpad after calling padEnd(). This was known as padClose in the really early official SDK releases.
| int padPortOpen | ( | int | port, |
| int | slot, | ||
| void * | padArea ) |
| port | Port to open |
| slot | Slot to open |
| padArea | The address of the buffer for storing the pad status. Must be a 256-byte region (2xsizeof(struct pad_data). Must be a 64-byte aligned address. For the old libpad, at least 16-bytes alignment. |
Definition at line 394 of file libpad.c.
References PadState.
Referenced by pad_open().
| int padPortClose | ( | int | port, |
| int | slot ) |
Closes an opened port.
| port | Port to close |
| slot | Slot to close |
Definition at line 451 of file libpad.c.
References PadState.
Referenced by pad_close(), and padEnd().
| unsigned char padRead | ( | int | port, |
| int | slot, | ||
| struct padButtonStatus * | data ) |
Read pad data
| port | Port number of the pad to get the status for. |
| slot | Slot number of the pad to get the status for. |
| data | A pointer to a 32 byte array where the result is stored |
Definition at line 472 of file libpad.c.
References padGetDmaStr().
Referenced by pad_get_buttons().
| int padGetState | ( | int | port, |
| int | slot ) |
Get current pad state Wait until state == 6 (Ready) before trying to access the pad
Definition at line 484 of file libpad.c.
References padGetDmaStr(), and padGetReqState().
Referenced by pad_get_state().
| unsigned char padGetReqState | ( | int | port, |
| int | slot ) |
Get pad request state
Definition at line 513 of file libpad.c.
References padGetDmaStr().
Referenced by padGetState().
| int padSetReqState | ( | int | port, |
| int | slot, | ||
| int | state ) |
Set pad request state (after a param setting) No need to export this one perhaps..
Definition at line 523 of file libpad.c.
References padGetDmaStr().
Referenced by padInfoAct(), padInfoMode(), padSetActAlign(), and padSetMainMode().
| int padGetPortMax | ( | void | ) |
| int padGetSlotMax | ( | int | port | ) |
| int padGetModVersion | ( | ) |
| int padInfoMode | ( | int | port, |
| int | slot, | ||
| int | infoMode, | ||
| int | index ) |
Get pad info (digital (4), dualshock (7), etc..)
Definition at line 590 of file libpad.c.
References padGetDmaStr(), and padSetReqState().
Referenced by pad_get_num_modes(), pad_get_type(), pad_has_type(), and pad_init_actuators().
| int padSetMainMode | ( | int | port, |
| int | slot, | ||
| int | mode, | ||
| int | lock ) |
mode = 1, -> Analog/dual shock enabled; mode = 0 -> Digital lock = 3 -> Mode not changeable by user
Definition at line 658 of file libpad.c.
References padSetReqState().
Referenced by pad_set_mode().
| int padInfoPressMode | ( | int | port, |
| int | slot ) |
Check if the pad has pressure sensitive buttons
Definition at line 677 of file libpad.c.
Referenced by pad_set_sensitivity().
| int padEnterPressMode | ( | int | port, |
| int | slot ) |
Pressure sensitive mode ON
Definition at line 692 of file libpad.c.
Referenced by pad_set_sensitivity().
| int padExitPressMode | ( | int | port, |
| int | slot ) |
Check for newer version Pressure sensitive mode OFF
Definition at line 698 of file libpad.c.
Referenced by pad_set_sensitivity().
| int padSetButtonInfo | ( | int | port, |
| int | slot, | ||
| int | buttonInfo ) |
| unsigned char padInfoAct | ( | int | port, |
| int | slot, | ||
| int | word, | ||
| int | byte ) |
Get actuator status for this controller If padInfoAct(port, slot, -1, 0) != 0, the controller has actuators (i think ;) )
Definition at line 740 of file libpad.c.
References padGetDmaStr(), and padSetReqState().
Referenced by pad_init_actuators().
| int padSetActAlign | ( | int | port, |
| int | slot, | ||
| const char | act_align[6] ) |
Initalise actuators. On dual shock controller: act_align[0] = 0 enables 'small' engine act_align[1] = 1 enables 'big' engine set act_align[2-5] to 0xff (disable)
Definition at line 779 of file libpad.c.
References padSetReqState().
Referenced by pad_init_actuators().
| int padSetActDirect | ( | int | port, |
| int | slot, | ||
| char | act_align[6] ) |
Set actuator status on dual shock controller, act_align[0] = 0/1 turns off/on 'small' engine act_align[1] = 0-255 sets 'big' engine speed
Definition at line 802 of file libpad.c.
Referenced by pad_set_actuators().
| int padGetConnection | ( | int | port, |
| int | slot ) |
|
static |
|
static |
|
static |
Port state data
Definition at line 244 of file libpad.c.
Referenced by padGetDmaStr(), padPortClose(), padPortInit(), and padPortOpen().