diff --git a/embassy/src/util/mpsc.rs b/embassy/src/util/mpsc.rs index bad1058a3..4257ecd40 100644 --- a/embassy/src/util/mpsc.rs +++ b/embassy/src/util/mpsc.rs @@ -386,6 +386,7 @@ where /// /// [`try_recv`]: super::Receiver::try_recv #[derive(PartialEq, Eq, Clone, Copy, Debug)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] pub enum TryRecvError { /// A message could not be received because the channel is empty. Empty, @@ -404,6 +405,13 @@ impl fmt::Display for SendError { } } +#[cfg(feature = "defmt")] +impl defmt::Format for SendError { + fn format(&self, fmt: defmt::Formatter<'_>) { + defmt::write!(fmt, "channel closed") + } +} + /// This enumeration is the list of the possible error outcomes for the /// [try_send](super::Sender::try_send) method. #[derive(Debug)] @@ -430,6 +438,16 @@ impl fmt::Display for TrySendError { } } +#[cfg(feature = "defmt")] +impl defmt::Format for TrySendError { + fn format(&self, fmt: defmt::Formatter<'_>) { + match self { + TrySendError::Full(..) => defmt::write!(fmt, "no available capacity"), + TrySendError::Closed(..) => defmt::write!(fmt, "channel closed"), + } + } +} + struct ChannelState { buf: [MaybeUninit>; N], read_pos: usize,