Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rtic-sync: Remove unstable flag, and add defmt derives #889

Merged
merged 1 commit into from
Feb 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions rtic-sync/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ For each category, _Added_, _Changed_, _Fixed_ add new entries at the top!

## [Unreleased]

### Changed

- Unstable features are now stable, the feature flag `unstable` is removed.

### Added

- `defmt v0.3` derives added and forwarded to `embedded-hal(-x)` crates.

## v1.2.0 - 2024-01-10

### Changed
Expand Down
16 changes: 7 additions & 9 deletions rtic-sync/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rtic-sync"
version = "1.2.0"
version = "1.3.0"

edition = "2021"
authors = [
Expand All @@ -17,23 +17,21 @@ repository = "https://github.com/rtic-rs/rtic"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[package.metadata.docs.rs]
features = ["unstable"]

[dependencies]
heapless = "0.8"
critical-section = "1"
rtic-common = { version = "1.0.0", path = "../rtic-common" }
portable-atomic = { version = "1", default-features = false }
embedded-hal = { version = "1.0", optional = true }
embedded-hal-async = { version = "1.0", optional = true }
embedded-hal-bus = { version = "0.1.0", optional = true, features = ["async"] }
embedded-hal = { version = "1.0.0" }
embedded-hal-async = { version = "1.0.0" }
embedded-hal-bus = { version = "0.1.0", features = ["async"] }

defmt-03 = { package = "defmt", version = "0.3", optional = true }

[dev-dependencies]
tokio = { version = "1", features = ["rt", "macros", "time"] }


[features]
default = []
testing = ["critical-section/std", "rtic-common/testing"]
unstable = ["embedded-hal", "embedded-hal-async", "embedded-hal-bus"]
defmt-03 = ["dep:defmt-03", "embedded-hal/defmt-03", "embedded-hal-async/defmt-03", "embedded-hal-bus/defmt-03"]
2 changes: 0 additions & 2 deletions rtic-sync/src/arbiter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,6 @@ impl<'a, T> DerefMut for ExclusiveAccess<'a, T> {
}
}

#[cfg(feature = "unstable")]
/// SPI bus sharing using [`Arbiter`]
pub mod spi {
use super::Arbiter;
Expand Down Expand Up @@ -274,7 +273,6 @@ pub mod spi {
}
}

#[cfg(feature = "unstable")]
/// I2C bus sharing using [`Arbiter`]
///
/// An Example how to use it in RTIC application:
Expand Down
22 changes: 21 additions & 1 deletion rtic-sync/src/channel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ use rtic_common::{
wait_queue::{Link, WaitQueue},
};

#[cfg(feature = "defmt-03")]
use crate::defmt;

/// An MPSC channel for use in no-alloc systems. `N` sets the size of the queue.
///
/// This channel uses critical sections, however there are extremely small and all `memcpy`
Expand Down Expand Up @@ -127,9 +130,11 @@ macro_rules! make_channel {
// -------- Sender

/// Error state for when the receiver has been dropped.
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
pub struct NoReceiver<T>(pub T);

/// Errors that 'try_send` can have.
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
pub enum TrySendError<T> {
/// Error state for when the receiver has been dropped.
NoReceiver(T),
Expand Down Expand Up @@ -199,6 +204,13 @@ impl<'a, T, const N: usize> core::fmt::Debug for Sender<'a, T, N> {
}
}

#[cfg(feature = "defmt-03")]
impl<'a, T, const N: usize> defmt::Format for Sender<'a, T, N> {
fn format(&self, f: defmt::Formatter) {
defmt::write!(f, "Sender",)
}
}

impl<'a, T, const N: usize> Sender<'a, T, N> {
#[inline(always)]
fn send_footer(&mut self, idx: u8, val: T) {
Expand Down Expand Up @@ -382,8 +394,16 @@ impl<'a, T, const N: usize> core::fmt::Debug for Receiver<'a, T, N> {
}
}

#[cfg(feature = "defmt-03")]
impl<'a, T, const N: usize> defmt::Format for Receiver<'a, T, N> {
fn format(&self, f: defmt::Formatter) {
defmt::write!(f, "Receiver",)
}
}

/// Possible receive errors.
#[derive(Debug, PartialEq, Eq)]
#[cfg_attr(feature = "defmt-03", derive(defmt::Format))]
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ReceiveError {
/// Error state for when all senders has been dropped.
NoSender,
Expand Down
3 changes: 3 additions & 0 deletions rtic-sync/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
#![no_std]
#![deny(missing_docs)]

#[cfg(feature = "defmt-03")]
use defmt_03 as defmt;

pub mod arbiter;
pub mod channel;
pub use portable_atomic;
Expand Down
1 change: 0 additions & 1 deletion xtask/src/argument_parsing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@ impl Package {
.chain(std::iter::once(None))
.collect()
}
Package::RticSync => vec![Some("unstable".to_string()), None],
_ => vec![None],
}
}
Expand Down
Loading