Make embedded-hal-async dependency optional for better compatibility with HALs

Some hals implement traits for embedded-hal version `=1.0.0.alpha.<not 9>`, which is
explicitly incompatible with the version `=1.0.0.alpha.9` which embedded-hal-async
depends on. Making the dependency optional allows downstream projects to include
rtic-monotonic without requiring that all of their other libraries also implement
that specific version of embedded-hal 1.0
This commit is contained in:
datdenkikniet 2023-02-15 23:21:52 +01:00 committed by Henrik Tjäder
parent 60d5e9e1db
commit 002d0b0d16
3 changed files with 5 additions and 5 deletions

View file

@ -18,7 +18,7 @@ license = "MIT OR Apache-2.0"
[dependencies] [dependencies]
rtic-time = { version = "1.0.0-alpha.0", path = "../rtic-time" } rtic-time = { version = "1.0.0-alpha.0", path = "../rtic-time" }
embedded-hal-async = "0.2.0-alpha.0" embedded-hal-async = { version = "0.2.0-alpha.0", optional = true }
fugit = { version = "0.3.6" } fugit = { version = "0.3.6" }
atomic-polyfill = "1" atomic-polyfill = "1"
cfg-if = "1.0.0" cfg-if = "1.0.0"

View file

@ -3,7 +3,6 @@
use super::Monotonic; use super::Monotonic;
pub use super::{TimeoutError, TimerQueue}; pub use super::{TimeoutError, TimerQueue};
use core::future::Future; use core::future::Future;
use embedded_hal_async::delay::DelayUs;
pub use fugit::ExtU64; pub use fugit::ExtU64;
use rp2040_pac::{timer, Interrupt, RESETS, TIMER}; use rp2040_pac::{timer, Interrupt, RESETS, TIMER};
@ -116,7 +115,8 @@ impl Monotonic for Timer {
fn disable_timer() {} fn disable_timer() {}
} }
impl DelayUs for Timer { #[cfg(feature = "embedded-hal-async")]
impl embedded_hal_async::delay::DelayUs for Timer {
type Error = core::convert::Infallible; type Error = core::convert::Infallible;
async fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> { async fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> {

View file

@ -5,7 +5,6 @@ pub use super::{TimeoutError, TimerQueue};
use atomic_polyfill::{AtomicU32, Ordering}; use atomic_polyfill::{AtomicU32, Ordering};
use core::future::Future; use core::future::Future;
use cortex_m::peripheral::SYST; use cortex_m::peripheral::SYST;
use embedded_hal_async::delay::DelayUs;
pub use fugit::ExtU32; pub use fugit::ExtU32;
// Features should be additive, here systick_100hz gets picked if both // Features should be additive, here systick_100hz gets picked if both
@ -136,7 +135,8 @@ impl Monotonic for Systick {
fn disable_timer() {} fn disable_timer() {}
} }
impl DelayUs for Systick { #[cfg(feature = "embedded-hal-async")]
impl embedded_hal_async::delay::DelayUs for Systick {
type Error = core::convert::Infallible; type Error = core::convert::Infallible;
async fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> { async fn delay_us(&mut self, us: u32) -> Result<(), Self::Error> {