aboutsummaryrefslogtreecommitdiff
path: root/tests/rp/src/bin/uart_buffered.rs
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/rp/src/bin/uart_buffered.rs
parent82f7e104d90a6628d1873017ea5ef6a7afb3b3f7 (diff)
rp: remove take!, add bind_interrupts!
Diffstat (limited to 'tests/rp/src/bin/uart_buffered.rs')
-rw-r--r--tests/rp/src/bin/uart_buffered.rs20
1 files changed, 12 insertions, 8 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 {