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