use autd3::{
Controller,
gain::Null,
link::{Audit, AuditOption},
prelude::{AUTD3, AUTDDriverError},
};
use autd3_core::link::MsgId;
mod datagram;
mod link;
mod old;
#[test]
fn initial_msg_id() -> Result<(), Box<dyn std::error::Error>> {
let cnt = Controller::<_>::open(
[AUTD3::default()],
Audit::new(AuditOption {
initial_msg_id: Some(MsgId::new(0x01)),
..Default::default()
}),
)?;
assert!(
cnt.link()[0]
.fpga()
.phase_correction()
.iter()
.all(|v| v.0 == 0x00)
);
Ok(())
}
#[test]
fn retry_with_disabled_device() -> Result<(), Box<dyn std::error::Error>> {
let mut cnt = Controller::open([AUTD3::default(); 2], Audit::new(Default::default()))?;
assert_eq!(Ok(()), cnt.send(Null {}));
cnt.link_mut()[0].break_down();
assert_eq!(
Err(AUTDDriverError::ConfirmResponseFailed),
cnt.send(Null {})
);
cnt.link_mut()[0].repair();
assert_eq!(Ok(()), cnt.send(Null {}));
cnt.link_mut()[0].break_down();
assert_eq!(
Err(AUTDDriverError::ConfirmResponseFailed),
cnt.send(Null {})
);
assert_eq!(
Ok(()),
cnt.send(autd3_driver::datagram::Group::new(
|dev| (dev.idx() != 0).then_some(()),
std::collections::HashMap::from([((), Null {})])
))
);
Ok(())
}