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