Struct InputPin

Source
pub struct InputPin { /* private fields */ }
Expand description

Provides the embedded_hal::digital and embedded_hal_async::digital::Wait traits for a gpiocdev::Request containing a single input pin using the async-io reactor.

Holding the InputPin grants exclusive access to the pin.

Do NOT drop the InputPin until you are completely done with it. Dropping and re-requesting the line is far more expensive than getting the value.

Implementations§

Source§

impl InputPin

Source

pub fn new<P>(chip: P, offset: u32) -> Result<Self, Error>
where P: AsRef<Path>,

Creates a new input pin for the given offset on the given chip.

use embedded_hal::digital::InputPin;
use embedded_hal_async::digital::Wait;

let mut pin = gpiocdev_embedded_hal::async_io::InputPin::new("/dev/gpiochip0", 4)?;
if pin.is_high()? {
    println!("Input is high.");
}
pin.wait_for_falling_edge().await?;
Source

pub fn into_output_pin(self, state: PinState) -> Result<OutputPin, Error>

Set this pin to output mode.

Trait Implementations§

Source§

impl ErrorType for InputPin

Source§

type Error = Error

Errors returned by the InputPin.

Source§

impl From<InputPin> for InputPin

Source§

fn from(pin: InputPin) -> Self

Convert a synchronous InputPin into an async_io InputPin.

Source§

impl From<InputPin> for InputPin

Source§

fn from(pin: InputPin) -> Self

Convert an async_io InputPin into a synchronous InputPin.

Source§

impl From<InputPin> for Request

Source§

fn from(pin: InputPin) -> Self

Convert the InputPin into the contained Request.

Source§

impl InputPin for InputPin

Source§

fn is_high(&mut self) -> Result<bool, Self::Error>

Is the input pin high?
Source§

fn is_low(&mut self) -> Result<bool, Self::Error>

Is the input pin low?
Source§

impl Wait for InputPin

Source§

async fn wait_for_high(&mut self) -> Result<(), Self::Error>

Wait for the pin to go high.

§Note

The implementation is event driven, and only looks for events when waiting for the level to change. If the returned future resolves then subsequent calls are effectively a no-op. Wait on an edge or the pin to go low instead.

Source§

async fn wait_for_low(&mut self) -> Result<(), Self::Error>

Wait for the pin to go low.

§Note

The implementation is event driven, and only looks for events when waiting for the level to change. If the returned future resolves then subsequent calls are effectively a no-op. Wait on an edge or the pin to go high instead.

Source§

async fn wait_for_rising_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo a transition from low to high. Read more
Source§

async fn wait_for_falling_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo a transition from high to low. Read more
Source§

async fn wait_for_any_edge(&mut self) -> Result<(), Self::Error>

Wait for the pin to undergo any transition, i.e low to high OR high to low.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more