Skip to main content

signal_filters/
lib.rs

1#![doc = include_str!("../README.md")]
2// Conventions for generics used in this crate:
3//    T: general type, eg f32, Vector3, Vector3f32, Quaternion etc
4//    R: real number type ie f32 or f64
5//    F: filter type, eg Pt1Filter, BiquadFilter etc
6//#![doc(html_math_jax_enabled)]
7#![no_std]
8#![deny(clippy::unwrap_used)]
9#![deny(clippy::expect_used)]
10#![deny(clippy::panic)]
11//#![deny(missing_docs)]
12#![deny(
13    missing_copy_implementations,
14    missing_debug_implementations,
15    trivial_casts,
16    trivial_numeric_casts,
17    unused_must_use,
18    unused_extern_crates,
19    unused_import_braces,
20    unused_qualifications,
21    unused_results
22)]
23#![warn(unused_results)]
24#![warn(clippy::pedantic)]
25#![warn(clippy::doc_paragraphs_missing_punctuation)]
26
27#[cfg(all(not(feature = "std"), not(feature = "libm")))]
28compile_error!("signal-filters requires either the `std` or `libm` feature to provide a MulAdd trait in num-traits.");
29
30mod biquad_filter;
31mod circular_buffer;
32mod filters;
33mod median_filter;
34mod moving_average_filter;
35mod pt_filters;
36mod rolling_buffer;
37mod slew_filter;
38
39pub use biquad_filter::BiquadFilter;
40pub use biquad_filter::{BiquadFilterVector2f32, BiquadFilterVector3f32, BiquadFilterVector4f32, BiquadFilterf32};
41pub use biquad_filter::{BiquadFilterVector2f64, BiquadFilterVector3f64, BiquadFilterVector4f64, BiquadFilterf64};
42
43pub use circular_buffer::CircularBuffer;
44
45pub use filters::{SignalFilter, UpdateFilter};
46
47pub use median_filter::{MedianFilter3, MedianFilter5};
48pub use median_filter::{MedianFilter3f32, MedianFilter5f32};
49pub use median_filter::{MedianFilter3f64, MedianFilter5f64};
50
51pub use moving_average_filter::MovingAverageFilter;
52pub use moving_average_filter::{
53    MovingAverageFilterVector2f32, MovingAverageFilterVector3f32, MovingAverageFilterVector4f32, MovingAverageFilterf32,
54};
55pub use moving_average_filter::{
56    MovingAverageFilterVector2f64, MovingAverageFilterVector3f64, MovingAverageFilterVector4f64, MovingAverageFilterf64,
57};
58
59pub use pt_filters::{Pt1Filter, Pt1Filterf32, Pt1Filterf64};
60pub use pt_filters::{Pt1FilterVector2Vector2f32, Pt1FilterVector3Vector3f32, Pt1FilterVector4Vector4f32};
61pub use pt_filters::{Pt1FilterVector2Vector2f64, Pt1FilterVector3Vector3f64, Pt1FilterVector4Vector4f64};
62pub use pt_filters::{Pt1FilterVector2f32, Pt1FilterVector3f32, Pt1FilterVector4f32};
63pub use pt_filters::{Pt1FilterVector2f64, Pt1FilterVector3f64, Pt1FilterVector4f64};
64
65pub use pt_filters::{Pt2Filter, Pt2Filterf32, Pt2Filterf64};
66pub use pt_filters::{Pt2FilterVector2Vector2f32, Pt2FilterVector3Vector3f32, Pt2FilterVector4Vector4f32};
67pub use pt_filters::{Pt2FilterVector2Vector2f64, Pt2FilterVector3Vector3f64, Pt2FilterVector4Vector4f64};
68pub use pt_filters::{Pt2FilterVector2f32, Pt2FilterVector3f32, Pt2FilterVector4f32};
69pub use pt_filters::{Pt2FilterVector2f64, Pt2FilterVector3f64, Pt2FilterVector4f64};
70
71pub use pt_filters::{Pt3Filter, Pt3Filterf32, Pt3Filterf64};
72pub use pt_filters::{Pt3FilterVector2Vector2f32, Pt3FilterVector3Vector3f32, Pt3FilterVector4Vector4f32};
73pub use pt_filters::{Pt3FilterVector2Vector2f64, Pt3FilterVector3Vector3f64, Pt3FilterVector4Vector4f64};
74pub use pt_filters::{Pt3FilterVector2f32, Pt3FilterVector3f32, Pt3FilterVector4f32};
75pub use pt_filters::{Pt3FilterVector2f64, Pt3FilterVector3f64, Pt3FilterVector4f64};
76
77pub use rolling_buffer::RollingBuffer;
78
79pub use slew_filter::{LimitSlew, SlewRateLimiter, SlewRateLimiterf32, SlewRateLimiterf64};