riot_wrappers::gpio

Struct GPIO

Source
pub struct GPIO(gpio_t);
Available on riot_module_periph_gpio only.
Expand description

A Rust representation of RIOT’s gpio_t, representing a single pin in no particular configuration.

Tuple Fields§

§0: gpio_t

Implementations§

Source§

impl GPIO

Source

pub fn from_c(gpio: gpio_t) -> Option<Self>

Create a GPIO from a gpio_t

This is as safe as any device acquisition from C is – RIOT’s drivers are (hopefully) written in such a way that concurrent writes to adjacent pins don’t interfere, and those to the same device are “just” racy.

(This also means that it is completely possible to have two objects for the same pin configured in different states, changing the mode while the other is around. The underlying operating system operates this, but interactions with a reconfigured pin will obviously not have the intended effect).

Source

pub fn from_port_and_pin(port: u32, pin: u32) -> Option<Self>

Create a GPIO from its port and pin numbers

use riot_wrappers::gpio::GPIO;
let pin_c8 = GPIO::from_port_and_pin(3, 8);

See .from_c() for safety constraints.

Source

pub fn configure_as_output( self, mode: OutputMode, ) -> Result<OutputGPIO, NumericError>

Source

pub fn configure_as_input( self, mode: InputMode, ) -> Result<InputGPIO, NumericError>

Source

pub fn configure_as_inout( self, mode: InOutMode, ) -> Result<InOutGPIO, NumericError>

Source

pub fn to_c(&self) -> gpio_t

Get a gpio_t from a configured pin

This is typically useful when populating a RIOT mechanism that works on a pre-configured pin.

Auto Trait Implementations§

§

impl Freeze for GPIO

§

impl RefUnwindSafe for GPIO

§

impl Send for GPIO

§

impl Sync for GPIO

§

impl Unpin for GPIO

§

impl UnwindSafe for GPIO

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, 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> IntoSwitch for T

Source§

fn into_switch<ActiveLevel>(self) -> Switch<T, ActiveLevel>

Consumes the IoPin returning a Switch of the appropriate ActiveLevel. Read more
Source§

fn into_active_low_switch(self) -> Switch<Self, ActiveLow>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveLow>. Read more
Source§

fn into_active_high_switch(self) -> Switch<Self, ActiveHigh>
where Self: Sized,

Consumes the IoPin returning a Switch<IoPin, ActiveHigh>. Read more
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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 1 byte