aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-boot/src/boot_loader.rs8
-rw-r--r--embassy-nrf/src/buffered_uarte.rs18
-rw-r--r--embassy-stm32/src/usart/buffered.rs18
3 files changed, 40 insertions, 4 deletions
diff --git a/embassy-boot/src/boot_loader.rs b/embassy-boot/src/boot_loader.rs
index 789fa34c1..61d61b96e 100644
--- a/embassy-boot/src/boot_loader.rs
+++ b/embassy-boot/src/boot_loader.rs
@@ -236,10 +236,10 @@ impl<ACTIVE: NorFlash, DFU: NorFlash, STATE: NorFlash> BootLoader<ACTIVE, DFU, S
236 /// 236 ///
237 pub fn prepare_boot(&mut self, aligned_buf: &mut [u8]) -> Result<State, BootError> { 237 pub fn prepare_boot(&mut self, aligned_buf: &mut [u8]) -> Result<State, BootError> {
238 const { 238 const {
239 assert!(Self::PAGE_SIZE % ACTIVE::WRITE_SIZE as u32 == 0); 239 core::assert!(Self::PAGE_SIZE % ACTIVE::WRITE_SIZE as u32 == 0);
240 assert!(Self::PAGE_SIZE % ACTIVE::ERASE_SIZE as u32 == 0); 240 core::assert!(Self::PAGE_SIZE % ACTIVE::ERASE_SIZE as u32 == 0);
241 assert!(Self::PAGE_SIZE % DFU::WRITE_SIZE as u32 == 0); 241 core::assert!(Self::PAGE_SIZE % DFU::WRITE_SIZE as u32 == 0);
242 assert!(Self::PAGE_SIZE % DFU::ERASE_SIZE as u32 == 0); 242 core::assert!(Self::PAGE_SIZE % DFU::ERASE_SIZE as u32 == 0);
243 } 243 }
244 244
245 // Ensure we have enough progress pages to store copy progress 245 // Ensure we have enough progress pages to store copy progress
diff --git a/embassy-nrf/src/buffered_uarte.rs b/embassy-nrf/src/buffered_uarte.rs
index 8e4064aaa..b368a3d33 100644
--- a/embassy-nrf/src/buffered_uarte.rs
+++ b/embassy-nrf/src/buffered_uarte.rs
@@ -766,6 +766,12 @@ impl<'d, U: UarteInstance, T: TimerInstance> BufferedUarteRx<'d, U, T> {
766 rx.pop_done(amt); 766 rx.pop_done(amt);
767 U::regs().intenset.write(|w| w.rxstarted().set()); 767 U::regs().intenset.write(|w| w.rxstarted().set());
768 } 768 }
769
770 /// we are ready to read if there is data in the buffer
771 fn read_ready() -> Result<bool, Error> {
772 let state = U::buffered_state();
773 Ok(!state.rx_buf.is_empty())
774 }
769} 775}
770 776
771impl<'a, U: UarteInstance, T: TimerInstance> Drop for BufferedUarteRx<'a, U, T> { 777impl<'a, U: UarteInstance, T: TimerInstance> Drop for BufferedUarteRx<'a, U, T> {
@@ -827,6 +833,18 @@ mod _embedded_io {
827 } 833 }
828 } 834 }
829 835
836 impl<'d, U: UarteInstance, T: TimerInstance + 'd> embedded_io_async::ReadReady for BufferedUarte<'d, U, T> {
837 fn read_ready(&mut self) -> Result<bool, Self::Error> {
838 BufferedUarteRx::<'d, U, T>::read_ready()
839 }
840 }
841
842 impl<'d, U: UarteInstance, T: TimerInstance + 'd> embedded_io_async::ReadReady for BufferedUarteRx<'d, U, T> {
843 fn read_ready(&mut self) -> Result<bool, Self::Error> {
844 Self::read_ready()
845 }
846 }
847
830 impl<'d, U: UarteInstance, T: TimerInstance> embedded_io_async::BufRead for BufferedUarte<'d, U, T> { 848 impl<'d, U: UarteInstance, T: TimerInstance> embedded_io_async::BufRead for BufferedUarte<'d, U, T> {
831 async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> { 849 async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> {
832 self.fill_buf().await 850 self.fill_buf().await
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs
index 33bc009a8..06cc0e41d 100644
--- a/embassy-stm32/src/usart/buffered.rs
+++ b/embassy-stm32/src/usart/buffered.rs
@@ -436,6 +436,12 @@ impl<'d> BufferedUartRx<'d> {
436 } 436 }
437 } 437 }
438 438
439 /// we are ready to read if there is data in the buffer
440 fn read_ready(&mut self) -> Result<bool, Error> {
441 let state = self.state;
442 Ok(!state.rx_buf.is_empty())
443 }
444
439 /// Reconfigure the driver 445 /// Reconfigure the driver
440 pub fn set_config(&mut self, config: &Config) -> Result<(), ConfigError> { 446 pub fn set_config(&mut self, config: &Config) -> Result<(), ConfigError> {
441 reconfigure(self.info, self.kernel_clock, config)?; 447 reconfigure(self.info, self.kernel_clock, config)?;
@@ -610,6 +616,18 @@ impl<'d> embedded_io_async::Read for BufferedUartRx<'d> {
610 } 616 }
611} 617}
612 618
619impl<'d> embedded_io_async::ReadReady for BufferedUart<'d> {
620 fn read_ready(&mut self) -> Result<bool, Self::Error> {
621 BufferedUartRx::<'d>::read_ready(&mut self.rx)
622 }
623}
624
625impl<'d> embedded_io_async::ReadReady for BufferedUartRx<'d> {
626 fn read_ready(&mut self) -> Result<bool, Self::Error> {
627 Self::read_ready(self)
628 }
629}
630
613impl<'d> embedded_io_async::BufRead for BufferedUart<'d> { 631impl<'d> embedded_io_async::BufRead for BufferedUart<'d> {
614 async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> { 632 async fn fill_buf(&mut self) -> Result<&[u8], Self::Error> {
615 self.rx.fill_buf().await 633 self.rx.fill_buf().await