autd3_core/modulation/
mod.rs1mod error;
2
3use crate::firmware::{
4 FirmwareLimits, SamplingConfig, Segment, transition_mode::TransitionModeParams,
5};
6use alloc::{sync::Arc, vec::Vec};
7pub use error::ModulationError;
8
9pub trait Modulation {
15 fn calc(self, limits: &FirmwareLimits) -> Result<Vec<u8>, ModulationError>;
17
18 #[must_use]
20 fn sampling_config(&self) -> SamplingConfig;
21}
22
23#[doc(hidden)]
24pub struct ModulationOperationGenerator {
25 pub g: Arc<Vec<u8>>,
26 pub config: SamplingConfig,
27 pub limits: FirmwareLimits,
28 pub rep: u16,
29 pub segment: Segment,
30 pub transition_params: TransitionModeParams,
31}
32
33#[derive(Debug, Clone, PartialEq)]
34pub struct ModulationInspectionResult {
36 pub data: Vec<u8>,
38 pub config: SamplingConfig,
40}