use embedded_hal::spi::SpiDevice;
use crate::{marker, Ad983x, BitFlags, Error, OutputWaveform};
impl<DEV, E> Ad983x<DEV, marker::Ad9833Ad9837>
where
DEV: SpiDevice<Error = E>,
{
pub fn new_ad9833(spi: DEV) -> Self {
Self::create(spi)
}
pub fn new_ad9837(spi: DEV) -> Self {
Self::create(spi)
}
pub fn set_output_waveform(&mut self, waveform: OutputWaveform) -> Result<(), Error<E>> {
let control = match waveform {
OutputWaveform::Sinusoidal => self
.control
.with_low(BitFlags::OPBITEN)
.with_low(BitFlags::MODE),
OutputWaveform::Triangle => self
.control
.with_low(BitFlags::OPBITEN)
.with_high(BitFlags::MODE),
OutputWaveform::SquareMsbOfDac => self
.control
.with_high(BitFlags::OPBITEN)
.with_low(BitFlags::MODE)
.with_high(BitFlags::DIV2),
OutputWaveform::SquareMsbOfDacDiv2 => self
.control
.with_high(BitFlags::OPBITEN)
.with_low(BitFlags::MODE)
.with_low(BitFlags::DIV2),
};
self.write_control(control)
}
}