From 858160a55d839bb4064006aa55ddb581259a3074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Sat, 4 Feb 2023 10:14:12 +0100 Subject: [PATCH] rtic-monotonics: Simplify features, default is 1kHz Make 100 Hz or 10 kHz opt in through features, which are meant for testing primarily. --- rtic-monotonics/CHANGELOG.md | 2 +- rtic-monotonics/Cargo.toml | 4 +--- rtic-monotonics/src/systick_monotonic.rs | 23 +++++++++++++++-------- rtic/Cargo.toml | 2 +- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/rtic-monotonics/CHANGELOG.md b/rtic-monotonics/CHANGELOG.md index e99022372b..d3a9d846ee 100644 --- a/rtic-monotonics/CHANGELOG.md +++ b/rtic-monotonics/CHANGELOG.md @@ -13,4 +13,4 @@ For each category, *Added*, *Changed*, *Fixed* add new entries at the top! ### Fixed -## [v0.1.0] - 2023-xx-xx +## [v1.0.0] - 2023-xx-xx diff --git a/rtic-monotonics/Cargo.toml b/rtic-monotonics/Cargo.toml index f94a78b884..4014fe7685 100644 --- a/rtic-monotonics/Cargo.toml +++ b/rtic-monotonics/Cargo.toml @@ -22,10 +22,8 @@ embedded-hal-async = "0.2.0-alpha.0" fugit = { version = "0.3.6", features = ["defmt"] } rtic-time = { version = "1.0.0-alpha.0", path = "../rtic-time" } atomic-polyfill = "1" +cfg-if = "1.0.0" [features] -default = ["systick_1khz"] - systick_100hz = [] -systick_1khz = [] systick_10khz = [] diff --git a/rtic-monotonics/src/systick_monotonic.rs b/rtic-monotonics/src/systick_monotonic.rs index a5a0aefaa4..885da925b4 100644 --- a/rtic-monotonics/src/systick_monotonic.rs +++ b/rtic-monotonics/src/systick_monotonic.rs @@ -8,16 +8,23 @@ use cortex_m::peripheral::SYST; use embedded_hal_async::delay::DelayUs; pub use fugit::ExtU32; -#[cfg(feature = "systick_100hz")] -const TIMER_HZ: u32 = 100; +// Features should be additive, here systick_100hz gets picked if both +// `systick_100hz` and `systick_10khz` are enabled. -#[cfg(feature = "systick_1khz")] -const TIMER_HZ: u32 = 1_000; +cfg_if::cfg_if! { + if #[cfg(feature = "systick_100hz")] + { + const TIMER_HZ: u32 = 100; + } else if #[cfg(feature = "systick_10khz")] + { + const TIMER_HZ: u32 = 10_000; + } else { + // Default case is 1 kHz + const TIMER_HZ: u32 = 1_000; + } +} -#[cfg(feature = "systick_10khz")] -const TIMER_HZ: u32 = 10_000; - -/// Systick implementing `rtic_monotonic::Monotonic` which runs at 1 kHz. +/// Systick implementing `rtic_monotonic::Monotonic` which runs at 1 kHz, 100Hz or 10 kHz. pub struct Systick; impl Systick { diff --git a/rtic/Cargo.toml b/rtic/Cargo.toml index d722e65817..1aba9c7bf3 100644 --- a/rtic/Cargo.toml +++ b/rtic/Cargo.toml @@ -51,7 +51,7 @@ lm3s6965 = "0.1.3" cortex-m-semihosting = "0.5.0" rtic-time = { path = "../rtic-time" } rtic-channel = { path = "../rtic-channel" } -rtic-monotonics = { path = "../rtic-monotonics", default-features = false } +rtic-monotonics = { path = "../rtic-monotonics" } [dev-dependencies.futures] version = "0.3.26"