15#include <esp_intr_alloc.h>
17#include <driver/gpio.h>
19#include <joybus/bus.h>
24#define JOYBUS_ESP32(bus) ((struct joybus_esp32 *)(bus))
37 uint8_t rmt_rx_mem_ch;
40 intr_handle_t rmt_intr;
48 uint32_t reply_floor_cycles;
55 const uint8_t *write_buf;
60 esp_timer_handle_t transfer_start_timer;
65 int64_t last_transfer_us;
static struct joybus_esp32_config joybus_esp32_config_default(gpio_num_t gpio)
Build an ESP32 config with default values.
Definition esp32.h:99
int joybus_esp32_init(struct joybus_esp32 *esp32_bus, struct joybus_esp32_config config)
Initialize an ESP32 Joybus instance.
Definition joybus.c:668
void(* joybus_transfer_cb)(struct joybus *bus, int status, void *user_data)
Function type for transfer completion callbacks.
Definition bus.h:88
#define JOYBUS_FREQ_NOMINAL
Nominal Joybus frequency, matching an OEM N64/GameCube controller.
Definition bus.h:17
Configuration for an ESP32 Joybus instance.
Definition esp32.h:79
uint8_t rmt_rx_ch
RMT RX channel index (0-based among the chip's RX-capable channels).
Definition esp32.h:90
gpio_num_t gpio
GPIO pin to use for the Joybus data line (single bidirectional open-drain).
Definition esp32.h:81
uint8_t rmt_tx_ch
RMT TX channel index (0-based among the chip's TX-capable channels).
Definition esp32.h:87
uint32_t freq
Transmit frequency, in Hz.
Definition esp32.h:84
An ESP32 Joybus instance.
Definition esp32.h:71
A Joybus instance.
Definition bus.h:108