15#include <esp_intr_alloc.h>
17#include <soc/gpio_num.h>
19#include <joybus/bus.h>
24#define JOYBUS_ESP32(bus) ((struct joybus_esp32 *)(bus))
33#ifndef JOYBUS_ESP32_ISR_IRAM_SAFE
34#define JOYBUS_ESP32_ISR_IRAM_SAFE 0
37#if JOYBUS_ESP32_ISR_IRAM_SAFE && !JOYBUS_USE_RAM_FUNCS
38#error "JOYBUS_ESP32_ISR_IRAM_SAFE requires JOYBUS_USE_RAM_FUNCS"
52 uint8_t rmt_rx_mem_ch;
55 intr_handle_t rmt_intr;
63 uint32_t reply_floor_cycles;
70 const uint8_t *write_buf;
75 esp_timer_handle_t transfer_start_timer;
80 uint32_t last_transfer_cycles;
static struct joybus_esp32_config joybus_esp32_config_default(gpio_num_t gpio)
Build an ESP32 config with default values.
Definition esp32.h:114
int joybus_esp32_init(struct joybus_esp32 *esp32_bus, struct joybus_esp32_config config)
Initialize an ESP32 Joybus instance.
Definition joybus.c:735
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 an ESP32 Joybus instance.
Definition esp32.h:94
uint8_t rmt_rx_ch
RMT RX channel index (0-based among the chip's RX-capable channels).
Definition esp32.h:105
gpio_num_t gpio
GPIO pin to use for the Joybus data line (single bidirectional open-drain).
Definition esp32.h:96
uint8_t rmt_tx_ch
RMT TX channel index (0-based among the chip's TX-capable channels).
Definition esp32.h:102
uint32_t freq
Transmit frequency, in Hz.
Definition esp32.h:99
An ESP32 Joybus instance.
Definition esp32.h:86
A Joybus instance.
Definition bus.h:105