libjoybus
Joybus implementation for 32-bit MCUs
Loading...
Searching...
No Matches
rp2xxx.h
1
8
9#pragma once
10
11#include <hardware/pio.h>
12#include <pico/time.h>
13
14#include <joybus/bus.h>
15
19#define JOYBUS_RP2XXX(bus) ((struct joybus_rp2xxx *)(bus))
20
21// Private implementation details - do not access directly
23 // Bus state
24 uint8_t state;
25
26 // Bus frequencies
27 uint32_t target_freq;
28 uint32_t host_freq;
29
30 // GPIO configuration
31 uint gpio;
32
33 // PIO instance and state machine
34 PIO pio;
35 uint pio_sm;
36 uint8_t pio_sm_mode;
37
38 // DMA configuration
39 uint dma_chan_tx;
40 uint dma_chan_rx;
41
42 // RX/TX state
43 uint8_t *read_buf;
44 uint8_t read_len;
45 uint8_t read_count;
46 uint8_t *write_buf;
47 uint8_t write_len;
48 alarm_id_t rx_timeout_alarm;
49
50 // Transfer state
51 joybus_transfer_cb_t done_callback;
52 void *done_user_data;
53 absolute_time_t last_transfer_time;
54 alarm_id_t transfer_start_alarm;
55};
56
61 struct joybus base;
62 struct joybus_rp2xxx_data data;
63};
64
73int joybus_rp2xxx_init(struct joybus_rp2xxx *rp2xxx_bus, uint8_t gpio, PIO pio);
74
int joybus_rp2xxx_init(struct joybus_rp2xxx *rp2xxx_bus, uint8_t gpio, PIO pio)
Initialize a RP2xxx Joybus instance.
Definition joybus.c:427
void(* joybus_transfer_cb_t)(struct joybus *bus, int result, void *user_data)
Function type for transfer completion callbacks.
Definition bus.h:44
Definition rp2xxx.h:22
A RP2xxx Joybus instance.
Definition rp2xxx.h:60
A Joybus instance.
Definition bus.h:59