From 2ed300c939a37b141ed8e078ece8ecec72f7c072 Mon Sep 17 00:00:00 2001 From: Diego Barrios Romero Date: Fri, 17 Apr 2020 10:06:14 +0200 Subject: [PATCH] Add full duplex I2S trait --- src/i2s.rs | 17 +++++++++++++++++ src/lib.rs | 1 + src/prelude.rs | 1 + 3 files changed, 19 insertions(+) create mode 100644 src/i2s.rs diff --git a/src/i2s.rs b/src/i2s.rs new file mode 100644 index 000000000..215b84c9c --- /dev/null +++ b/src/i2s.rs @@ -0,0 +1,17 @@ +//! I2S - Inter-IC Sound Interface + +use nb; + +/// Full duplex +pub trait FullDuplex { + /// Error type + type Error; + + /// Reads the left word and right word available. + /// + /// The order is in the result is `(left_word, right_word)` + fn try_read(&mut self) -> nb::Result<(Word, Word), Self::Error>; + + /// Sends a left word and a right word to the slave. + fn try_send(&mut self, left_word: Word, right_word: Word) -> nb::Result<(), Self::Error>; +} diff --git a/src/lib.rs b/src/lib.rs index dd2592660..554687eb6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -692,6 +692,7 @@ pub mod blocking; pub mod capture; pub mod digital; pub mod fmt; +pub mod i2s; pub mod prelude; pub mod pwm; pub mod qei; diff --git a/src/prelude.rs b/src/prelude.rs index df59cf823..71e814389 100644 --- a/src/prelude.rs +++ b/src/prelude.rs @@ -27,6 +27,7 @@ pub use crate::digital::InputPin as _embedded_hal_digital_InputPin; pub use crate::digital::OutputPin as _embedded_hal_digital_OutputPin; pub use crate::digital::StatefulOutputPin as _embedded_hal_digital_StatefulOutputPin; pub use crate::digital::ToggleableOutputPin as _embedded_hal_digital_ToggleableOutputPin; +pub use crate::i2s::FullDuplex as _embedded_hal_i2s_FullDuplex; pub use crate::pwm::Pwm as _embedded_hal_Pwm; pub use crate::pwm::PwmPin as _embedded_hal_PwmPin; pub use crate::qei::Qei as _embedded_hal_Qei;