Merge #1368
1368: AFIT cleanup r=Dirbaio a=Dirbaio bors r+ Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
This commit is contained in:
		@@ -131,48 +131,6 @@ where
 | 
			
		||||
    type Error = E;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(feature = "_todo_embedded_hal_serial")]
 | 
			
		||||
impl<T, E> embedded_hal_async::serial::Read for BlockingAsync<T>
 | 
			
		||||
where
 | 
			
		||||
    T: serial::Read<u8, Error = E>,
 | 
			
		||||
    E: embedded_hal_1::serial::Error + 'static,
 | 
			
		||||
{
 | 
			
		||||
    type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where T: 'a;
 | 
			
		||||
    fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
        async move {
 | 
			
		||||
            let mut pos = 0;
 | 
			
		||||
            while pos < buf.len() {
 | 
			
		||||
                match self.wrapped.read() {
 | 
			
		||||
                    Err(nb::Error::WouldBlock) => {}
 | 
			
		||||
                    Err(nb::Error::Other(e)) => return Err(e),
 | 
			
		||||
                    Ok(b) => {
 | 
			
		||||
                        buf[pos] = b;
 | 
			
		||||
                        pos += 1;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            Ok(())
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(feature = "_todo_embedded_hal_serial")]
 | 
			
		||||
impl<T, E> embedded_hal_async::serial::Write for BlockingAsync<T>
 | 
			
		||||
where
 | 
			
		||||
    T: blocking::serial::Write<u8, Error = E> + serial::Read<u8, Error = E>,
 | 
			
		||||
    E: embedded_hal_1::serial::Error + 'static,
 | 
			
		||||
{
 | 
			
		||||
    type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where T: 'a;
 | 
			
		||||
    fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
        async move { self.wrapped.bwrite_all(buf) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where T: 'a;
 | 
			
		||||
    fn flush(&mut self) -> Result<(), Self::Error> {
 | 
			
		||||
        async move { self.wrapped.bflush() }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// NOR flash wrapper
 | 
			
		||||
use embedded_storage::nor_flash::{ErrorType, NorFlash, ReadNorFlash};
 | 
			
		||||
use embedded_storage_async::nor_flash::{NorFlash as AsyncNorFlash, ReadNorFlash as AsyncReadNorFlash};
 | 
			
		||||
 
 | 
			
		||||
@@ -992,80 +992,3 @@ mod eh1 {
 | 
			
		||||
        type Error = Error;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(all(
 | 
			
		||||
    feature = "unstable-traits",
 | 
			
		||||
    feature = "nightly",
 | 
			
		||||
    feature = "_todo_embedded_hal_serial"
 | 
			
		||||
))]
 | 
			
		||||
mod eha {
 | 
			
		||||
    use core::future::Future;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Read for Uarte<'d, T> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buffer: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buffer)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Write for Uarte<'d, T> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buffer: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buffer)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush(&mut self) -> Result<(), Self::Error> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Write for UarteTx<'d, T> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buffer: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buffer)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush(&mut self) -> Result<(), Self::Error> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Read for UarteRx<'d, T> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buffer: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buffer)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, U: Instance, T: TimerInstance> embedded_hal_async::serial::Read for UarteWithIdle<'d, U, T> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buffer: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buffer)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, U: Instance, T: TimerInstance> embedded_hal_async::serial::Write for UarteWithIdle<'d, U, T> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buffer: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buffer)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush(&mut self) -> Result<(), Self::Error> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -726,58 +726,3 @@ mod eh1 {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(all(
 | 
			
		||||
    feature = "unstable-traits",
 | 
			
		||||
    feature = "nightly",
 | 
			
		||||
    feature = "_todo_embedded_hal_serial"
 | 
			
		||||
))]
 | 
			
		||||
mod eha {
 | 
			
		||||
    use core::future::Future;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Write for BufferedUartTx<'d, T> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            Self::write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            Self::flush()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Read for BufferedUartRx<'d, T> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            Self::read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Write for BufferedUart<'d, T> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            BufferedUartTx::<'d, T>::write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            BufferedUartTx::<'d, T>::flush()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance> embedded_hal_async::serial::Read for BufferedUart<'d, T> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            BufferedUartRx::<'d, T>::read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -651,61 +651,6 @@ mod eh1 {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(all(
 | 
			
		||||
    feature = "unstable-traits",
 | 
			
		||||
    feature = "nightly",
 | 
			
		||||
    feature = "_todo_embedded_hal_serial"
 | 
			
		||||
))]
 | 
			
		||||
mod eha {
 | 
			
		||||
    use core::future::Future;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance, M: Mode> embedded_hal_async::serial::Write for UartTx<'d, T, M> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance, M: Mode> embedded_hal_async::serial::Read for UartRx<'d, T, M> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance, M: Mode> embedded_hal_async::serial::Write for Uart<'d, T, M> {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: Instance, M: Mode> embedded_hal_async::serial::Read for Uart<'d, T, M> {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mod sealed {
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@ cortex-m = "0.7.6"
 | 
			
		||||
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
 | 
			
		||||
rand_core = "0.6.3"
 | 
			
		||||
sdio-host = "0.5.0"
 | 
			
		||||
embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "46d1b1c2ff13e31e282ec1e352421721694f126a", optional = true }
 | 
			
		||||
embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "a4f293d3a6f72158385f79c98634cb8a14d0d2fc", optional = true }
 | 
			
		||||
critical-section = "1.1"
 | 
			
		||||
atomic-polyfill = "1.0.1"
 | 
			
		||||
stm32-metapac = "6"
 | 
			
		||||
 
 | 
			
		||||
@@ -1651,8 +1651,6 @@ foreach_peripheral!(
 | 
			
		||||
 | 
			
		||||
#[cfg(feature = "embedded-sdmmc")]
 | 
			
		||||
mod sdmmc_rs {
 | 
			
		||||
    use core::future::Future;
 | 
			
		||||
 | 
			
		||||
    use embedded_sdmmc::{Block, BlockCount, BlockDevice, BlockIdx};
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
@@ -1660,49 +1658,37 @@ mod sdmmc_rs {
 | 
			
		||||
    impl<'d, T: Instance, Dma: SdmmcDma<T>> BlockDevice for Sdmmc<'d, T, Dma> {
 | 
			
		||||
        type Error = Error;
 | 
			
		||||
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a
 | 
			
		||||
        where
 | 
			
		||||
            Self: 'a;
 | 
			
		||||
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a
 | 
			
		||||
        where
 | 
			
		||||
            Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(
 | 
			
		||||
            &'a mut self,
 | 
			
		||||
            blocks: &'a mut [Block],
 | 
			
		||||
        async fn read(
 | 
			
		||||
            &mut self,
 | 
			
		||||
            blocks: &mut [Block],
 | 
			
		||||
            start_block_idx: BlockIdx,
 | 
			
		||||
            _reason: &str,
 | 
			
		||||
        ) -> Self::ReadFuture<'a> {
 | 
			
		||||
            async move {
 | 
			
		||||
                let mut address = start_block_idx.0;
 | 
			
		||||
        ) -> Result<(), Self::Error> {
 | 
			
		||||
            let mut address = start_block_idx.0;
 | 
			
		||||
 | 
			
		||||
                for block in blocks.iter_mut() {
 | 
			
		||||
                    let block: &mut [u8; 512] = &mut block.contents;
 | 
			
		||||
            for block in blocks.iter_mut() {
 | 
			
		||||
                let block: &mut [u8; 512] = &mut block.contents;
 | 
			
		||||
 | 
			
		||||
                    // NOTE(unsafe) Block uses align(4)
 | 
			
		||||
                    let block = unsafe { &mut *(block as *mut _ as *mut DataBlock) };
 | 
			
		||||
                    self.read_block(address, block).await?;
 | 
			
		||||
                    address += 1;
 | 
			
		||||
                }
 | 
			
		||||
                Ok(())
 | 
			
		||||
                // NOTE(unsafe) Block uses align(4)
 | 
			
		||||
                let block = unsafe { &mut *(block as *mut _ as *mut DataBlock) };
 | 
			
		||||
                self.read_block(address, block).await?;
 | 
			
		||||
                address += 1;
 | 
			
		||||
            }
 | 
			
		||||
            Ok(())
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, blocks: &'a [Block], start_block_idx: BlockIdx) -> Self::WriteFuture<'a> {
 | 
			
		||||
            async move {
 | 
			
		||||
                let mut address = start_block_idx.0;
 | 
			
		||||
        async fn write(&mut self, blocks: &[Block], start_block_idx: BlockIdx) -> Result<(), Self::Error> {
 | 
			
		||||
            let mut address = start_block_idx.0;
 | 
			
		||||
 | 
			
		||||
                for block in blocks.iter() {
 | 
			
		||||
                    let block: &[u8; 512] = &block.contents;
 | 
			
		||||
            for block in blocks.iter() {
 | 
			
		||||
                let block: &[u8; 512] = &block.contents;
 | 
			
		||||
 | 
			
		||||
                    // NOTE(unsafe) DataBlock uses align 4
 | 
			
		||||
                    let block = unsafe { &*(block as *const _ as *const DataBlock) };
 | 
			
		||||
                    self.write_block(address, block).await?;
 | 
			
		||||
                    address += 1;
 | 
			
		||||
                }
 | 
			
		||||
                Ok(())
 | 
			
		||||
                // NOTE(unsafe) DataBlock uses align 4
 | 
			
		||||
                let block = unsafe { &*(block as *const _ as *const DataBlock) };
 | 
			
		||||
                self.write_block(address, block).await?;
 | 
			
		||||
                address += 1;
 | 
			
		||||
            }
 | 
			
		||||
            Ok(())
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fn num_blocks(&self) -> Result<BlockCount, Self::Error> {
 | 
			
		||||
 
 | 
			
		||||
@@ -973,73 +973,6 @@ mod eio {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(all(
 | 
			
		||||
    feature = "unstable-traits",
 | 
			
		||||
    feature = "nightly",
 | 
			
		||||
    feature = "_todo_embedded_hal_serial"
 | 
			
		||||
))]
 | 
			
		||||
mod eha {
 | 
			
		||||
    use core::future::Future;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: BasicInstance, TxDma> embedded_hal_async::serial::Write for UartTx<'d, T, TxDma>
 | 
			
		||||
    where
 | 
			
		||||
        TxDma: crate::usart::TxDma<T>,
 | 
			
		||||
    {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: BasicInstance, RxDma> embedded_hal_async::serial::Read for UartRx<'d, T, RxDma>
 | 
			
		||||
    where
 | 
			
		||||
        RxDma: crate::usart::RxDma<T>,
 | 
			
		||||
    {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: BasicInstance, TxDma, RxDma> embedded_hal_async::serial::Write for Uart<'d, T, TxDma, RxDma>
 | 
			
		||||
    where
 | 
			
		||||
        TxDma: crate::usart::TxDma<T>,
 | 
			
		||||
    {
 | 
			
		||||
        type WriteFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn write<'a>(&'a mut self, buf: &'a [u8]) -> Self::WriteFuture<'a> {
 | 
			
		||||
            self.write(buf)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        type FlushFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn flush<'a>(&'a mut self) -> Self::FlushFuture<'a> {
 | 
			
		||||
            async move { Ok(()) }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    impl<'d, T: BasicInstance, TxDma, RxDma> embedded_hal_async::serial::Read for Uart<'d, T, TxDma, RxDma>
 | 
			
		||||
    where
 | 
			
		||||
        RxDma: crate::usart::RxDma<T>,
 | 
			
		||||
    {
 | 
			
		||||
        type ReadFuture<'a> = impl Future<Output = Result<(), Self::Error>> + 'a where Self: 'a;
 | 
			
		||||
 | 
			
		||||
        fn read<'a>(&'a mut self, buf: &'a mut [u8]) -> Self::ReadFuture<'a> {
 | 
			
		||||
            self.read(buf)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(feature = "nightly")]
 | 
			
		||||
pub use buffered::*;
 | 
			
		||||
#[cfg(feature = "nightly")]
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@ license = "MIT OR Apache-2.0"
 | 
			
		||||
embassy-sync = { version = "0.2.0", path = "../../embassy-sync", features = ["defmt"] }
 | 
			
		||||
embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers", "arch-cortex-m", "executor-thread", "executor-interrupt"] }
 | 
			
		||||
embassy-time = { version = "0.1.0", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "unstable-traits", "tick-hz-32_768"] }
 | 
			
		||||
embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti"]  }
 | 
			
		||||
embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = ["nightly", "unstable-traits", "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti", "embedded-sdmmc"]  }
 | 
			
		||||
embassy-usb = { version = "0.1.0", path = "../../embassy-usb", features = ["defmt"] }
 | 
			
		||||
embassy-net = { version = "0.1.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "nightly"] }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user