forked from M-Labs/humpback-dds
dds: strictly enforce ~lsb_first and sdio_input_only
This commit is contained in:
parent
9d49afa5a8
commit
b577c8b715
13
src/dds.rs
13
src/dds.rs
|
@ -335,7 +335,7 @@ where
|
||||||
pub fn set_configurations(&mut self, mask_pairs: &mut[(DDSCFRMask, u32)]) -> Result<(), Error<E>> {
|
pub fn set_configurations(&mut self, mask_pairs: &mut[(DDSCFRMask, u32)]) -> Result<(), Error<E>> {
|
||||||
let mut data_array = self.get_all_configurations()?;
|
let mut data_array = self.get_all_configurations()?;
|
||||||
for index in 0..mask_pairs.len() {
|
for index in 0..mask_pairs.len() {
|
||||||
// Reject any attempt to rewrite LSB_FIRST and SBIO_INPUT_ONLY
|
// Reject any attempt to rewrite LSB_FIRST and SDIO_INPUT_ONLY
|
||||||
if mask_pairs[index].0 == DDSCFRMask::LSB_FIRST || mask_pairs[index].0 == DDSCFRMask::SDIO_IN_ONLY {
|
if mask_pairs[index].0 == DDSCFRMask::LSB_FIRST || mask_pairs[index].0 == DDSCFRMask::SDIO_IN_ONLY {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -346,6 +346,9 @@ where
|
||||||
_ => panic!("Invalid DDSCFRMask!"),
|
_ => panic!("Invalid DDSCFRMask!"),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
// Deterministically maintain LSB_FIRST and SDIO_INPUT_ONLY
|
||||||
|
DDSCFRMask::LSB_FIRST.set_data_by_arg(&mut data_array[0], 0);
|
||||||
|
DDSCFRMask::SDIO_IN_ONLY.set_data_by_arg(&mut data_array[0], 1);
|
||||||
self.set_all_configurations(data_array.clone())
|
self.set_all_configurations(data_array.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -862,7 +865,9 @@ macro_rules! impl_register_io {
|
||||||
}
|
}
|
||||||
self.spi.transfer(&mut arr)
|
self.spi.transfer(&mut arr)
|
||||||
.map(|_| ())
|
.map(|_| ())
|
||||||
.map_err(Error::SPI)
|
.map_err(Error::SPI)?;
|
||||||
|
debug!("Write register: {:X}, Bytes: {:X?}", addr, bytes);
|
||||||
|
Ok(())
|
||||||
},
|
},
|
||||||
)*
|
)*
|
||||||
_ => panic!("Bad address for DDS writing.")
|
_ => panic!("Bad address for DDS writing.")
|
||||||
|
@ -885,7 +890,9 @@ macro_rules! impl_register_io {
|
||||||
Ok(bytes)
|
Ok(bytes)
|
||||||
},
|
},
|
||||||
Err(e) => Err(e),
|
Err(e) => Err(e),
|
||||||
}
|
};
|
||||||
|
debug!("Read register: {:X}, Bytes: {:X?}", addr, bytes);
|
||||||
|
Ok(bytes)
|
||||||
},
|
},
|
||||||
)*
|
)*
|
||||||
_ => panic!("Bad address for DDS reading.")
|
_ => panic!("Bad address for DDS reading.")
|
||||||
|
|
Loading…
Reference in New Issue