aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorpennae <[email protected]>2023-05-15 15:21:05 +0200
committerpennae <[email protected]>2023-05-15 15:24:56 +0200
commit14a5d03af2a74eccaa9930bdf81eef43791a4b33 (patch)
tree3a0879c21cf09702c670b14672e62b940a2157f0 /tests
parent82f7e104d90a6628d1873017ea5ef6a7afb3b3f7 (diff)
rp: remove take!, add bind_interrupts!
Diffstat (limited to 'tests')
-rw-r--r--tests/rp/src/bin/uart_buffered.rs20
-rw-r--r--tests/rp/src/bin/uart_dma.rs20
-rw-r--r--tests/rp/src/bin/uart_upgrade.rs12
3 files changed, 32 insertions, 20 deletions
diff --git a/tests/rp/src/bin/uart_buffered.rs b/tests/rp/src/bin/uart_buffered.rs
index 1deb22ce6..1dcf57d07 100644
--- a/tests/rp/src/bin/uart_buffered.rs
+++ b/tests/rp/src/bin/uart_buffered.rs
@@ -4,13 +4,18 @@
4 4
5use defmt::{assert_eq, panic, *}; 5use defmt::{assert_eq, panic, *};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_rp::bind_interrupts;
7use embassy_rp::gpio::{Level, Output}; 8use embassy_rp::gpio::{Level, Output};
8use embassy_rp::interrupt; 9use embassy_rp::peripherals::UART0;
9use embassy_rp::uart::{BufferedUart, BufferedUartRx, Config, Error, Instance, Parity}; 10use embassy_rp::uart::{BufferedInterruptHandler, BufferedUart, BufferedUartRx, Config, Error, Instance, Parity};
10use embassy_time::{Duration, Timer}; 11use embassy_time::{Duration, Timer};
11use embedded_io::asynch::{Read, ReadExactError, Write}; 12use embedded_io::asynch::{Read, ReadExactError, Write};
12use {defmt_rtt as _, panic_probe as _}; 13use {defmt_rtt as _, panic_probe as _};
13 14
15bind_interrupts!(struct Irqs {
16 UART0_IRQ => BufferedInterruptHandler<UART0>;
17});
18
14async fn read<const N: usize>(uart: &mut BufferedUart<'_, impl Instance>) -> Result<[u8; N], Error> { 19async fn read<const N: usize>(uart: &mut BufferedUart<'_, impl Instance>) -> Result<[u8; N], Error> {
15 let mut buf = [255; N]; 20 let mut buf = [255; N];
16 match uart.read_exact(&mut buf).await { 21 match uart.read_exact(&mut buf).await {
@@ -60,13 +65,12 @@ async fn main(_spawner: Spawner) {
60 info!("Hello World!"); 65 info!("Hello World!");
61 66
62 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0); 67 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0);
63 let mut irq = interrupt::take!(UART0_IRQ);
64 68
65 { 69 {
66 let config = Config::default(); 70 let config = Config::default();
67 let tx_buf = &mut [0u8; 16]; 71 let tx_buf = &mut [0u8; 16];
68 let rx_buf = &mut [0u8; 16]; 72 let rx_buf = &mut [0u8; 16];
69 let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); 73 let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config);
70 74
71 // Make sure we send more bytes than fits in the FIFO, to test the actual 75 // Make sure we send more bytes than fits in the FIFO, to test the actual
72 // bufferedUart. 76 // bufferedUart.
@@ -86,7 +90,7 @@ async fn main(_spawner: Spawner) {
86 let config = Config::default(); 90 let config = Config::default();
87 let tx_buf = &mut [0u8; 16]; 91 let tx_buf = &mut [0u8; 16];
88 let rx_buf = &mut [0u8; 16]; 92 let rx_buf = &mut [0u8; 16];
89 let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); 93 let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config);
90 94
91 // Make sure we send more bytes than fits in the FIFO, to test the actual 95 // Make sure we send more bytes than fits in the FIFO, to test the actual
92 // bufferedUart. 96 // bufferedUart.
@@ -121,7 +125,7 @@ async fn main(_spawner: Spawner) {
121 config.baudrate = 1000; 125 config.baudrate = 1000;
122 let tx_buf = &mut [0u8; 16]; 126 let tx_buf = &mut [0u8; 16];
123 let rx_buf = &mut [0u8; 16]; 127 let rx_buf = &mut [0u8; 16];
124 let mut uart = BufferedUart::new(&mut uart, &mut irq, &mut tx, &mut rx, tx_buf, rx_buf, config); 128 let mut uart = BufferedUart::new(&mut uart, Irqs, &mut tx, &mut rx, tx_buf, rx_buf, config);
125 129
126 // break on empty buffer 130 // break on empty buffer
127 uart.send_break(20).await; 131 uart.send_break(20).await;
@@ -155,7 +159,7 @@ async fn main(_spawner: Spawner) {
155 config.baudrate = 1000; 159 config.baudrate = 1000;
156 config.parity = Parity::ParityEven; 160 config.parity = Parity::ParityEven;
157 let rx_buf = &mut [0u8; 16]; 161 let rx_buf = &mut [0u8; 16];
158 let mut uart = BufferedUartRx::new(&mut uart, &mut irq, &mut rx, rx_buf, config); 162 let mut uart = BufferedUartRx::new(&mut uart, Irqs, &mut rx, rx_buf, config);
159 163
160 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) { 164 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) {
161 send(pin, v, Some(parity != 0)).await; 165 send(pin, v, Some(parity != 0)).await;
@@ -202,7 +206,7 @@ async fn main(_spawner: Spawner) {
202 let mut config = Config::default(); 206 let mut config = Config::default();
203 config.baudrate = 1000; 207 config.baudrate = 1000;
204 let rx_buf = &mut [0u8; 16]; 208 let rx_buf = &mut [0u8; 16];
205 let mut uart = BufferedUartRx::new(&mut uart, &mut irq, &mut rx, rx_buf, config); 209 let mut uart = BufferedUartRx::new(&mut uart, Irqs, &mut rx, rx_buf, config);
206 210
207 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) { 211 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) {
208 if good { 212 if good {
diff --git a/tests/rp/src/bin/uart_dma.rs b/tests/rp/src/bin/uart_dma.rs
index 52f42e582..75be76eda 100644
--- a/tests/rp/src/bin/uart_dma.rs
+++ b/tests/rp/src/bin/uart_dma.rs
@@ -4,12 +4,17 @@
4 4
5use defmt::{assert_eq, *}; 5use defmt::{assert_eq, *};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_rp::bind_interrupts;
7use embassy_rp::gpio::{Level, Output}; 8use embassy_rp::gpio::{Level, Output};
8use embassy_rp::interrupt; 9use embassy_rp::peripherals::UART0;
9use embassy_rp::uart::{Async, Config, Error, Instance, Parity, Uart, UartRx}; 10use embassy_rp::uart::{Async, Config, Error, Instance, InterruptHandler, Parity, Uart, UartRx};
10use embassy_time::{Duration, Timer}; 11use embassy_time::{Duration, Timer};
11use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
12 13
14bind_interrupts!(struct Irqs {
15 UART0_IRQ => InterruptHandler<UART0>;
16});
17
13async fn read<const N: usize>(uart: &mut Uart<'_, impl Instance, Async>) -> Result<[u8; N], Error> { 18async fn read<const N: usize>(uart: &mut Uart<'_, impl Instance, Async>) -> Result<[u8; N], Error> {
14 let mut buf = [255; N]; 19 let mut buf = [255; N];
15 uart.read(&mut buf).await?; 20 uart.read(&mut buf).await?;
@@ -51,7 +56,6 @@ async fn main(_spawner: Spawner) {
51 info!("Hello World!"); 56 info!("Hello World!");
52 57
53 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0); 58 let (mut tx, mut rx, mut uart) = (p.PIN_0, p.PIN_1, p.UART0);
54 let mut irq = interrupt::take!(UART0_IRQ);
55 59
56 // We can't send too many bytes, they have to fit in the FIFO. 60 // We can't send too many bytes, they have to fit in the FIFO.
57 // This is because we aren't sending+receiving at the same time. 61 // This is because we aren't sending+receiving at the same time.
@@ -61,7 +65,7 @@ async fn main(_spawner: Spawner) {
61 &mut uart, 65 &mut uart,
62 &mut tx, 66 &mut tx,
63 &mut rx, 67 &mut rx,
64 &mut irq, 68 Irqs,
65 &mut p.DMA_CH0, 69 &mut p.DMA_CH0,
66 &mut p.DMA_CH1, 70 &mut p.DMA_CH1,
67 config, 71 config,
@@ -82,7 +86,7 @@ async fn main(_spawner: Spawner) {
82 &mut uart, 86 &mut uart,
83 &mut tx, 87 &mut tx,
84 &mut rx, 88 &mut rx,
85 &mut irq, 89 Irqs,
86 &mut p.DMA_CH0, 90 &mut p.DMA_CH0,
87 &mut p.DMA_CH1, 91 &mut p.DMA_CH1,
88 config, 92 config,
@@ -111,7 +115,7 @@ async fn main(_spawner: Spawner) {
111 &mut uart, 115 &mut uart,
112 &mut tx, 116 &mut tx,
113 &mut rx, 117 &mut rx,
114 &mut irq, 118 Irqs,
115 &mut p.DMA_CH0, 119 &mut p.DMA_CH0,
116 &mut p.DMA_CH1, 120 &mut p.DMA_CH1,
117 config, 121 config,
@@ -154,7 +158,7 @@ async fn main(_spawner: Spawner) {
154 let mut config = Config::default(); 158 let mut config = Config::default();
155 config.baudrate = 1000; 159 config.baudrate = 1000;
156 config.parity = Parity::ParityEven; 160 config.parity = Parity::ParityEven;
157 let mut uart = UartRx::new(&mut uart, &mut rx, &mut irq, &mut p.DMA_CH0, config); 161 let mut uart = UartRx::new(&mut uart, &mut rx, Irqs, &mut p.DMA_CH0, config);
158 162
159 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) { 163 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, parity: u32) {
160 send(pin, v, Some(parity != 0)).await; 164 send(pin, v, Some(parity != 0)).await;
@@ -199,7 +203,7 @@ async fn main(_spawner: Spawner) {
199 // choose a very slow baud rate to make tests reliable even with O0 203 // choose a very slow baud rate to make tests reliable even with O0
200 let mut config = Config::default(); 204 let mut config = Config::default();
201 config.baudrate = 1000; 205 config.baudrate = 1000;
202 let mut uart = UartRx::new(&mut uart, &mut rx, &mut irq, &mut p.DMA_CH0, config); 206 let mut uart = UartRx::new(&mut uart, &mut rx, Irqs, &mut p.DMA_CH0, config);
203 207
204 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) { 208 async fn chr(pin: &mut Output<'_, impl embassy_rp::gpio::Pin>, v: u8, good: bool) {
205 if good { 209 if good {
diff --git a/tests/rp/src/bin/uart_upgrade.rs b/tests/rp/src/bin/uart_upgrade.rs
index d8c9aecf6..8605bb1c5 100644
--- a/tests/rp/src/bin/uart_upgrade.rs
+++ b/tests/rp/src/bin/uart_upgrade.rs
@@ -4,11 +4,16 @@
4 4
5use defmt::{assert_eq, *}; 5use defmt::{assert_eq, *};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_rp::interrupt; 7use embassy_rp::bind_interrupts;
8use embassy_rp::uart::{Config, Uart}; 8use embassy_rp::peripherals::UART0;
9use embassy_rp::uart::{BufferedInterruptHandler, Config, Uart};
9use embedded_io::asynch::{Read, Write}; 10use embedded_io::asynch::{Read, Write};
10use {defmt_rtt as _, panic_probe as _}; 11use {defmt_rtt as _, panic_probe as _};
11 12
13bind_interrupts!(struct Irqs {
14 UART0_IRQ => BufferedInterruptHandler<UART0>;
15});
16
12#[embassy_executor::main] 17#[embassy_executor::main]
13async fn main(_spawner: Spawner) { 18async fn main(_spawner: Spawner) {
14 let p = embassy_rp::init(Default::default()); 19 let p = embassy_rp::init(Default::default());
@@ -29,11 +34,10 @@ async fn main(_spawner: Spawner) {
29 uart.blocking_read(&mut buf).unwrap(); 34 uart.blocking_read(&mut buf).unwrap();
30 assert_eq!(buf, data); 35 assert_eq!(buf, data);
31 36
32 let irq = interrupt::take!(UART0_IRQ);
33 let tx_buf = &mut [0u8; 16]; 37 let tx_buf = &mut [0u8; 16];
34 let rx_buf = &mut [0u8; 16]; 38 let rx_buf = &mut [0u8; 16];
35 39
36 let mut uart = uart.into_buffered(irq, tx_buf, rx_buf); 40 let mut uart = uart.into_buffered(Irqs, tx_buf, rx_buf);
37 41
38 // Make sure we send more bytes than fits in the FIFO, to test the actual 42 // Make sure we send more bytes than fits in the FIFO, to test the actual
39 // bufferedUart. 43 // bufferedUart.