embedded_io::ReadReady/WriteReady
not implemented for uart peripheral #836
Open
Description
I am working on a project where I need to do some non-blocking reading from the uart peripheral based on the embedded_io
traits. The regular Read
trait specifies a blocking read such that it will wait for at least one byte to be available to be read. If one wants to do a non-blocking read, you need to use the ReadReady
trait function read_ready
to first check if there is data available before doing the read.
However, only the Read
trait is implemented (in #727 and #781 ) for the split and unsplit peripherals, but not the ReadReady
trait. Is there a reason this has been left out?
It looks like the implementation could be quite simple, something like this for the Reader
split peripheral (not tested):
impl<D: UartDevice, P: ValidUartPinout<D>> embedded_io::ReadReady for Reader<D, P> {
fn read_ready(&mut self) -> Result<bool, Self::Error> {
Ok(is_readable(self.device))
}
}
Fixed in:
- RP2040 HAL (implement
embedded_io::ReadReady
andWriteReady
traits for uart peripheral #837) - RP235x HAL
Metadata
Assignees
Labels
No labels