aboutsummaryrefslogtreecommitdiff
path: root/src/util/print.rs
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-08-26 17:25:34 -0700
committerChristian Cunningham <cc@localhost>2022-08-26 17:25:34 -0700
commita04cf2dbb8d2e890405fbf0a1022aaad3015b1e8 (patch)
tree381892074d13c059d50cb88caa41f8a8722c07ce /src/util/print.rs
parent7f3d7d9ce9818078b6a4616b4c31a28e2868397b (diff)
Modularize
Diffstat (limited to 'src/util/print.rs')
-rw-r--r--src/util/print.rs56
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)*));
+ })
+}