autd3_driver/firmware/v12_1/
driver.rs1use autd3_core::{environment::Environment, link::Link, sleep::Sleep};
2
3use crate::firmware::driver::{Driver, Sender, TimerStrategy};
4
5pub 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}