autd3_core/modulation/
mod.rs

1mod error;
2
3use crate::firmware::{SamplingConfig, Segment, transition_mode::TransitionModeParams};
4pub use error::ModulationError;
5use std::sync::Arc;
6
7/// A trait for applying amplitude modulation.
8///
9/// See also [`Modulation`] derive macro.
10///
11/// [`Modulation`]: autd3_derive::Modulation
12pub trait Modulation {
13    /// Calculate the modulation data.
14    fn calc(self) -> Result<Vec<u8>, ModulationError>;
15
16    /// The sampling configuration.
17    #[must_use]
18    fn sampling_config(&self) -> SamplingConfig;
19}
20
21#[doc(hidden)]
22pub struct ModulationOperationGenerator {
23    pub g: Arc<Vec<u8>>,
24    pub config: SamplingConfig,
25    pub rep: u16,
26    pub segment: Segment,
27    pub transition_params: TransitionModeParams,
28}
29
30#[derive(Debug, Clone, PartialEq)]
31/// The result of the [`Modulation`] inspection.
32pub struct ModulationInspectionResult {
33    /// The data of the modulation.
34    pub data: Vec<u8>,
35    /// The sampling configuration.
36    pub config: SamplingConfig,
37}