fix: Check buffer full before pop_done()
This commit is contained in:
parent
c52f56785f
commit
519bd86467
@ -911,12 +911,13 @@ impl<'d> embedded_hal_02::serial::Read<u8> for BufferedUartRx<'d> {
|
|||||||
let state = self.state;
|
let state = self.state;
|
||||||
let mut rx_reader = unsafe { state.rx_buf.reader() };
|
let mut rx_reader = unsafe { state.rx_buf.reader() };
|
||||||
|
|
||||||
|
let do_pend = state.rx_buf.is_full();
|
||||||
if let Some(data) = rx_reader.pop_one() {
|
if let Some(data) = rx_reader.pop_one() {
|
||||||
Ok(data)
|
if do_pend {
|
||||||
} else {
|
|
||||||
if state.rx_buf.is_full() {
|
|
||||||
self.info.interrupt.pend();
|
self.info.interrupt.pend();
|
||||||
}
|
}
|
||||||
|
Ok(data)
|
||||||
|
} else {
|
||||||
Err(nb::Error::WouldBlock)
|
Err(nb::Error::WouldBlock)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user