autd3_driver/datagram/
segment.rs1use std::convert::Infallible;
2
3use autd3_core::{
4 datagram::{Datagram, DeviceMask},
5 environment::Environment,
6 firmware::{Segment, transition_mode::TransitionMode},
7 geometry::Geometry,
8};
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
14pub struct SwapSegmentGain(pub Segment);
15
16#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
20pub struct SwapSegmentModulation<T>(pub Segment, pub T);
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
26pub struct SwapSegmentFociSTM<T>(pub Segment, pub T);
27
28#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
32pub struct SwapSegmentGainSTM<T>(pub Segment, pub T);
33
34impl Datagram<'_> for SwapSegmentGain {
35 type G = Self;
36 type Error = Infallible;
37
38 fn operation_generator(
39 self,
40 _: &Geometry,
41 _: &Environment,
42 _: &DeviceMask,
43 ) -> Result<Self::G, Self::Error> {
44 Ok(self)
45 }
46}
47
48impl<T: TransitionMode> Datagram<'_> for SwapSegmentModulation<T> {
49 type G = Self;
50 type Error = Infallible;
51
52 fn operation_generator(
53 self,
54 _: &Geometry,
55 _: &Environment,
56 _: &DeviceMask,
57 ) -> Result<Self::G, Self::Error> {
58 Ok(self)
59 }
60}
61
62impl<T: TransitionMode> Datagram<'_> for SwapSegmentFociSTM<T> {
63 type G = Self;
64 type Error = Infallible;
65
66 fn operation_generator(
67 self,
68 _: &Geometry,
69 _: &Environment,
70 _: &DeviceMask,
71 ) -> Result<Self::G, Self::Error> {
72 Ok(self)
73 }
74}
75
76impl<T: TransitionMode> Datagram<'_> for SwapSegmentGainSTM<T> {
77 type G = Self;
78 type Error = Infallible;
79
80 fn operation_generator(
81 self,
82 _: &Geometry,
83 _: &Environment,
84 _: &DeviceMask,
85 ) -> Result<Self::G, Self::Error> {
86 Ok(self)
87 }
88}