embedded_audio_driver/stream/
i2s.rs1use crate::Result;
2use crate::stream::{AudioFormat, Stream, InputStream, OutputStream};
3
4#[derive(Debug, Clone, Copy)]
6pub enum I2sMode {
7 Master, Slave, }
10
11#[derive(Debug, Clone, Copy)]
13pub enum I2sStandard {
14 Philips, MSB, LSB, PCM, }
19
20#[derive(Debug, Clone)]
22pub struct I2sConfig {
23 pub mode: I2sMode,
24 pub standard: I2sStandard,
25 pub format: AudioFormat,
26 pub mclk_div: Option<u32>,
28}
29
30pub trait I2s: Stream {
35 fn configure(&mut self, config: &I2sConfig) -> Result<()>;
37
38 fn get_config(&self) -> Option<I2sConfig>;
40}
41
42pub trait I2sInput: I2s + InputStream {}
44
45pub trait I2sOutput: I2s + OutputStream {}