autd3-core 38.1.0

AUTD3 core traits and types
Documentation
mod error;

use crate::firmware::{SamplingConfig, Segment, transition_mode::TransitionModeParams};
pub use error::ModulationError;
use std::sync::Arc;

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

    /// The sampling configuration.
    #[must_use]
    fn sampling_config(&self) -> SamplingConfig;
}

#[doc(hidden)]
pub struct ModulationOperationGenerator {
    pub g: Arc<Vec<u8>>,
    pub config: SamplingConfig,
    pub rep: u16,
    pub segment: Segment,
    pub transition_params: TransitionModeParams,
}

#[derive(Debug, Clone, PartialEq)]
/// The result of the [`Modulation`] inspection.
pub struct ModulationInspectionResult {
    /// The data of the modulation.
    pub data: Vec<u8>,
    /// The sampling configuration.
    pub config: SamplingConfig,
}