autd3_driver/datagram/
segment.rs

1use std::convert::Infallible;
2
3use crate::{datagram::*, firmware::operation::SwapSegmentOp};
4
5use super::OperationGenerator;
6
7pub struct SwapSegmentOpGenerator {
8    segment: SwapSegment,
9}
10
11impl OperationGenerator for SwapSegmentOpGenerator {
12    type O1 = SwapSegmentOp;
13    type O2 = NullOp;
14
15    fn generate(&mut self, _: &Device) -> Option<(Self::O1, Self::O2)> {
16        Some((Self::O1::new(self.segment), Self::O2 {}))
17    }
18}
19
20impl Datagram for SwapSegment {
21    type G = SwapSegmentOpGenerator;
22    type Error = Infallible;
23
24    fn operation_generator(self, _: &mut Geometry) -> Result<Self::G, Self::Error> {
25        Ok(SwapSegmentOpGenerator { segment: self })
26    }
27}