pub(crate) mod metadata;
pub use metadata::{Level, LevelFilter};
#[macro_export]
macro_rules! log {
(target: $target:expr, $lvl:expr, $msg:expr $(, $arg:expr)*) => ({
use $crate::__macro_support::ufmt;
if $lvl <= $crate::furi::log::LevelFilter::current() {
const TARGET: *const ::core::ffi::c_char =
match ::core::ffi::CStr::from_bytes_with_nul(
::core::concat!($target, "\0").as_bytes(),
) {
Ok(cstr) => cstr.as_ptr(),
Err(_error) => panic!("target contains NULs"),
};
let mut buf = $crate::__macro_support::FuriString::new();
$crate::__macro_support::ufmt::uwrite!(&mut buf, $msg $(, $arg)*)
.expect("can append to FuriString");
let lvl = $crate::__macro_support::__level_to_furi($lvl);
let buf = buf.as_c_ptr();
unsafe {
$crate::__macro_support::__sys::furi_log_print_format(lvl, TARGET, buf);
};
}
});
($lvl:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: module_path!(), $lvl, $msg $(, $arg)*)
);
}
#[macro_export]
macro_rules! error {
(target: $target:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: $target, $crate::furi::log::Level::ERROR, $msg $(, $arg)*)
);
($msg:expr $(, $arg:expr)*) => (
$crate::log!($crate::furi::log::Level::ERROR, $msg $(, $arg)*)
);
}
#[macro_export]
macro_rules! warn {
(target: $target:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: $target, $crate::furi::log::Level::WARN, $msg $(, $arg)*)
);
($msg:expr $(, $arg:expr)*) => (
$crate::log!($crate::furi::log::Level::WARN, $msg $(, $arg)*)
);
}
#[macro_export]
macro_rules! info {
(target: $target:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: $target, $crate::furi::log::Level::INFO, $msg $(, $arg)*)
);
($msg:expr $(, $arg:expr)*) => (
$crate::log!($crate::furi::log::Level::INFO, $msg $(, $arg)*)
);
}
#[macro_export]
macro_rules! debug {
(target: $target:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: $target, $crate::furi::log::Level::DEBUG, $msg $(, $arg)*)
);
($msg:expr $(, $arg:expr)*) => (
$crate::log!($crate::furi::log::Level::DEBUG, $msg $(, $arg)*)
);
}
#[macro_export]
macro_rules! trace {
(target: $target:expr, $msg:expr $(, $arg:expr)*) => (
$crate::log!(target: $target, $crate::furi::log::Level::TRACE, $msg $(, $arg)*)
);
($msg:expr $(, $arg:expr)*) => (
$crate::log!($crate::furi::log::Level::TRACE, $msg $(, $arg)*)
);
}