#![warn(missing_docs)]
#![cfg_attr(not(test), no_std)]
mod decoder;
mod index_decoder;
mod state_transducer;
mod validator;
pub use self::decoder::{IncrementalDecoder, IndexedIncrementalDecoder};
use self::state_transducer::StateTransducer;
mod sealed {
pub trait Sealed {}
}
#[repr(u8)]
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[allow(non_camel_case_types)]
pub enum Error {
E00_11 = 0b_00_11,
E11_00 = 0b_11_00,
E01_10 = 0b_01_10,
E10_01 = 0b_10_01,
}
#[repr(i8)]
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Debug)]
pub enum Change {
Positive = 1,
Negative = -1,
}
pub trait StepMode: sealed::Sealed {
const PULSES_PER_CYCLE: usize;
}
pub struct FullStep;
impl sealed::Sealed for FullStep {}
impl StepMode for FullStep {
const PULSES_PER_CYCLE: usize = 1;
}
pub struct HalfStep;
impl sealed::Sealed for HalfStep {}
impl StepMode for HalfStep {
const PULSES_PER_CYCLE: usize = 2;
}
pub struct QuadStep;
impl sealed::Sealed for QuadStep {}
impl StepMode for QuadStep {
const PULSES_PER_CYCLE: usize = 4;
}