mirror of https://github.com/zeldaret/tp.git
84 lines
2.0 KiB
C
84 lines
2.0 KiB
C
#ifndef PAD_H
|
|
#define PAD_H
|
|
|
|
#include "dolphin/types.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct OSContext OSContext;
|
|
|
|
typedef enum PADMask {
|
|
PAD_CHAN3_BIT = (1 << 28),
|
|
PAD_CHAN2_BIT = (1 << 29),
|
|
PAD_CHAN1_BIT = (1 << 30),
|
|
PAD_CHAN0_BIT = (1 << 31),
|
|
} PADMask;
|
|
|
|
#define PAD_SPEC_0 0
|
|
#define PAD_SPEC_1 1
|
|
#define PAD_SPEC_2 2
|
|
#define PAD_SPEC_3 3
|
|
#define PAD_SPEC_4 4
|
|
#define PAD_SPEC_5 5
|
|
|
|
#define PAD_MOTOR_STOP 0
|
|
#define PAD_MOTOR_RUMBLE 1
|
|
#define PAD_MOTOR_STOP_HARD 2
|
|
|
|
#define PAD_ERR_NONE 0
|
|
#define PAD_ERR_NO_CONTROLLER -1
|
|
#define PAD_ERR_NOT_READY -2
|
|
#define PAD_ERR_TRANSFER -3
|
|
|
|
#define PAD_BUTTON_LEFT 0x0001
|
|
#define PAD_BUTTON_RIGHT 0x0002
|
|
#define PAD_BUTTON_DOWN 0x0004
|
|
#define PAD_BUTTON_UP 0x0008
|
|
#define PAD_TRIGGER_Z 0x0010
|
|
#define PAD_TRIGGER_R 0x0020
|
|
#define PAD_TRIGGER_L 0x0040
|
|
#define PAD_BUTTON_A 0x0100
|
|
#define PAD_BUTTON_B 0x0200
|
|
#define PAD_BUTTON_X 0x0400
|
|
#define PAD_BUTTON_Y 0x0800
|
|
#define PAD_BUTTON_MENU 0x1000
|
|
#define PAD_BUTTON_START 0x1000
|
|
|
|
typedef struct PADStatus {
|
|
/* 0x0 */ u16 button;
|
|
/* 0x2 */ s8 stick_x;
|
|
/* 0x3 */ s8 stick_y;
|
|
/* 0x4 */ s8 substick_x;
|
|
/* 0x5 */ s8 substick_y;
|
|
/* 0x6 */ u8 trigger_left;
|
|
/* 0x7 */ u8 trigger_right;
|
|
/* 0x8 */ u8 analog_a;
|
|
/* 0x9 */ u8 analog_b;
|
|
/* 0xA */ s8 error;
|
|
} PADStatus;
|
|
|
|
typedef void (*PADSamplingCallback)(void);
|
|
|
|
BOOL PADInit(void);
|
|
void PADSetAnalogMode(u32 mode);
|
|
void PADSetSpec(u32 spec);
|
|
BOOL PADReset(u32 mask);
|
|
void PADClampCircle(PADStatus* status);
|
|
void PADClamp(PADStatus* status);
|
|
u32 PADRead(PADStatus* status);
|
|
void PADControlMotor(s32 channel, u32 command);
|
|
BOOL PADRecalibrate(u32 mask);
|
|
static void PADOriginCallback(s32 chan, u32 error, OSContext* context);
|
|
static void PADOriginUpdateCallback(s32 chan, u32 error, OSContext* context);
|
|
static void PADProbeCallback(s32 chan, u32 error, OSContext* context);
|
|
static void PADTypeAndStatusCallback(s32 chan, u32 type);
|
|
static void PADReceiveCheckCallback(s32 chan, u32 type);
|
|
|
|
#ifdef __cplusplus
|
|
};
|
|
#endif
|
|
|
|
#endif /* PAD_H */
|