stm32/test: workaround #1426

This commit is contained in:
Dario Nieuwenhuis 2023-05-02 19:35:02 +02:00
parent 2bb6e93e86
commit 1078f6f4e7
2 changed files with 8 additions and 2 deletions

View File

@ -94,6 +94,9 @@ async fn main(_spawner: Spawner) {
let rx_fut = async { let rx_fut = async {
rx.read(&mut rx_buf).await.unwrap(); rx.read(&mut rx_buf).await.unwrap();
}; };
// note: rx needs to be polled first, to workaround this bug:
// https://github.com/embassy-rs/embassy/issues/1426
join(rx_fut, tx_fut).await; join(rx_fut, tx_fut).await;
assert_eq!(tx_buf, rx_buf); assert_eq!(tx_buf, rx_buf);

View File

@ -145,13 +145,16 @@ async fn main(spawner: Spawner) {
#[embassy_executor::task] #[embassy_executor::task]
async fn transmit_task(mut tx: UartTx<'static, board::Uart, board::TxDma>) { async fn transmit_task(mut tx: UartTx<'static, board::Uart, board::TxDma>) {
// workaround https://github.com/embassy-rs/embassy/issues/1426
Timer::after(Duration::from_millis(100) as _).await;
let mut rng = ChaCha8Rng::seed_from_u64(1337); let mut rng = ChaCha8Rng::seed_from_u64(1337);
info!("Starting random transmissions into void..."); info!("Starting random transmissions into void...");
let mut i: u8 = 0; let mut i: u8 = 0;
loop { loop {
let mut buf = [0; 32]; let mut buf = [0; 256];
let len = 1 + (rng.next_u32() as usize % buf.len()); let len = 1 + (rng.next_u32() as usize % buf.len());
for b in &mut buf[..len] { for b in &mut buf[..len] {
*b = i; *b = i;
@ -172,7 +175,7 @@ async fn receive_task(mut rx: RingBufferedUartRx<'static, board::Uart, board::Rx
let mut i = 0; let mut i = 0;
let mut expected = 0; let mut expected = 0;
loop { loop {
let mut buf = [0; 100]; let mut buf = [0; 256];
let max_len = 1 + (rng.next_u32() as usize % buf.len()); let max_len = 1 + (rng.next_u32() as usize % buf.len());
let received = match rx.read(&mut buf[..max_len]).await { let received = match rx.read(&mut buf[..max_len]).await {
Ok(r) => r, Ok(r) => r,