29#include <EASTL/functional.h>
123 void setOnEvent(eastl::function<
void(
Event)>&& callback) { m_callback = eastl::move(callback); }
147 return (m_padData[
toUnderlying(pad)].buttons & (1 << button)) == 0;
167 return index <= 7 ? m_padData[padIndex].adc[index] : 0;
202 enum Command : uint8_t {
206 ToggleConfigMode = 0x43,
211 GetMotorState = 0x48,
212 GetSupportedModes = 0x4c,
213 ConfigRequestFormat = 0x4d,
214 ConfigResponseFormat = 0x4f,
217 void busyLoop(
unsigned delay) {
219 while (++cycles < delay)
asm(
"");
222 void configurePort(uint8_t port);
224 void flushRxBuffer();
225 uint8_t outputDefault(
unsigned ticks);
226 uint8_t outputMultitap(
unsigned ticks);
227 void processChanges(
Pad pad);
229 uint8_t transceive(uint8_t dataOut);
242 PadData m_padData[8];
243 eastl::function<
void(Event)> m_callback;
244 bool m_connected[8] = {
false,
false,
false,
false,
false,
false,
false,
false};
245 uint16_t m_buttons[8] = {
246 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
248 uint8_t m_portToProbe = 0;
249 uint8_t m_portsToProbeByVSync = 0;
An advanced class to access the pads.
Definition advancedpad.hh:45
PadType
Definition advancedpad.hh:68
@ JogCon
Definition advancedpad.hh:77
@ None
Definition advancedpad.hh:80
@ Mouse
Definition advancedpad.hh:69
@ NamcoLightGun
Definition advancedpad.hh:74
@ DigitalPad
Definition advancedpad.hh:72
@ NegCon
Definition advancedpad.hh:70
@ AnalogStick
Definition advancedpad.hh:73
@ Multitap
Definition advancedpad.hh:76
@ KonamiLightgun
Definition advancedpad.hh:71
@ ConfigMode
Definition advancedpad.hh:79
@ AnalogPad
Definition advancedpad.hh:75
@ FishingCon
Definition advancedpad.hh:78
PollingMode
Initializes the pads.
Definition advancedpad.hh:102
Pad
Definition advancedpad.hh:47
uint8_t getAdc(Pad pad, unsigned int index) const
Returns the state of an Analog Input.
Definition advancedpad.hh:164
Button
Definition advancedpad.hh:49
@ Up
Definition advancedpad.hh:54
@ Select
Definition advancedpad.hh:50
@ L3
Definition advancedpad.hh:51
@ L1
Definition advancedpad.hh:60
@ Circle
Definition advancedpad.hh:63
@ R2
Definition advancedpad.hh:59
@ Triangle
Definition advancedpad.hh:62
@ Cross
Definition advancedpad.hh:64
@ Square
Definition advancedpad.hh:65
@ Right
Definition advancedpad.hh:55
@ Left
Definition advancedpad.hh:57
@ Start
Definition advancedpad.hh:53
@ R1
Definition advancedpad.hh:61
@ Down
Definition advancedpad.hh:56
@ L2
Definition advancedpad.hh:58
@ R3
Definition advancedpad.hh:52
bool isPadConnected(Pad pad) const
Returns the state of a pad.
Definition advancedpad.hh:134
bool isButtonPressed(Pad pad, Button button) const
Returns the state of a button.
Definition advancedpad.hh:146
uint8_t getPadType(Pad pad) const
Returns the type of the pad.
Definition advancedpad.hh:199
void setOnEvent(eastl::function< void(Event)> &&callback)
Sets the event callback function.
Definition advancedpad.hh:123
uint16_t getHalfword(Pad pad, unsigned int index) const
Returns raw pad data as an unsigned 16-bit value.
Definition advancedpad.hh:187
void initialize(PollingMode mode=PollingMode::Normal)
Definition advancedpad.cpp:37
Definition cdrom-loader.hh:39
psyqo::AdvancedPad::Pad & operator++(psyqo::AdvancedPad::Pad &pad)
Definition advancedpad.hh:253
psyqo::AdvancedPad::Pad & operator--(psyqo::AdvancedPad::Pad &pad)
Definition advancedpad.hh:265
constexpr std::underlying_type_t< E > toUnderlying(E v)
Definition utility-polyfill.h:38
Definition advancedpad.hh:83
Button button
Definition advancedpad.hh:86
Pad pad
Definition advancedpad.hh:85
enum psyqo::AdvancedPad::Event::@16 type
@ PadConnected
Definition advancedpad.hh:84
@ PadDisconnected
Definition advancedpad.hh:84
@ ButtonPressed
Definition advancedpad.hh:84
@ ButtonReleased
Definition advancedpad.hh:84
static void uint32_t mode
Definition syscalls.h:230