quadrature_encoder/
lib.rs

1//! An efficient `no_std`-compatible implementation of a quadrature encoder driver,
2//! based on a finite-state-transducer with support for different step-modes.
3#![warn(missing_docs)]
4#![cfg_attr(not(test), no_std)]
5
6mod encoder;
7mod mode;
8mod traits;
9pub use quadrature_decoder::{Error as QuadratureError, FullStep, HalfStep, QuadStep};
10
11pub use self::{
12    encoder::{
13        IncrementalEncoder, IndexedIncrementalEncoder, IndexedLinearEncoder, IndexedRotaryEncoder,
14        LinearEncoder, RotaryEncoder,
15    },
16    mode::{
17        Async, Blocking, Linear, LinearMovement, OperationMode, PollMode, Rotary, RotaryMovement,
18    },
19};
20
21/// An error indicating an input pin issue.
22#[repr(u8)]
23#[derive(Clone, Copy, PartialEq, Eq, Debug)]
24pub enum InputPinError {
25    /// Failed reading clock pin.
26    PinClk,
27    /// Failed reading data pin.
28    PinDt,
29    /// Failed reading index pin.
30    PinIdx,
31}
32
33/// An error indicating quadrature or input pin issues.
34#[repr(u8)]
35#[derive(Clone, Copy, PartialEq, Eq, Debug)]
36pub enum Error {
37    /// Quadrature error.
38    Quadrature(QuadratureError),
39    /// Input pin error.
40    InputPin(InputPinError),
41}