Documentation
pub use crate::gain;
pub use crate::modulation;

pub use crate::{
    controller::{Controller, ParallelMode, SenderOption, SpinSleeper},
    datagram::{
        gain::Cache as GainCache,
        gain::{Bessel, BesselOption, Focus, FocusOption, Null, Plane, PlaneOption, Uniform},
        modulation::Cache as ModulationCache,
        modulation::{
            Fir, FourierOption, RadiationPressure, Sine, SineOption, Square, SquareOption, Static,
        },
        stm::{Circle, Line},
    },
    error::AUTDError,
    link::Nop,
};

pub use autd3_core::modulation::Modulation;

pub use autd3_driver::{
    autd3_device::AUTD3,
    common::{Hz, PI, ULTRASOUND_FREQ, deg, kHz, mm, rad},
    datagram::{
        Clear, ControlPoint, ControlPoints, FixedCompletionTime, FixedUpdateRate, FociSTM,
        ForceFan, GPIOOutputs, GainSTM, GainSTMOption, Group, PhaseCorrection, PulseWidthEncoder,
        ReadsFPGAState, Silencer, SwapSegment, WithLoopBehavior, WithSegment, v10,
    },
    error::AUTDDriverError,
    ethercat::DcSysTime,
    firmware::{
        cpu::GainSTMMode,
        fpga::{
            Drive, EmitIntensity, GPIOIn, GPIOOut, GPIOOutputType, LoopBehavior, Phase, PulseWidth,
            SamplingConfig, Segment, TransitionMode,
        },
    },
    geometry::{EulerAngle, Geometry, Point3, Quaternion, UnitQuaternion, UnitVector3, Vector3},
};