From a04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Fri, 26 Aug 2022 17:25:34 -0700 Subject: Modularize --- src/util/print.rs | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/util/print.rs (limited to 'src/util/print.rs') diff --git a/src/util/print.rs b/src/util/print.rs new file mode 100644 index 0000000..34e808c --- /dev/null +++ b/src/util/print.rs @@ -0,0 +1,56 @@ +//! # 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)*)); + }) +} -- cgit v1.2.1