Reformat wpad.h

This commit is contained in:
James Benton 2018-06-18 10:04:53 +01:00
parent 75038273b5
commit 83583aa80b

View File

@ -10,103 +10,144 @@
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#define WPAD_EXT_CORE 0
#define WPAD_EXT_NUNCHUK 1
#define WPAD_EXT_CLASSIC 2
#define WPAD_EXT_MPLUS 5
#define WPAD_EXT_MPLUS_NUNCHUK 6
#define WPAD_EXT_MPLUS_CLASSIC 7
#define WPAD_EXT_PRO_CONTROLLER 31
#define WPAD_FMT_PRO_CONTROLLER 22 typedef struct WPADStatusProController WPADStatusProController;
typedef struct WPADVec2D WPADVec2D;
#define WPAD_BUTTON_LEFT 0x0001 typedef enum WPADChan
#define WPAD_BUTTON_RIGHT 0x0002 {
#define WPAD_BUTTON_DOWN 0x0004 WPAD_CHAN_0 = 0,
#define WPAD_BUTTON_UP 0x0008 WPAD_CHAN_1 = 1,
#define WPAD_BUTTON_PLUS 0x0010 WPAD_CHAN_2 = 2,
#define WPAD_BUTTON_2 0x0100 WPAD_CHAN_3 = 3,
#define WPAD_BUTTON_1 0x0200 } WPADChan;
#define WPAD_BUTTON_B 0x0400
#define WPAD_BUTTON_A 0x0800
#define WPAD_BUTTON_MINUS 0x1000
#define WPAD_BUTTON_Z 0x2000
#define WPAD_BUTTON_C 0x4000
#define WPAD_BUTTON_HOME 0x8000
#define WPAD_CLASSIC_BUTTON_UP 0x0001 typedef enum WPADDataFormat
#define WPAD_CLASSIC_BUTTON_LEFT 0x0002 {
#define WPAD_CLASSIC_BUTTON_ZR 0x0004 WPAD_FMT_PRO_CONTROLLER = 22,
#define WPAD_CLASSIC_BUTTON_X 0x0008 } WPADDataFormat;
#define WPAD_CLASSIC_BUTTON_A 0x0010
#define WPAD_CLASSIC_BUTTON_Y 0x0020
#define WPAD_CLASSIC_BUTTON_B 0x0040
#define WPAD_CLASSIC_BUTTON_ZL 0x0080
#define WPAD_CLASSIC_BUTTON_R 0x0200
#define WPAD_CLASSIC_BUTTON_PLUS 0x0400
#define WPAD_CLASSIC_BUTTON_HOME 0x0800
#define WPAD_CLASSIC_BUTTON_MINUS 0x1000
#define WPAD_CLASSIC_BUTTON_L 0x2000
#define WPAD_CLASSIC_BUTTON_DOWN 0x4000
#define WPAD_CLASSIC_BUTTON_RIGHT 0x8000
#define WPAD_PRO_BUTTON_UP 0x00000001 typedef enum WPADExtensionType
#define WPAD_PRO_BUTTON_LEFT 0x00000002 {
#define WPAD_PRO_TRIGGER_ZR 0x00000004 WPAD_EXT_CORE = 0,
#define WPAD_PRO_BUTTON_X 0x00000008 WPAD_EXT_NUNCHUK = 1,
#define WPAD_PRO_BUTTON_A 0x00000010 WPAD_EXT_CLASSIC = 2,
#define WPAD_PRO_BUTTON_Y 0x00000020 WPAD_EXT_MPLUS = 5,
#define WPAD_PRO_BUTTON_B 0x00000040 WPAD_EXT_MPLUS_NUNCHUK = 6,
#define WPAD_PRO_TRIGGER_ZL 0x00000080 WPAD_EXT_MPLUS_CLASSIC = 7,
#define WPAD_PRO_RESERVED 0x00000100 WPAD_EXT_PRO_CONTROLLER = 31,
#define WPAD_PRO_TRIGGER_R 0x00000200 } WPADExtensionType;
#define WPAD_PRO_BUTTON_PLUS 0x00000400
#define WPAD_PRO_BUTTON_HOME 0x00000800
#define WPAD_PRO_BUTTON_MINUS 0x00001000
#define WPAD_PRO_TRIGGER_L 0x00002000
#define WPAD_PRO_BUTTON_DOWN 0x00004000
#define WPAD_PRO_BUTTON_RIGHT 0x00008000
#define WPAD_PRO_BUTTON_STICK_R 0x00010000
#define WPAD_PRO_BUTTON_STICK_L 0x00020000
#define WPAD_PRO_STICK_L_EMULATION_UP 0x00200000
#define WPAD_PRO_STICK_L_EMULATION_DOWN 0x00100000
#define WPAD_PRO_STICK_L_EMULATION_LEFT 0x00040000
#define WPAD_PRO_STICK_L_EMULATION_RIGHT 0x00080000
#define WPAD_PRO_STICK_R_EMULATION_UP 0x02000000 typedef enum WPADButton
#define WPAD_PRO_STICK_R_EMULATION_DOWN 0x01000000 {
#define WPAD_PRO_STICK_R_EMULATION_LEFT 0x00400000 WPAD_BUTTON_LEFT = 0x0001,
#define WPAD_PRO_STICK_R_EMULATION_RIGHT 0x00800000 WPAD_BUTTON_RIGHT = 0x0002,
WPAD_BUTTON_DOWN = 0x0004,
WPAD_BUTTON_UP = 0x0008,
WPAD_BUTTON_PLUS = 0x0010,
WPAD_BUTTON_2 = 0x0100,
WPAD_BUTTON_1 = 0x0200,
WPAD_BUTTON_B = 0x0400,
WPAD_BUTTON_A = 0x0800,
WPAD_BUTTON_MINUS = 0x1000,
WPAD_BUTTON_Z = 0x2000,
WPAD_BUTTON_C = 0x4000,
WPAD_BUTTON_HOME = 0x8000,
} WPADButton;
typedef struct { typedef enum WPADClassicButton
f32 x,y; {
} WPADVec2D; WPAD_CLASSIC_BUTTON_UP = 0x0001,
WPAD_CLASSIC_BUTTON_LEFT = 0x0002,
WPAD_CLASSIC_BUTTON_ZR = 0x0004,
WPAD_CLASSIC_BUTTON_X = 0x0008,
WPAD_CLASSIC_BUTTON_A = 0x0010,
WPAD_CLASSIC_BUTTON_Y = 0x0020,
WPAD_CLASSIC_BUTTON_B = 0x0040,
WPAD_CLASSIC_BUTTON_ZL = 0x0080,
WPAD_CLASSIC_BUTTON_R = 0x0200,
WPAD_CLASSIC_BUTTON_PLUS = 0x0400,
WPAD_CLASSIC_BUTTON_HOME = 0x0800,
WPAD_CLASSIC_BUTTON_MINUS = 0x1000,
WPAD_CLASSIC_BUTTON_L = 0x2000,
WPAD_CLASSIC_BUTTON_DOWN = 0x4000,
WPAD_CLASSIC_BUTTON_RIGHT = 0x8000,
} WPADClassicButton;
typedef struct WPADReadData_ { typedef enum WPADProButton
uint8_t unknown[40]; {
uint8_t dev; WPAD_PRO_BUTTON_UP = 0x00000001,
uint8_t err; WPAD_PRO_BUTTON_LEFT = 0x00000002,
uint8_t unknown1[2]; WPAD_PRO_TRIGGER_ZR = 0x00000004,
uint32_t buttons; WPAD_PRO_BUTTON_X = 0x00000008,
WPADVec2D leftStick; WPAD_PRO_BUTTON_A = 0x00000010,
WPADVec2D rightStick; WPAD_PRO_BUTTON_Y = 0x00000020,
uint8_t unknown2[8]; WPAD_PRO_BUTTON_B = 0x00000040,
uint8_t fmt; WPAD_PRO_TRIGGER_ZL = 0x00000080,
}WPADReadData; WPAD_PRO_RESERVED = 0x00000100,
WPAD_PRO_TRIGGER_R = 0x00000200,
WPAD_PRO_BUTTON_PLUS = 0x00000400,
WPAD_PRO_BUTTON_HOME = 0x00000800,
WPAD_PRO_BUTTON_MINUS = 0x00001000,
WPAD_PRO_TRIGGER_L = 0x00002000,
WPAD_PRO_BUTTON_DOWN = 0x00004000,
WPAD_PRO_BUTTON_RIGHT = 0x00008000,
WPAD_PRO_BUTTON_STICK_R = 0x00010000,
WPAD_PRO_BUTTON_STICK_L = 0x00020000,
WPAD_PRO_STICK_L_EMULATION_UP = 0x00200000,
WPAD_PRO_STICK_L_EMULATION_DOWN = 0x00100000,
WPAD_PRO_STICK_L_EMULATION_LEFT = 0x00040000,
WPAD_PRO_STICK_L_EMULATION_RIGHT = 0x00080000,
WPAD_PRO_STICK_R_EMULATION_UP = 0x02000000,
WPAD_PRO_STICK_R_EMULATION_DOWN = 0x01000000,
WPAD_PRO_STICK_R_EMULATION_LEFT = 0x00400000,
WPAD_PRO_STICK_R_EMULATION_RIGHT = 0x00800000,
} WPADProButton;
typedef void (* wpad_sampling_callback_t)(int32_t chan); struct WPADVec2D
typedef void (* wpad_extension_callback_t)(int32_t chan, int32_t status); {
typedef void (* wpad_connect_callback_t)(int32_t chan, int32_t status); int16_t x;
int16_t y;
};
CHECK_OFFSET(WPADVec2D, 0x00, x);
CHECK_OFFSET(WPADVec2D, 0x02, y);
CHECK_SIZE(WPADVec2D, 0x04);
struct WPADStatusProController
{
UNKNOWN(0x28);
//! A value from WPADExtensionType
uint8_t extensionType;
uint8_t err;
PADDING(2);
uint32_t buttons;
WPADVec2D leftStick;
WPADVec2D rightStick;
UNKNOWN(8);
WPADDataFormat dataFormat;
};
CHECK_OFFSET(WPADStatusProController, 0x28, extensionType);
CHECK_OFFSET(WPADStatusProController, 0x29, err);
CHECK_OFFSET(WPADStatusProController, 0x2C, buttons);
CHECK_OFFSET(WPADStatusProController, 0x30, leftStick);
CHECK_OFFSET(WPADStatusProController, 0x34, rightStick);
CHECK_OFFSET(WPADStatusProController, 0x40, dataFormat);
CHECK_SIZE(WPADStatusProController, 0x44);
typedef void (*WPADSamplingCallback)(WPADChan chan);
typedef void (*WPADExtensionCallback)(WPADChan chan, int32_t status);
typedef void (*WPADConnectCallback)(WPADChan chan, int32_t status);
int32_t int32_t
WPADProbe (int32_t chan, WPADProbe(WPADChan chan,
uint32_t * pad_type); WPADExtensionType *outExtensionType);
int32_t int32_t
WPADSetDataFormat(int32_t chan, WPADSetDataFormat(WPADChan chan,
int32_t format); WPADDataFormat format);
void void
WPADEnableURCC(int32_t enable); WPADEnableURCC(int32_t enable);
@ -114,7 +155,20 @@ void
WPADEnableWiiRemote(int32_t enable); WPADEnableWiiRemote(int32_t enable);
void void
WPADRead(int32_t chan, void * data); WPADRead(WPADChan chan,
void *data);
WPADConnectCallback
WPADSetConnectCallback(WPADChan chan,
WPADConnectCallback callback);
WPADExtensionCallback
WPADSetExtensionCallback(WPADChan chan,
WPADExtensionCallback callback);
WPADSamplingCallback
WPADSetSamplingCallback(WPADChan chan,
WPADSamplingCallback callback);
#ifdef __cplusplus #ifdef __cplusplus
} }