Struct embedded_controls::Encoder
source · pub struct Encoder<SwitchA: InputSwitch, SwitchB: InputSwitch, Config: EncoderConfig> { /* private fields */ }Expand description
Concrete implementation of encoder.
Type Params
SwitchA - InputSwitch that provides input A channel.
SwitchB - InputSwitch that provides input B channel.
Config - EncoderConfig that provides configs for encoder.
Example
ⓘ
encoder_config!(
SomeEncoderConfig,
debounce_timer: MyElapsedTimer = MyElapsedTimer::new(2.millis()),
counts_div: i8 = 4
);
type MyEncoder<SwitchA, SwitchB> = Encoder<SwitchA, SwitchB, SomeEncoderConfig>;
let mut clock = SysClock::new();
let mut encoder = MyEncoder::new(
pin_a.into_active_low_switch(),
pin_b.into_active_low_switch(),
);
loop {
match encoder.update(clock.now()).unwrap() {
EncoderEvent::NoTurn => do_something_when_no_turn(),
EncoderEvent::ClockwiseTurn => do_something_upon_clockwise_turn(),
EncoderEvent::CounterClockwiseTurn => do_something_upon_counter_clockwise_turn(),
}
}Implementations
sourceimpl<SwitchA: InputSwitch, SwitchB: InputSwitch, Config: EncoderConfig> Encoder<SwitchA, SwitchB, Config>
impl<SwitchA: InputSwitch, SwitchB: InputSwitch, Config: EncoderConfig> Encoder<SwitchA, SwitchB, Config>
sourcepub fn new(input_switch_a: SwitchA, input_switch_b: SwitchB) -> Self
pub fn new(input_switch_a: SwitchA, input_switch_b: SwitchB) -> Self
Creates a new Encoder<SwitchA, SwitchB, Config> from concretes SwitchA, SwitchB.
sourcepub fn release_input_switches(self) -> (SwitchA, SwitchB)
pub fn release_input_switches(self) -> (SwitchA, SwitchB)
Consumses self and release (SwitchA, SwitchB).
Trait Implementations
sourceimpl<SwitchA: InputSwitch, SwitchB: InputSwitch, Config: EncoderConfig> Control for Encoder<SwitchA, SwitchB, Config>where
SwitchA::Error: From<SwitchB::Error>,
impl<SwitchA: InputSwitch, SwitchB: InputSwitch, Config: EncoderConfig> Control for Encoder<SwitchA, SwitchB, Config>where
SwitchA::Error: From<SwitchB::Error>,
type Timestamp = <<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp
type Event = EncoderEvent
type Error = <SwitchA as InputSwitch>::Error
Auto Trait Implementations
impl<SwitchA, SwitchB, Config> RefUnwindSafe for Encoder<SwitchA, SwitchB, Config>where
Config: RefUnwindSafe,
SwitchA: RefUnwindSafe,
SwitchB: RefUnwindSafe,
<Config as EncoderConfig>::Counts: RefUnwindSafe,
<<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp: RefUnwindSafe,
impl<SwitchA, SwitchB, Config> Send for Encoder<SwitchA, SwitchB, Config>where
Config: Send,
SwitchA: Send,
SwitchB: Send,
<Config as EncoderConfig>::Counts: Send,
<<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp: Send,
impl<SwitchA, SwitchB, Config> Sync for Encoder<SwitchA, SwitchB, Config>where
Config: Sync,
SwitchA: Sync,
SwitchB: Sync,
<Config as EncoderConfig>::Counts: Sync,
<<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp: Sync,
impl<SwitchA, SwitchB, Config> Unpin for Encoder<SwitchA, SwitchB, Config>where
Config: Unpin,
SwitchA: Unpin,
SwitchB: Unpin,
<Config as EncoderConfig>::Counts: Unpin,
<<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp: Unpin,
impl<SwitchA, SwitchB, Config> UnwindSafe for Encoder<SwitchA, SwitchB, Config>where
Config: UnwindSafe,
SwitchA: UnwindSafe,
SwitchB: UnwindSafe,
<Config as EncoderConfig>::Counts: UnwindSafe,
<<Config as DebouncedInputConfig>::Timer as ElapsedTimer>::Timestamp: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more