autd3_core/modulation/
mod.rs1mod error;
2
3use std::sync::Arc;
4
5use crate::{
6 datagram::{LoopBehavior, Segment, TransitionMode},
7 derive::FirmwareLimits,
8 sampling_config::SamplingConfig,
9};
10pub use error::ModulationError;
11
12pub trait Modulation: std::fmt::Debug {
18 fn calc(self, limits: &FirmwareLimits) -> Result<Vec<u8>, ModulationError>;
20
21 #[must_use]
23 fn sampling_config(&self) -> SamplingConfig;
24}
25
26#[doc(hidden)]
27pub struct ModulationOperationGenerator {
28 pub g: Arc<Vec<u8>>,
29 pub config: SamplingConfig,
30 pub limits: FirmwareLimits,
31 pub loop_behavior: LoopBehavior,
32 pub segment: Segment,
33 pub transition_mode: Option<TransitionMode>,
34}
35
36#[derive(Debug, Clone, PartialEq)]
37pub struct ModulationInspectionResult {
39 pub name: String,
41 pub data: Vec<u8>,
43 pub config: SamplingConfig,
45 pub loop_behavior: LoopBehavior,
47 pub segment: Segment,
49 pub transition_mode: Option<TransitionMode>,
51}