autd3_core/modulation/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
mod error;
mod sampling_config;

use std::sync::Arc;

pub use error::{ModulationError, SamplingConfigError};
pub use sampling_config::SamplingConfig;

use crate::datagram::{LoopBehavior, Segment, TransitionMode};

/// Trait for applying amplitude modulation.
///
/// See also [`Modulation`] derive macro.
///
/// [`Modulation`]: autd3_derive::Modulation
pub trait Modulation: std::fmt::Debug {
    /// Calculate the modulation data.
    fn calc(self) -> Result<Vec<u8>, ModulationError>;

    /// The sampling configuration.
    fn sampling_config(&self) -> Result<SamplingConfig, ModulationError>;
}

#[doc(hidden)]
pub struct ModulationOperationGenerator {
    pub g: Arc<Vec<u8>>,
    pub config: SamplingConfig,
    pub loop_behavior: LoopBehavior,
    pub segment: Segment,
    pub transition_mode: Option<TransitionMode>,
}