1#[macro_export]
4macro_rules! debug {
5 ($fmt:literal $(, $arg:expr)* $(,)?) => {
6 #[cfg(feature = "defmt")]
7 defmt::debug!($fmt $(, $arg)*);
8 };
9}
10
11#[macro_export]
12macro_rules! trace {
13 ($fmt:literal $(, $arg:expr)* $(,)?) => {
14 #[cfg(feature = "defmt")]
15 defmt::trace!($fmt $(, $arg)*);
16 };
17}
18
19#[macro_export]
20macro_rules! info {
21 ($fmt:literal $(, $arg:expr)* $(,)?) => {
22 #[cfg(feature = "defmt")]
23 defmt::info!($fmt $(, $arg)*);
24 };
25}
26
27#[macro_export]
28macro_rules! error {
29 ($fmt:literal $(, $arg:expr)* $(,)?) => {
30 #[cfg(feature = "defmt")]
31 defmt::error!($fmt $(, $arg)*);
32 };
33}
34
35#[macro_export]
36macro_rules! kprint {
37 ($($arg:tt)*) => {{}};
38}
39
40#[macro_export]
41macro_rules! kprintln {
42 ($($arg:tt)*) => ({
43 use core::fmt::Write;
44 use $crate::print::Printer;
45
46 let mut printer = Printer;
47 const MICROS_PER_SEC: u64 = 1000000;
48 let hz = $crate::time::mono_freq();
49 let secs = $crate::time::mono_now() / hz;
50 let rem = $crate::time::mono_now() % hz;
51 let frac = (rem * MICROS_PER_SEC) / hz;
52
53 write!(&mut printer, "[{}.{:06}] ", secs, frac).unwrap();
54 printer.write_fmt(format_args!($($arg)*)).unwrap();
55 printer.write_str("\n").unwrap();
56 });
57}