use crate::console;
use core::fmt;
#[doc(hidden)]
pub fn _print(args: fmt::Arguments) {
console::console().write_fmt(args).unwrap();
}
#[macro_export]
macro_rules! print {
($($arg:tt)*) => ($crate::print::_print(format_args!($($arg)*)));
}
#[macro_export]
macro_rules! println {
() => ($crate::print!("\n"));
($($arg:tt)*) => ({
$crate::print::_print(format_args_nl!($($arg)*));
})
}
#[macro_export]
macro_rules! info {
($string:expr) => ({
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("[ {:>3}.{:06}] ", $string),
timestamp.as_secs(),
timestamp.subsec_micros(),
));
});
($format_string:expr, $($arg:tt)*) => ({
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("[ {:>3}.{:06}] ", $format_string),
timestamp.as_secs(),
timestamp.subsec_micros(),
$($arg)*
));
})
}
#[macro_export]
macro_rules! warn {
($string:expr) => ({
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("[W {:>3}.{:06}] ", $string),
timestamp.as_secs(),
timestamp.subsec_micros(),
));
});
($format_string:expr, $($arg:tt)*) => ({
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("[W {:>3}.{:06}] ", $format_string),
timestamp.as_secs(),
timestamp.subsec_micros(),
$($arg)*
));
})
}
#[macro_export]
macro_rules! debug {
($string:expr) => ({
if cfg!(feature = "debug_prints") {
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("<[>D {:>3}.{:06}> ", $string),
timestamp.as_secs(),
timestamp.subsec_micros(),
));
}
});
($format_string:expr, $($arg:tt)*) => ({
if cfg!(feature = "debug_prints") {
let timestamp = $crate::time::time_manager().uptime();
$crate::print::_print(format_args_nl!(
concat!("<D {:>3}.{:06}> ", $format_string),
timestamp.as_secs(),
timestamp.subsec_micros(),
$($arg)*
));
}
})
}