aboutsummaryrefslogtreecommitdiff
path: root/tests/nrf52840/src/bin/buffered_uart.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2024-02-23 01:45:10 +0100
committerGitHub <[email protected]>2024-02-23 01:45:10 +0100
commita6a5d9913cda2ecfe89b63fa0bcf7afaebc2dac0 (patch)
tree14124a6f34d351a979cb110a0ce566b588f5d272 /tests/nrf52840/src/bin/buffered_uart.rs
parent5b7e2d88265b5633fa53047961598fbc38bffed0 (diff)
parent2855bb69680a42a721fe88168657ea1e634e8766 (diff)
Merge branch 'main' into stm32l0-reset-rtc
Diffstat (limited to 'tests/nrf52840/src/bin/buffered_uart.rs')
-rw-r--r--tests/nrf52840/src/bin/buffered_uart.rs87
1 files changed, 45 insertions, 42 deletions
diff --git a/tests/nrf52840/src/bin/buffered_uart.rs b/tests/nrf52840/src/bin/buffered_uart.rs
index 354d787b4..a01d66d85 100644
--- a/tests/nrf52840/src/bin/buffered_uart.rs
+++ b/tests/nrf52840/src/bin/buffered_uart.rs
@@ -15,7 +15,7 @@ bind_interrupts!(struct Irqs {
15 15
16#[embassy_executor::main] 16#[embassy_executor::main]
17async fn main(_spawner: Spawner) { 17async fn main(_spawner: Spawner) {
18 let p = embassy_nrf::init(Default::default()); 18 let mut p = embassy_nrf::init(Default::default());
19 let mut config = uarte::Config::default(); 19 let mut config = uarte::Config::default();
20 config.parity = uarte::Parity::EXCLUDED; 20 config.parity = uarte::Parity::EXCLUDED;
21 config.baudrate = uarte::Baudrate::BAUD1M; 21 config.baudrate = uarte::Baudrate::BAUD1M;
@@ -23,55 +23,58 @@ async fn main(_spawner: Spawner) {
23 let mut tx_buffer = [0u8; 1024]; 23 let mut tx_buffer = [0u8; 1024];
24 let mut rx_buffer = [0u8; 1024]; 24 let mut rx_buffer = [0u8; 1024];
25 25
26 let mut u = BufferedUarte::new( 26 // test teardown + recreate of the buffereduarte works fine.
27 p.UARTE0, 27 for _ in 0..2 {
28 p.TIMER0, 28 let u = BufferedUarte::new(
29 p.PPI_CH0, 29 &mut p.UARTE0,
30 p.PPI_CH1, 30 &mut p.TIMER0,
31 p.PPI_GROUP0, 31 &mut p.PPI_CH0,
32 Irqs, 32 &mut p.PPI_CH1,
33 p.P1_03, 33 &mut p.PPI_GROUP0,
34 p.P1_02, 34 Irqs,
35 config.clone(), 35 &mut p.P1_03,
36 &mut rx_buffer, 36 &mut p.P1_02,
37 &mut tx_buffer, 37 config.clone(),
38 ); 38 &mut rx_buffer,
39 &mut tx_buffer,
40 );
39 41
40 info!("uarte initialized!"); 42 info!("uarte initialized!");
41 43
42 let (mut rx, mut tx) = u.split(); 44 let (mut rx, mut tx) = u.split();
43 45
44 const COUNT: usize = 40_000; 46 const COUNT: usize = 40_000;
45 47
46 let tx_fut = async { 48 let tx_fut = async {
47 let mut tx_buf = [0; 215]; 49 let mut tx_buf = [0; 215];
48 let mut i = 0; 50 let mut i = 0;
49 while i < COUNT { 51 while i < COUNT {
50 let n = tx_buf.len().min(COUNT - i); 52 let n = tx_buf.len().min(COUNT - i);
51 let tx_buf = &mut tx_buf[..n]; 53 let tx_buf = &mut tx_buf[..n];
52 for (j, b) in tx_buf.iter_mut().enumerate() { 54 for (j, b) in tx_buf.iter_mut().enumerate() {
53 *b = (i + j) as u8; 55 *b = (i + j) as u8;
56 }
57 let n = unwrap!(tx.write(tx_buf).await);
58 i += n;
54 } 59 }
55 let n = unwrap!(tx.write(tx_buf).await); 60 };
56 i += n; 61 let rx_fut = async {
57 } 62 let mut i = 0;
58 }; 63 while i < COUNT {
59 let rx_fut = async { 64 let buf = unwrap!(rx.fill_buf().await);
60 let mut i = 0;
61 while i < COUNT {
62 let buf = unwrap!(rx.fill_buf().await);
63 65
64 for &b in buf { 66 for &b in buf {
65 assert_eq!(b, i as u8); 67 assert_eq!(b, i as u8);
66 i = i + 1; 68 i = i + 1;
67 } 69 }
68 70
69 let n = buf.len(); 71 let n = buf.len();
70 rx.consume(n); 72 rx.consume(n);
71 } 73 }
72 }; 74 };
73 75
74 join(rx_fut, tx_fut).await; 76 join(rx_fut, tx_fut).await;
77 }
75 78
76 info!("Test OK"); 79 info!("Test OK");
77 cortex_m::asm::bkpt(); 80 cortex_m::asm::bkpt();