From 279c5b7b1a3603238f9890d68a575f4b46021570 Mon Sep 17 00:00:00 2001 From: "N.E" Date: Sun, 12 Jun 2022 18:59:52 -0400 Subject: [PATCH] Add convenience macros to simplify calling delay functions Calling delay functions with non-trivial inputs requires using the turbofish operator and braces. For example, a 5 minute delay would have to be called as delay_sec::<{ 5 * 60 }>(). Since this syntax is a bit clunky and not very user friendly, macros are added for each delay function such that delay_sec!(5 * 60) expands to delay_sec::<{ 5 * 60 }>() --- src/lib.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index c3862ae..8523e53 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,13 @@ pub fn delay_cycles() { Delayer::::delay_impl() } +#[macro_export] +macro_rules! delay_cycles { + ($t:expr) => { + $crate::delay_cycles::<{ $t }>() + }; +} + /// Maximum value is (25_769_803_784 * 1_000_000 / CPU_FREQUENCY_HZ). /// Almost 18 minutes at 24Mhz. #[inline(always)] @@ -23,6 +30,13 @@ pub fn delay_us() { Delayer::::delay_impl() } +#[macro_export] +macro_rules! delay_us { + ($t:expr) => { + $crate::delay_us::<{ $t }>() + }; +} + /// Maximum value is (25_769_803_784 * 1_000 / CPU_FREQUENCY_HZ). /// Almost 18 minutes at 24Mhz. #[inline(always)] @@ -30,6 +44,13 @@ pub fn delay_ms() { Delayer::::delay_impl() } +#[macro_export] +macro_rules! delay_ms { + ($t:expr) => { + $crate::delay_ms::<{ $t }>() + }; +} + /// Maximum value is (25_769_803_784 * 1 / CPU_FREQUENCY_HZ). /// Almost 18 minutes at 24Mhz. #[inline(always)] @@ -37,6 +58,13 @@ pub fn delay_sec() { Delayer::::delay_impl() } +#[macro_export] +macro_rules! delay_sec { + ($t:expr) => { + $crate::delay_sec::<{ $t }>() + }; +} + #[cfg(test)] mod tests { #[test]