Extend set_baudrate implementation to Buffered and RingBuffered structs
This commit is contained in:
		
							parent
							
								
									32a1b232cb
								
							
						
					
					
						commit
						8d2fbf0e14
					
				@ -12,8 +12,8 @@ use embassy_sync::waitqueue::AtomicWaker;
 | 
				
			|||||||
#[cfg(not(any(usart_v1, usart_v2)))]
 | 
					#[cfg(not(any(usart_v1, usart_v2)))]
 | 
				
			||||||
use super::DePin;
 | 
					use super::DePin;
 | 
				
			||||||
use super::{
 | 
					use super::{
 | 
				
			||||||
    clear_interrupt_flags, configure, rdr, reconfigure, send_break, sr, tdr, Config, ConfigError, CtsPin, Error, Info,
 | 
					    clear_interrupt_flags, configure, rdr, reconfigure, send_break, set_baudrate, sr, tdr, Config, ConfigError, CtsPin,
 | 
				
			||||||
    Instance, Regs, RtsPin, RxPin, TxPin,
 | 
					    Error, Info, Instance, Regs, RtsPin, RxPin, TxPin,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use crate::gpio::{AfType, AnyPin, OutputType, Pull, SealedPin as _, Speed};
 | 
					use crate::gpio::{AfType, AnyPin, OutputType, Pull, SealedPin as _, Speed};
 | 
				
			||||||
use crate::interrupt::{self, InterruptExt};
 | 
					use crate::interrupt::{self, InterruptExt};
 | 
				
			||||||
@ -441,6 +441,13 @@ impl<'d> BufferedUart<'d> {
 | 
				
			|||||||
    pub fn send_break(&self) {
 | 
					    pub fn send_break(&self) {
 | 
				
			||||||
        self.tx.send_break()
 | 
					        self.tx.send_break()
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Set baudrate
 | 
				
			||||||
 | 
					    pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> {
 | 
				
			||||||
 | 
					        self.tx.set_baudrate(baudrate)?;
 | 
				
			||||||
 | 
					        self.rx.set_baudrate(baudrate)?;
 | 
				
			||||||
 | 
					        Ok(())
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d> BufferedUartRx<'d> {
 | 
					impl<'d> BufferedUartRx<'d> {
 | 
				
			||||||
@ -535,6 +542,11 @@ impl<'d> BufferedUartRx<'d> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Ok(())
 | 
					        Ok(())
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Set baudrate
 | 
				
			||||||
 | 
					    pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> {
 | 
				
			||||||
 | 
					        set_baudrate(self.info, self.kernel_clock, baudrate)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d> BufferedUartTx<'d> {
 | 
					impl<'d> BufferedUartTx<'d> {
 | 
				
			||||||
@ -625,6 +637,11 @@ impl<'d> BufferedUartTx<'d> {
 | 
				
			|||||||
    pub fn send_break(&self) {
 | 
					    pub fn send_break(&self) {
 | 
				
			||||||
        send_break(&self.info.regs);
 | 
					        send_break(&self.info.regs);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Set baudrate
 | 
				
			||||||
 | 
					    pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> {
 | 
				
			||||||
 | 
					        set_baudrate(self.info, self.kernel_clock, baudrate)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'d> Drop for BufferedUartRx<'d> {
 | 
					impl<'d> Drop for BufferedUartRx<'d> {
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,9 @@ use embassy_hal_internal::PeripheralRef;
 | 
				
			|||||||
use embedded_io_async::ReadReady;
 | 
					use embedded_io_async::ReadReady;
 | 
				
			||||||
use futures_util::future::{select, Either};
 | 
					use futures_util::future::{select, Either};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use super::{clear_interrupt_flags, rdr, reconfigure, sr, Config, ConfigError, Error, Info, State, UartRx};
 | 
					use super::{
 | 
				
			||||||
 | 
					    clear_interrupt_flags, rdr, reconfigure, set_baudrate, sr, Config, ConfigError, Error, Info, State, UartRx,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
use crate::dma::ReadableRingBuffer;
 | 
					use crate::dma::ReadableRingBuffer;
 | 
				
			||||||
use crate::gpio::{AnyPin, SealedPin as _};
 | 
					use crate::gpio::{AnyPin, SealedPin as _};
 | 
				
			||||||
use crate::mode::Async;
 | 
					use crate::mode::Async;
 | 
				
			||||||
@ -213,6 +215,11 @@ impl<'d> RingBufferedUartRx<'d> {
 | 
				
			|||||||
            Either::Right(((), _)) => Ok(()),
 | 
					            Either::Right(((), _)) => Ok(()),
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /// Set baudrate
 | 
				
			||||||
 | 
					    pub fn set_baudrate(&self, baudrate: u32) -> Result<(), ConfigError> {
 | 
				
			||||||
 | 
					        set_baudrate(self.info, self.kernel_clock, baudrate)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl Drop for RingBufferedUartRx<'_> {
 | 
					impl Drop for RingBufferedUartRx<'_> {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user