autd3_driver/firmware/v11/
driver.rs1use autd3_core::{environment::Environment, link::Link, sleep::Sleep};
2
3use crate::firmware::driver::{Driver, Sender, TimerStrategy};
4
5use super::fpga::{
6 FOCI_STM_BUF_SIZE_MAX, FOCI_STM_FIXED_NUM_UNIT, FOCI_STM_FIXED_NUM_WIDTH,
7 FOCI_STM_FOCI_NUM_MAX, GAIN_STM_BUF_SIZE_MAX, MOD_BUF_SIZE_MAX,
8};
9
10pub struct V11;
12
13impl<'a, L: Link, S: Sleep, T: TimerStrategy<S>> Sender<'a, L, S, T>
14 for super::transmission::Sender<'a, L, S, T>
15{
16 fn initialize_devices(self) -> Result<(), crate::error::AUTDDriverError> {
17 self.inner.initialize_devices()
18 }
19
20 fn firmware_version(
21 self,
22 ) -> Result<Vec<crate::firmware::version::FirmwareVersion>, crate::error::AUTDDriverError> {
23 self.inner.firmware_version()
24 }
25
26 fn close(self) -> Result<(), crate::error::AUTDDriverError> {
27 self.inner.close()
28 }
29}
30
31impl Driver for V11 {
32 type Sender<'a, L, S, T>
33 = super::transmission::Sender<'a, L, S, T>
34 where
35 L: autd3_core::link::Link + 'a,
36 S: autd3_core::sleep::Sleep,
37 T: TimerStrategy<S>;
38 type FPGAState = super::fpga::FPGAState;
39
40 fn new() -> Self {
41 Self
42 }
43
44 fn firmware_limits(&self) -> autd3_core::derive::FirmwareLimits {
45 autd3_core::derive::FirmwareLimits {
46 mod_buf_size_max: MOD_BUF_SIZE_MAX as _,
47 gain_stm_buf_size_max: GAIN_STM_BUF_SIZE_MAX as _,
48 foci_stm_buf_size_max: FOCI_STM_BUF_SIZE_MAX as _,
49 num_foci_max: FOCI_STM_FOCI_NUM_MAX as _,
50 foci_stm_fixed_num_unit: FOCI_STM_FIXED_NUM_UNIT,
51 foci_stm_fixed_num_width: FOCI_STM_FIXED_NUM_WIDTH as _,
52 }
53 }
54
55 fn sender<'a, L, S, T>(
56 &self,
57 msg_id: &'a mut autd3_core::link::MsgId,
58 link: &'a mut L,
59 geometry: &'a autd3_core::derive::Geometry,
60 sent_flags: &'a mut [bool],
61 rx: &'a mut [autd3_core::link::RxMessage],
62 env: &'a Environment,
63 option: crate::firmware::driver::SenderOption,
64 timer_strategy: T,
65 ) -> Self::Sender<'a, L, S, T>
66 where
67 L: autd3_core::link::Link + 'a,
68 S: autd3_core::sleep::Sleep,
69 T: TimerStrategy<S>,
70 {
71 Self::Sender {
72 inner: crate::firmware::v10::transmission::Sender {
73 msg_id,
74 link,
75 geometry,
76 sent_flags,
77 rx,
78 env,
79 option,
80 timer_strategy,
81 _phantom: std::marker::PhantomData,
82 },
83 }
84 }
85}