5#include <revolution/SC.h>
6#include <revolution/WUD.h>
11#define WPAD_MAX_DPD_OBJECTS 4
13#define WPAD_MIN_DPD_SENS 1
14#define WPAD_MAX_DPD_SENS 5
16#define WPAD_MAX_DPD_X 1023
17#define WPAD_MAX_DPD_Y 767
19#define WPAD_MAX_SPEAKER_VOLUME 127
23typedef WUDAllocFunc WPADAllocFunc;
24typedef WUDFreeFunc WPADFreeFunc;
26typedef void (*WPADCallback)(s32 chan, s32 result);
27typedef void (*WPADSamplingCallback)(s32 chan);
28typedef void (*WPADConnectCallback)(s32 chan, s32 result);
29typedef void (*WPADExtensionCallback)(s32 chan, s32 dev);
31typedef WUDSyncDeviceCallback WPADSyncDeviceCallback;
32typedef WUDClearDeviceCallback WPADClearDeviceCallback;
33typedef SCFlushCallback WPADSaveCallback;
36 WPAD_LIB_STATUS_0 = WUD_LIB_STATUS_0,
37 WPAD_LIB_STATUS_1 = WUD_LIB_STATUS_1,
38 WPAD_LIB_STATUS_2 = WUD_LIB_STATUS_2,
39 WPAD_LIB_STATUS_3 = WUD_LIB_STATUS_3,
40 WPAD_LIB_STATUS_4 = WUD_LIB_STATUS_4,
45 WPAD_ERR_NO_CONTROLLER = -1,
46 WPAD_ERR_COMMUNICATION_ERROR = -2,
47 WPAD_ERR_TRANSFER = -3,
48 WPAD_ERR_INVALID = -4,
49 WPAD_ERR_CORRUPTED = -7,
51 WPAD_ERR_BUSY = WPAD_ERR_COMMUNICATION_ERROR,
61 WPAD_CHAN_INVALID = -1
66 WPAD_BUTTON_LEFT = (1 << 0),
67 WPAD_BUTTON_RIGHT = (1 << 1),
68 WPAD_BUTTON_DOWN = (1 << 2),
69 WPAD_BUTTON_UP = (1 << 3),
71 WPAD_BUTTON_A = (1 << 11),
72 WPAD_BUTTON_B = (1 << 10),
73 WPAD_BUTTON_1 = (1 << 9),
74 WPAD_BUTTON_2 = (1 << 8),
76 WPAD_BUTTON_PLUS = (1 << 4),
77 WPAD_BUTTON_MINUS = (1 << 12),
78 WPAD_BUTTON_HOME = (1 << 15),
81 WPAD_BUTTON_FS_Z = (1 << 13),
82 WPAD_BUTTON_FS_C = (1 << 14),
85 WPAD_BUTTON_CL_LEFT = (1 << 1),
86 WPAD_BUTTON_CL_RIGHT = (1 << 15),
87 WPAD_BUTTON_CL_DOWN = (1 << 14),
88 WPAD_BUTTON_CL_UP = (1 << 0),
90 WPAD_BUTTON_CL_A = (1 << 4),
91 WPAD_BUTTON_CL_B = (1 << 6),
92 WPAD_BUTTON_CL_X = (1 << 3),
93 WPAD_BUTTON_CL_Y = (1 << 5),
94 WPAD_BUTTON_CL_ZL = (1 << 7),
95 WPAD_BUTTON_CL_ZR = (1 << 2),
97 WPAD_BUTTON_CL_L = (1 << 13),
98 WPAD_BUTTON_CL_R = (1 << 9),
100 WPAD_BUTTON_CL_PLUS = (1 << 10),
101 WPAD_BUTTON_CL_MINUS = (1 << 12),
102 WPAD_BUTTON_CL_HOME = (1 << 11),
110 WPAD_DEV_FUTURE = 251,
111 WPAD_DEV_NOT_SUPPORTED = 252,
112 WPAD_DEV_NOT_FOUND = 253,
114 WPAD_DEV_UNKNOWN = 255,
119 WPAD_FMT_CORE_BTN_ACC,
120 WPAD_FMT_CORE_BTN_ACC_DPD,
124 WPAD_FMT_FS_BTN_ACC_DPD,
126 WPAD_FMT_CLASSIC_BTN,
127 WPAD_FMT_CLASSIC_BTN_ACC,
128 WPAD_FMT_CLASSIC_BTN_ACC_DPD,
130 WPAD_FMT_BTN_ACC_DPD_EXTENDED,
134 WPAD_DEV_MODE_NORMAL,
135 WPAD_DEV_MODE_CLASSIC_REDUCED,
136 WPAD_DEV_MODE_CLASSIC_EXTENDED,
137 WPAD_DEV_MODE_CLASSIC_STANDARD,
155 WPAD_DPD_DISABLE = 0x00,
156 WPAD_DPD_BASIC = 0x01,
157 WPAD_DPD_STANDARD = 0x03,
158 WPAD_DPD_EXTENDED = 0x05,
162 WPAD_SENSOR_BAR_BOTTOM = SC_SENSOR_BAR_BOTTOM,
163 WPAD_SENSOR_BAR_TOP = SC_SENSOR_BAR_TOP
167 WPAD_MOTOR_OFF = SC_MOTOR_OFF,
168 WPAD_MOTOR_ON = SC_MOTOR_ON
172 WPAD_ACC_GRAVITY_UNIT_CORE,
173 WPAD_ACC_GRAVITY_UNIT_FS,
174} WPADAccGravityUnitType;
267void WPADShutdown(
void);
269BOOL WPADStartSimpleSync(
void);
270BOOL WPADStartFastSimpleSync(
void);
271BOOL WPADStopSimpleSync(
void);
272BOOL WPADStartClearDevice(
void);
274WPADSyncDeviceCallback
275WPADSetSimpleSyncCallback(WPADSyncDeviceCallback pCallback);
277WPADClearDeviceCallback
278WPADSetClearDeviceCallback(WPADClearDeviceCallback pCallback);
280void WPADRegisterAllocator(WPADAllocFunc pAllocFunc, WPADFreeFunc pFreeFunc);
281u32 WPADGetWorkMemorySize(
void);
283WPADLibStatus WPADGetStatus(
void);
284void WPADGetAddress(s32 chan, BD_ADDR_PTR pAddr);
285u8 WPADGetSensorBarPosition(
void);
289void WPADDisconnect(s32 chan);
290s32 WPADProbe(s32 chan, s32* pDevType);
292WPADSamplingCallback WPADSetSamplingCallback(s32 chan,
293 WPADSamplingCallback pCallback);
294WPADConnectCallback WPADSetConnectCallback(s32 chan,
295 WPADConnectCallback pCallback);
296WPADExtensionCallback WPADSetExtensionCallback(s32 chan,
297 WPADExtensionCallback pCallback);
299u32 WPADGetDataFormat(s32 chan);
300s32 WPADSetDataFormat(s32 chan, u32 format);
302s32 WPADGetInfoAsync(s32 chan,
WPADInfo* pInfo, WPADCallback pCallback);
304void WPADControlMotor(s32 chan, u32 command);
305void WPADEnableMotor(BOOL enable);
306BOOL WPADIsMotorEnabled(
void);
308s32 WPADControlLed(s32 chan, u8 flags, WPADCallback pCallback);
310BOOL WPADSaveConfig(WPADSaveCallback pCallback);
313void WPADSetAutoSamplingBuf(s32 chan,
void* pBuffer, u32 len);
315BOOL WPADIsSpeakerEnabled(s32 chan);
316s32 WPADControlSpeaker(s32 chan, u32 command, WPADCallback pCallback);
317u8 WPADGetSpeakerVolume(
void);
318void WPADSetSpeakerVolume(u8 volume);
320BOOL WPADCanSendStreamData(s32 chan);
321s32 WPADSendStreamData(s32 chan,
void* pData, u16 len);
323u8 WPADGetDpdSensitivity(
void);
324BOOL WPADSetSensorBarPower(BOOL enable);
325BOOL WPADIsDpdEnabled(s32 chan);
326s32 WPADControlDpd(s32 chan, u32 command, WPADCallback pCallback);
328void WPADRecalibrate(s32 chan);
332s32 WPADReadFaceData(s32 chan,
void* dst, u32 size, u32 src, WPADCallback cb);