29#include <EASTL/functional.h>
134 void setOnEvent(eastl::function<
void(
Event)>&& callback) { m_callback = eastl::move(callback); }
158 return (m_padData[
toUnderlying(pad)].buttons & (1 << button)) == 0;
178 return index <= 7 ? m_padData[padIndex].adc[index] : 0;
234 enum Command : uint8_t {
238 ToggleConfigMode = 0x43,
243 GetMotorState = 0x48,
244 GetSupportedModes = 0x4c,
245 ConfigRequestFormat = 0x4d,
246 ConfigResponseFormat = 0x4f,
249 void busyLoop(
unsigned delay) {
252 while (++cycles < delay)
asm(
"");
256 void configurePort(uint8_t port);
258 void flushRxBuffer();
259 uint8_t outputDefault(
unsigned ticks);
260 uint8_t outputMultitap(
unsigned ticks);
261 void processChanges(
Pad pad);
263 uint8_t transceive(uint8_t dataOut);
276 PadData m_padData[8];
277 eastl::function<void(Event)> m_callback;
278 bool m_connected[8] = {
false,
false,
false,
false,
false,
false,
false,
false};
279 uint16_t m_buttons[8] = {
280 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
282 uint8_t m_portToProbe = 0;
283 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
void setPollingMode(PollingMode mode)
Changes the polling mode after initialize.
Definition advancedpad.hh:114
uint8_t getAdc(Pad pad, unsigned int index) const
Returns the state of an Analog Input.
Definition advancedpad.hh:175
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:145
bool isButtonPressed(Pad pad, Button button) const
Returns the state of a button.
Definition advancedpad.hh:157
bool hasAnalog(Pad pad) const
Checks if the specified pad can do analog.
Definition advancedpad.hh:218
uint8_t getPadType(Pad pad) const
Returns the type of the pad.
Definition advancedpad.hh:210
void setOnEvent(eastl::function< void(Event)> &&callback)
Sets the event callback function.
Definition advancedpad.hh:134
uint16_t getHalfword(Pad pad, unsigned int index) const
Returns raw pad data as an unsigned 16-bit value.
Definition advancedpad.hh:198
void initialize(PollingMode mode=PollingMode::Normal)
Definition advancedpad.cpp:38
psyqo::AdvancedPad::Pad & operator++(psyqo::AdvancedPad::Pad &pad)
Definition advancedpad.hh:287
psyqo::AdvancedPad::Pad & operator--(psyqo::AdvancedPad::Pad &pad)
Definition advancedpad.hh:299
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::@30 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:274