#![no_std]
#![allow(clippy::new_without_default)]
mod bitmask;
pub mod enable_disable;
pub use enable_disable::EnableDisable;
pub mod line_in;
use line_in::LineIn;
pub mod headphone_out;
use headphone_out::HeadphoneOut;
pub mod analog_audio_path;
use analog_audio_path::AnalogAudioPath;
pub mod digital_audio_path;
use digital_audio_path::DigitalAudioPath;
pub mod power_down;
use power_down::PowerDown;
pub mod digital_audio_interface_format;
use digital_audio_interface_format::DigitalAudioInterfaceFormat;
pub mod sampling;
use sampling::Sampling;
pub mod active;
use active::Active;
pub mod sampling_rate;
use sampling_rate::SamplingRate;
pub struct Register {
pub address: u8,
pub value: u16,
}
#[cfg(test)]
mod tests;
pub struct WM8731 {}
impl WM8731 {
pub fn left_line_in<F: FnOnce(&mut LineIn)>(c: F) -> Register {
let mut li = LineIn::new();
c(&mut li);
Register {
address: 0,
value: li.data,
}
}
pub fn right_line_in<F: FnOnce(&mut LineIn)>(c: F) -> Register {
let mut li = LineIn::new();
c(&mut li);
Register {
address: 1,
value: li.data,
}
}
pub fn left_headphone_out<F: FnOnce(&mut HeadphoneOut)>(c: F) -> Register {
let mut lho = HeadphoneOut::new();
c(&mut lho);
Register {
address: 2,
value: lho.data,
}
}
pub fn right_headphone_out<F: FnOnce(&mut HeadphoneOut)>(c: F) -> Register {
let mut rho = HeadphoneOut::new();
c(&mut rho);
Register {
address: 3,
value: rho.data,
}
}
pub fn analog_audio_path<F: FnOnce(&mut AnalogAudioPath)>(c: F) -> Register {
let mut aap = AnalogAudioPath::new();
c(&mut aap);
Register {
address: 4,
value: aap.data,
}
}
pub fn digital_audio_path<F: FnOnce(&mut DigitalAudioPath)>(c: F) -> Register {
let mut dap = DigitalAudioPath::new();
c(&mut dap);
Register {
address: 5,
value: dap.data,
}
}
pub fn power_down<F: FnOnce(&mut PowerDown)>(c: F) -> Register {
let mut pd = PowerDown::new();
c(&mut pd);
Register {
address: 6,
value: pd.data,
}
}
pub fn digital_audio_interface_format<F: FnOnce(&mut DigitalAudioInterfaceFormat)>(
c: F,
) -> Register {
let mut daif = DigitalAudioInterfaceFormat::new();
c(&mut daif);
Register {
address: 7,
value: daif.data,
}
}
pub fn sampling<F: FnOnce(&mut Sampling)>(c: F) -> Register {
let mut s = Sampling::new();
c(&mut s);
Register {
address: 8,
value: s.data,
}
}
pub fn active() -> Active {
Active::new(9)
}
pub fn reset() -> Register {
Register {
address: 15,
value: 0,
}
}
}