use crate::{datagram::*, error::AUTDInternalError, geometry::Device};
pub struct ConfigureReadsFPGAInfo<F: Fn(&Device) -> bool> {
f: F,
}
impl<F: Fn(&Device) -> bool> ConfigureReadsFPGAInfo<F> {
pub fn new(f: F) -> Self {
Self { f }
}
}
impl<F: Fn(&Device) -> bool> Datagram for ConfigureReadsFPGAInfo<F> {
type O1 = crate::operation::ConfigureReadsFPGAInfoOp<F>;
type O2 = crate::operation::NullOp;
fn operation(self) -> Result<(Self::O1, Self::O2), AUTDInternalError> {
Ok((Self::O1::new(self.f), Self::O2::default()))
}
}
#[cfg(test)]
mod tests {
use super::*;
#[cfg_attr(coverage_nightly, coverage(off))]
fn f(dev: &Device) -> bool {
dev.idx() == 0
}
#[test]
fn test_force_fan_operation() {
let datagram = ConfigureReadsFPGAInfo::new(f);
let r = datagram.operation();
assert!(r.is_ok());
let _ = r.unwrap();
}
}