12#include <hardware/irq.h>
13#include <hardware/pio.h>
14#include <hardware/timer.h>
16#include <joybus/bus.h>
21#define JOYBUS_RP2XXX(bus) ((struct joybus_rp2xxx *)(bus))
54 void (*set_irq_handler)(uint irq_num, irq_handler_t handler);
57 uint64_t alarm_target_us;
58 void (*alarm_callback)(
void *user_data);
63 uint64_t last_transfer_us;
105 irq_set_exclusive_handler(irq_num, handler);
106 irq_set_enabled(irq_num,
true);
122 .timer = PICO_DEFAULT_TIMER_INSTANCE(),
int joybus_rp2xxx_init(struct joybus_rp2xxx *rp2xxx_bus, struct joybus_rp2xxx_config config)
Initialize a RP2xxx Joybus instance.
Definition joybus.c:551
static void joybus_rp2xxx_set_irq_handler_sdk(uint irq_num, irq_handler_t handler)
Install an interrupt handler through the pico-sdk.
Definition rp2xxx.h:103
static struct joybus_rp2xxx_config joybus_rp2xxx_config_default(uint8_t gpio)
Build a RP2xxx config with default values.
Definition rp2xxx.h:117
void(* joybus_transfer_cb)(struct joybus *bus, int status, void *user_data)
Function type for transfer completion callbacks.
Definition bus.h:85
#define JOYBUS_FREQ_NOMINAL
Nominal Joybus frequency, matching an OEM N64/GameCube controller.
Definition bus.h:17
Configuration for a RP2xxx Joybus instance.
Definition rp2xxx.h:77
uint8_t gpio
GPIO pin to use for the Joybus data line, 0 to 31.
Definition rp2xxx.h:79
uint alarm_num
Which of that timer's alarms to claim.
Definition rp2xxx.h:88
uint32_t freq
Transmit frequency, in Hz.
Definition rp2xxx.h:91
void(* set_irq_handler)(uint irq_num, irq_handler_t handler)
Installs an interrupt handler and enables the line.
Definition rp2xxx.h:94
timer_hw_t * timer
Timer instance the reply timeouts run on.
Definition rp2xxx.h:85
PIO pio
PIO instance to use (eg. pio0 or pio1)
Definition rp2xxx.h:82
A RP2xxx Joybus instance.
Definition rp2xxx.h:69
A Joybus instance.
Definition bus.h:105