#![no_std]
#![deny(missing_docs)]
#![forbid(unsafe_code)]
#![deny(unsafe_op_in_unsafe_fn)]
#![deny(clippy::correctness)]
#![deny(
clippy::std_instead_of_core,
clippy::std_instead_of_alloc,
clippy::alloc_instead_of_core
)]
#![warn(
clippy::suspicious,
clippy::style,
clippy::complexity,
clippy::perf,
clippy::cloned_instead_of_copied,
clippy::explicit_iter_loop,
clippy::implicit_clone,
clippy::inconsistent_struct_constructor,
clippy::manual_assert,
clippy::manual_let_else,
clippy::match_same_arms,
clippy::needless_pass_by_value,
clippy::semicolon_if_nothing_returned,
clippy::uninlined_format_args,
clippy::unnested_or_patterns
)]
#![allow(
clippy::mod_module_files,
clippy::self_named_module_files,
clippy::similar_names,
clippy::too_many_arguments,
clippy::struct_excessive_bools,
clippy::fn_params_excessive_bools,
clippy::type_complexity,
clippy::must_use_candidate,
clippy::assertions_on_constants,
clippy::cast_possible_truncation,
clippy::cast_possible_wrap,
clippy::cast_sign_loss,
clippy::cast_precision_loss,
clippy::cast_lossless,
clippy::panic_in_result_fn,
clippy::unwrap_used,
clippy::expect_used,
clippy::module_name_repetitions,
clippy::wildcard_imports,
clippy::items_after_statements,
clippy::let_underscore_future
)]
pub mod compiled;
mod dsl;
pub mod error;
pub mod motor;
pub mod runtime;
pub use compiled::{CompiledCatalog, CompiledCatalogError, CompiledHapticDef};
pub use dsl::{Instruction, LoopMode, Program, Ramp};
pub use error::Error;
pub use motor::{
DEFAULT_ERM_PROFILE, DEFAULT_LRA_PROFILE, DriveCommand, ErmConfig, LraConfig, MotorConfig,
MotorKind, MotorProfile,
};
pub use runtime::{Frame, Runner};
pub use ph_curves::{
self, Curve, MonotonicCurve, MonotonicCurveLut, MonotonicCurveLut256, Rounding, Tickless,
TicklessDeadline, TicklessSchedule, UnitValue,
};
#[cfg(test)]
extern crate std;