aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-rp/src/uart/buffered.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/embassy-rp/src/uart/buffered.rs b/embassy-rp/src/uart/buffered.rs
index 1a573b311..c620ed08c 100644
--- a/embassy-rp/src/uart/buffered.rs
+++ b/embassy-rp/src/uart/buffered.rs
@@ -175,6 +175,10 @@ impl<'d, T: Instance> BufferedUartRx<'d, T> {
175 175
176 fn read<'a>(buf: &'a mut [u8]) -> impl Future<Output = Result<usize, Error>> + 'a { 176 fn read<'a>(buf: &'a mut [u8]) -> impl Future<Output = Result<usize, Error>> + 'a {
177 poll_fn(move |cx| { 177 poll_fn(move |cx| {
178 if buf.is_empty() {
179 return Poll::Ready(Ok(0));
180 }
181
178 let state = T::state(); 182 let state = T::state();
179 let mut rx_reader = unsafe { state.rx_buf.reader() }; 183 let mut rx_reader = unsafe { state.rx_buf.reader() };
180 let n = rx_reader.pop(|data| { 184 let n = rx_reader.pop(|data| {
@@ -202,6 +206,10 @@ impl<'d, T: Instance> BufferedUartRx<'d, T> {
202 } 206 }
203 207
204 pub fn blocking_read(&mut self, buf: &mut [u8]) -> Result<usize, Error> { 208 pub fn blocking_read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
209 if buf.is_empty() {
210 return Ok(0);
211 }
212
205 loop { 213 loop {
206 let state = T::state(); 214 let state = T::state();
207 let mut rx_reader = unsafe { state.rx_buf.reader() }; 215 let mut rx_reader = unsafe { state.rx_buf.reader() };
@@ -293,6 +301,10 @@ impl<'d, T: Instance> BufferedUartTx<'d, T> {
293 301
294 fn write<'a>(buf: &'a [u8]) -> impl Future<Output = Result<usize, Error>> + 'a { 302 fn write<'a>(buf: &'a [u8]) -> impl Future<Output = Result<usize, Error>> + 'a {
295 poll_fn(move |cx| { 303 poll_fn(move |cx| {
304 if buf.is_empty() {
305 return Poll::Ready(Ok(0));
306 }
307
296 let state = T::state(); 308 let state = T::state();
297 let mut tx_writer = unsafe { state.tx_buf.writer() }; 309 let mut tx_writer = unsafe { state.tx_buf.writer() };
298 let n = tx_writer.push(|data| { 310 let n = tx_writer.push(|data| {
@@ -327,6 +339,10 @@ impl<'d, T: Instance> BufferedUartTx<'d, T> {
327 } 339 }
328 340
329 pub fn blocking_write(&mut self, buf: &[u8]) -> Result<usize, Error> { 341 pub fn blocking_write(&mut self, buf: &[u8]) -> Result<usize, Error> {
342 if buf.is_empty() {
343 return Ok(0);
344 }
345
330 loop { 346 loop {
331 let state = T::state(); 347 let state = T::state();
332 let mut tx_writer = unsafe { state.tx_buf.writer() }; 348 let mut tx_writer = unsafe { state.tx_buf.writer() };