autd3_driver/firmware/v12_1/
driver.rs

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