diff options
Diffstat (limited to 'embassy-nrf/src/uarte.rs')
| -rw-r--r-- | embassy-nrf/src/uarte.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/embassy-nrf/src/uarte.rs b/embassy-nrf/src/uarte.rs index 63df1b682..4703c1a50 100644 --- a/embassy-nrf/src/uarte.rs +++ b/embassy-nrf/src/uarte.rs | |||
| @@ -53,7 +53,6 @@ impl Default for Config { | |||
| 53 | #[non_exhaustive] | 53 | #[non_exhaustive] |
| 54 | pub enum Error { | 54 | pub enum Error { |
| 55 | BufferTooLong, | 55 | BufferTooLong, |
| 56 | BufferZeroLength, | ||
| 57 | DMABufferNotInDataMemory, | 56 | DMABufferNotInDataMemory, |
| 58 | // TODO: add other error variants. | 57 | // TODO: add other error variants. |
| 59 | } | 58 | } |
| @@ -370,10 +369,11 @@ impl<'d, T: Instance> UarteTx<'d, T> { | |||
| 370 | } | 369 | } |
| 371 | 370 | ||
| 372 | pub async fn write_from_ram(&mut self, buffer: &[u8]) -> Result<(), Error> { | 371 | pub async fn write_from_ram(&mut self, buffer: &[u8]) -> Result<(), Error> { |
| 373 | slice_in_ram_or(buffer, Error::DMABufferNotInDataMemory)?; | ||
| 374 | if buffer.len() == 0 { | 372 | if buffer.len() == 0 { |
| 375 | return Err(Error::BufferZeroLength); | 373 | return Ok(()); |
| 376 | } | 374 | } |
| 375 | |||
| 376 | slice_in_ram_or(buffer, Error::DMABufferNotInDataMemory)?; | ||
| 377 | if buffer.len() > EASY_DMA_SIZE { | 377 | if buffer.len() > EASY_DMA_SIZE { |
| 378 | return Err(Error::BufferTooLong); | 378 | return Err(Error::BufferTooLong); |
| 379 | } | 379 | } |
| @@ -437,10 +437,11 @@ impl<'d, T: Instance> UarteTx<'d, T> { | |||
| 437 | } | 437 | } |
| 438 | 438 | ||
| 439 | pub fn blocking_write_from_ram(&mut self, buffer: &[u8]) -> Result<(), Error> { | 439 | pub fn blocking_write_from_ram(&mut self, buffer: &[u8]) -> Result<(), Error> { |
| 440 | slice_in_ram_or(buffer, Error::DMABufferNotInDataMemory)?; | ||
| 441 | if buffer.len() == 0 { | 440 | if buffer.len() == 0 { |
| 442 | return Err(Error::BufferZeroLength); | 441 | return Ok(()); |
| 443 | } | 442 | } |
| 443 | |||
| 444 | slice_in_ram_or(buffer, Error::DMABufferNotInDataMemory)?; | ||
| 444 | if buffer.len() > EASY_DMA_SIZE { | 445 | if buffer.len() > EASY_DMA_SIZE { |
| 445 | return Err(Error::BufferTooLong); | 446 | return Err(Error::BufferTooLong); |
| 446 | } | 447 | } |
| @@ -550,7 +551,7 @@ impl<'d, T: Instance> UarteRx<'d, T> { | |||
| 550 | 551 | ||
| 551 | pub async fn read(&mut self, buffer: &mut [u8]) -> Result<(), Error> { | 552 | pub async fn read(&mut self, buffer: &mut [u8]) -> Result<(), Error> { |
| 552 | if buffer.len() == 0 { | 553 | if buffer.len() == 0 { |
| 553 | return Err(Error::BufferZeroLength); | 554 | return Ok(()); |
| 554 | } | 555 | } |
| 555 | if buffer.len() > EASY_DMA_SIZE { | 556 | if buffer.len() > EASY_DMA_SIZE { |
| 556 | return Err(Error::BufferTooLong); | 557 | return Err(Error::BufferTooLong); |
| @@ -603,7 +604,7 @@ impl<'d, T: Instance> UarteRx<'d, T> { | |||
| 603 | 604 | ||
| 604 | pub fn blocking_read(&mut self, buffer: &mut [u8]) -> Result<(), Error> { | 605 | pub fn blocking_read(&mut self, buffer: &mut [u8]) -> Result<(), Error> { |
| 605 | if buffer.len() == 0 { | 606 | if buffer.len() == 0 { |
| 606 | return Err(Error::BufferZeroLength); | 607 | return Ok(()); |
| 607 | } | 608 | } |
| 608 | if buffer.len() > EASY_DMA_SIZE { | 609 | if buffer.len() > EASY_DMA_SIZE { |
| 609 | return Err(Error::BufferTooLong); | 610 | return Err(Error::BufferTooLong); |
| @@ -672,7 +673,7 @@ impl<'d, T: Instance, U: TimerInstance> UarteRxWithIdle<'d, T, U> { | |||
| 672 | 673 | ||
| 673 | pub async fn read_until_idle(&mut self, buffer: &mut [u8]) -> Result<usize, Error> { | 674 | pub async fn read_until_idle(&mut self, buffer: &mut [u8]) -> Result<usize, Error> { |
| 674 | if buffer.len() == 0 { | 675 | if buffer.len() == 0 { |
| 675 | return Err(Error::BufferZeroLength); | 676 | return Ok(0); |
| 676 | } | 677 | } |
| 677 | if buffer.len() > EASY_DMA_SIZE { | 678 | if buffer.len() > EASY_DMA_SIZE { |
| 678 | return Err(Error::BufferTooLong); | 679 | return Err(Error::BufferTooLong); |
| @@ -728,7 +729,7 @@ impl<'d, T: Instance, U: TimerInstance> UarteRxWithIdle<'d, T, U> { | |||
| 728 | 729 | ||
| 729 | pub fn blocking_read_until_idle(&mut self, buffer: &mut [u8]) -> Result<usize, Error> { | 730 | pub fn blocking_read_until_idle(&mut self, buffer: &mut [u8]) -> Result<usize, Error> { |
| 730 | if buffer.len() == 0 { | 731 | if buffer.len() == 0 { |
| 731 | return Err(Error::BufferZeroLength); | 732 | return Ok(0); |
| 732 | } | 733 | } |
| 733 | if buffer.len() > EASY_DMA_SIZE { | 734 | if buffer.len() > EASY_DMA_SIZE { |
| 734 | return Err(Error::BufferTooLong); | 735 | return Err(Error::BufferTooLong); |
| @@ -918,7 +919,6 @@ mod eh1 { | |||
| 918 | fn kind(&self) -> embedded_hal_1::serial::ErrorKind { | 919 | fn kind(&self) -> embedded_hal_1::serial::ErrorKind { |
| 919 | match *self { | 920 | match *self { |
| 920 | Self::BufferTooLong => embedded_hal_1::serial::ErrorKind::Other, | 921 | Self::BufferTooLong => embedded_hal_1::serial::ErrorKind::Other, |
| 921 | Self::BufferZeroLength => embedded_hal_1::serial::ErrorKind::Other, | ||
| 922 | Self::DMABufferNotInDataMemory => embedded_hal_1::serial::ErrorKind::Other, | 922 | Self::DMABufferNotInDataMemory => embedded_hal_1::serial::ErrorKind::Other, |
| 923 | } | 923 | } |
| 924 | } | 924 | } |
