diff options
author | Christian Cunningham <cc@localhost> | 2022-08-26 17:25:34 -0700 |
---|---|---|
committer | Christian Cunningham <cc@localhost> | 2022-08-26 17:25:34 -0700 |
commit | a04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 (patch) | |
tree | 381892074d13c059d50cb88caa41f8a8722c07ce /src/util/print.rs | |
parent | 7f3d7d9ce9818078b6a4616b4c31a28e2868397b (diff) |
Modularize
Diffstat (limited to 'src/util/print.rs')
-rw-r--r-- | src/util/print.rs | 56 |
1 files changed, 56 insertions, 0 deletions
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)*)); + }) +} |