embassy-nrf

Crates

git

Versions

nrf52810

Flavors

๐Ÿ“ฃ We want to hear from you! Fill the Rust Embedded 2024 micro-survey.

Struct embassy_nrf::gpio::Flex

source ยท
pub struct Flex<'d> { /* private fields */ }
Expand description

GPIO flexible pin.

This pin can either be a disconnected, input, or output pin, or both. The level register bit will remain set while not in output mode, so the pinโ€™s level will be โ€˜rememberedโ€™ when it is not in output mode.

Implementationsยง

sourceยง

impl<'d> Flex<'d>

source

pub fn new(pin: impl Peripheral<P = impl Pin> + 'd) -> Self

Wrap the pin in a Flex.

The pin remains disconnected. The initial output level is unspecified, but can be changed before the pin is put into output mode.

source

pub fn set_as_input(&mut self, pull: Pull)

Put the pin into input mode.

source

pub fn set_as_output(&mut self, drive: OutputDrive)

Put the pin into output mode.

The pin level will be whatever was set before (or low by default). If you want it to begin at a specific level, call set_high/set_low on the pin first.

source

pub fn set_as_input_output(&mut self, pull: Pull, drive: OutputDrive)

Put the pin into input + output mode.

This is commonly used for โ€œopen drainโ€ mode. If you set drive = Standard0Disconnect1, the hardware will drive the line low if you set it to low, and will leave it floating if you set it to high, in which case you can read the input to figure out whether another device is driving the line low.

The pin level will be whatever was set before (or low by default). If you want it to begin at a specific level, call set_high/set_low on the pin first.

source

pub fn set_as_disconnected(&mut self)

Put the pin into disconnected mode.

source

pub fn is_high(&self) -> bool

Get whether the pin input level is high.

source

pub fn is_low(&self) -> bool

Get whether the pin input level is low.

source

pub fn get_level(&self) -> Level

Get the pin input level.

source

pub fn set_high(&mut self)

Set the output as high.

source

pub fn set_low(&mut self)

Set the output as low.

source

pub fn toggle(&mut self)

Toggle the output level.

source

pub fn set_level(&mut self, level: Level)

Set the output level.

source

pub fn is_set_high(&self) -> bool

Get whether the output level is set to high.

source

pub fn is_set_low(&self) -> bool

Get whether the output level is set to low.

source

pub fn get_output_level(&self) -> Level

Get the current output level.

sourceยง

impl<'d> Flex<'d>

source

pub async fn wait_for_high(&mut self)

Wait until the pin is high. If it is already high, return immediately.

source

pub async fn wait_for_low(&mut self)

Wait until the pin is low. If it is already low, return immediately.

source

pub async fn wait_for_rising_edge(&mut self)

Wait for the pin to undergo a transition from low to high.

source

pub async fn wait_for_falling_edge(&mut self)

Wait for the pin to undergo a transition from high to low.

source

pub async fn wait_for_any_edge(&mut self)

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

Trait Implementationsยง

sourceยง

impl<'d> Drop for Flex<'d>

sourceยง

fn drop(&mut self)

Executes the destructor for this type. Read more
sourceยง

impl<'d> ErrorType for Flex<'d>

sourceยง

type Error = Infallible

Error type
sourceยง

impl<'d> InputPin for Flex<'d>

Implement embedded_hal_02::digital::v2::InputPin for Flex;

If the pin is not in input mode the result is unspecified.

sourceยง

type Error = Infallible

Error type
sourceยง

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

Is the input pin high?
sourceยง

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

Is the input pin low?
sourceยง

impl<'d> InputPin for Flex<'d>

Implement [InputPin] for Flex;

If the pin is not in input mode the result is unspecified.

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<'d> OutputPin for Flex<'d>

sourceยง

type Error = Infallible

Error type
sourceยง

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

Drives the pin high Read more
sourceยง

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

Drives the pin low Read more
sourceยง

fn set_state(&mut self, state: PinState) -> Result<(), Self::Error>

Drives the pin high or low depending on the provided value Read more
sourceยง

impl<'d> OutputPin for Flex<'d>

sourceยง

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

Drives the pin high. Read more
sourceยง

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

Drives the pin low. Read more
sourceยง

fn set_state(&mut self, state: PinState) -> Result<(), Self::Error>

Drives the pin high or low depending on the provided value. Read more
sourceยง

impl<'d> StatefulOutputPin for Flex<'d>

sourceยง

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

Is the pin in drive high mode? Read more
sourceยง

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

Is the pin in drive low mode? Read more
sourceยง

impl<'d> StatefulOutputPin for Flex<'d>

sourceยง

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

Is the pin in drive high mode? Read more
sourceยง

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

Is the pin in drive low mode? Read more
sourceยง

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

Toggle pin output.
sourceยง

impl<'d> ToggleableOutputPin for Flex<'d>

sourceยง

type Error = Infallible

Error type
sourceยง

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

Toggle pin output.
sourceยง

impl<'d> Wait for Flex<'d>

sourceยง

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

Wait until the pin is high. If it is already high, return immediately. Read more
sourceยง

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

Wait until the pin is low. If it is already low, return immediately. Read more
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ยง

ยง

impl<'d> Freeze for Flex<'d>

ยง

impl<'d> RefUnwindSafe for Flex<'d>

ยง

impl<'d> Send for Flex<'d>

ยง

impl<'d> Sync for Flex<'d>

ยง

impl<'d> Unpin for Flex<'d>

ยง

impl<'d> !UnwindSafe for Flex<'d>

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> Az for T

sourceยง

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
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<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

sourceยง

fn cast_from(src: Src) -> Dst

Casts the value.
sourceยง

impl<T> CheckedAs for T

sourceยง

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
sourceยง

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

sourceยง

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
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<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

sourceยง

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
sourceยง

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

sourceยง

fn lossy_into(self) -> Dst

Performs the conversion.
sourceยง

impl<T> OverflowingAs for T

sourceยง

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
sourceยง

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

sourceยง

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
sourceยง

impl<T> Same for T

sourceยง

type Output = T

Should always be Self
sourceยง

impl<T> SaturatingAs for T

sourceยง

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
sourceยง

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

sourceยง

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
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> UnwrappedAs for T

sourceยง

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
sourceยง

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

sourceยง

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
sourceยง

impl<T> WrappingAs for T

sourceยง

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
sourceยง

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

sourceยง

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.