//! # UART Console module //! //! ## Encapsulates base trait for any console. //! ## Wraps the UART console. /// # Interface module /// /// ## Provides trait for consoles. pub mod interface { use core::fmt; /// # Write Trait /// /// Structure must provide ways to: /// - Write individual characters /// - Write formatted strings /// - Flush write queue pub trait Write { /// # Write Character /// /// Writes an individual character to a console fn write_char(&self, c: char); /// # Write Format /// /// Writes a formatted string to a console fn write_fmt(&self, args: fmt::Arguments) -> fmt::Result; /// # Flush /// /// Flush console write queue fn flush(&self); } /// # Statistics Trait /// /// Structure must provide a way to: /// - Get how many characters have been written pub trait Statistics { /// # Get Written Chars /// /// Gets the statistic associated with how many /// characters have been written to a console. fn chars_written(&self) -> usize { 0 } } /// # All Trait /// /// Structure must provide both Write + Statistics pub trait All: Write + Statistics {} } /// # UART console /// /// Returns a borrow for the UART writer pub fn console() -> &'static crate::bsp::drivers::uart::Uart { &crate::bsp::drivers::uart::UART_WRITER }