use std::time::Duration;
use autd3_driver::NullHeader;
use crate::{datagram::*, error::AUTDInternalError, geometry::*};
#[derive(Default)]
pub struct Synchronize {}
impl Synchronize {
pub fn new() -> Self {
Self {}
}
}
impl<T: Transducer> Datagram<T> for Synchronize {
type H = NullHeader;
type B = T::Sync;
fn operation(
&mut self,
geometry: &Geometry<T>,
) -> Result<(Self::H, Self::B), AUTDInternalError> {
Ok((
Default::default(),
<Self::B as autd3_driver::SyncOp>::new(|| {
geometry.transducers().map(|tr| tr.cycle()).collect()
}),
))
}
fn timeout(&self) -> Option<Duration> {
Some(Duration::from_millis(200))
}
}