//! # Printing to UART //! //! This module contains the macros to print formatted strings to UART. use core::fmt; use crate::uart::UART_WRITER; use crate::console::interface::Write; #[doc(hidden)] pub fn _print(args: fmt::Arguments) { UART_WRITER.write_fmt(args).unwrap(); } /// # Print without newline /// /// Print formatted arguments without a newline #[macro_export] macro_rules! print { ($($arg:tt)*) => ($crate::print::_print(format_args!($($arg)*))); } /// # Print with newline /// /// Print formatted arguments with a newline #[macro_export] macro_rules! println { () => ($crate::print!("\n")); ($($arg:tt)*) => ({ $crate::print::_print(format_args_nl!($($arg)*)); }) } /// # Debug print without newline /// /// Print formatted arguments without a newline but only with `verbose` feature #[macro_export] macro_rules! vprint { ($($arg:tt)*) => ({ #[cfg(feature="verbose")] $crate::print::_print(format_args!($($arg)*)) }); } /// # Debug print with newline /// /// Print formatted arguments with a newline but only with `verbose` feature #[macro_export] macro_rules! vprintln { () => ({ #[cfg(feature="verbose")] $crate::print!("\n") }); ($($arg:tt)*) => ({ #[cfg(feature="verbose")] $crate::print::_print(format_args_nl!($($arg)*)); }) }