diff --git a/Cargo.toml b/Cargo.toml index 52649bd..073557a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ad57xx" -version = "0.2.1" +version = "0.2.2" edition = "2021" license = "MIT" description = "Analog Devices AD57xx SPI DAC driver" @@ -28,6 +28,9 @@ panic-halt = "0.2.0" panic-probe = { version = "0.3.0", features = [ "print-defmt" ] } stm32f4xx-hal = { version = "0.20.0", features = ["stm32f405"] } +[target.x86_64-unknown-linux-gnu.dev-dependencies] +embedded-hal-mock = { version = "0.10.0", features = ["eh1"] } + # cargo build/run [profile.dev] codegen-units = 1 diff --git a/tests/integration.rs b/tests/integration.rs new file mode 100644 index 0000000..98dd383 --- /dev/null +++ b/tests/integration.rs @@ -0,0 +1,51 @@ +use ad57xx::{marker, Ad57xx, Ad57xxShared}; +use embedded_hal::spi::SpiDevice; +use embedded_hal_mock::common::Generic; +use embedded_hal_mock::eh1::spi::{Mock as MockSpi, Transaction as MockTransaction}; +use std::fmt::Debug; + +#[test] +fn write_dac_b() { + // Quad channel test + let mut trans = [ + MockTransaction::transaction_start(), + MockTransaction::write_vec(vec![0b00000001, 0xF0, 0x0F]), + MockTransaction::transaction_end(), + ]; + let mut spi = MockSpi::new(&trans); + + let mut dac = Ad57xxShared::new_ad57x4(spi); + dac.set_dac_output(ad57xx::ad57x4::ChannelQuad::DacB, 0xF00F); + dac.destroy().done(); + + // Dual channel test + let mut trans = [ + MockTransaction::transaction_start(), + MockTransaction::write_vec(vec![0b00000010, 0xF0, 0x0F]), + MockTransaction::transaction_end(), + ]; + let mut spi = MockSpi::new(&trans); + + let mut dac = Ad57xxShared::new_ad57x2(spi); + dac.set_dac_output(ad57xx::ad57x2::Channel::DacB, 0xF00F); + dac.destroy().done(); +} +#[test] +fn read_config() { + let trans = [ + MockTransaction::transaction_start(), + MockTransaction::write_vec(vec![0b10011001, 0x00, 0x00]), + MockTransaction::transaction_end(), + MockTransaction::transaction_start(), + MockTransaction::transfer(vec![0b00011000, 0x00, 0x00], vec![0x04, 0x00, 0x00]), + MockTransaction::transaction_end(), + ]; + let mut spi = MockSpi::new(&trans); + + let mut dac = Ad57xxShared::new_ad57x4(spi); + assert_eq!( + u8::from(dac.get_config().unwrap()), + u8::from(ad57xx::Config::default()) + ); + dac.destroy().done(); +}