embassy-nrf

Crates

git

Versions

nrf9161-ns

Flavors

Skip to main content

OutputOpenDrain

Struct OutputOpenDrain 

Source
pub struct OutputOpenDrain<'d, M: Mode = Blocking> { /* private fields */ }
Expand description

GPIO output open-drain driver.

The pin drives the line low when set low and leaves it floating (disconnected) when set high, so the line can be shared with other open-drain devices (wired-and). The input buffer stays connected, so the actual line level can be read back with is_high and friends.

Implementations§

Source§

impl<'d> OutputOpenDrain<'d, Blocking>

Source

pub fn new( pin: Peri<'d, impl Pin>, initial_output: Level, drive: OutputDrive, pull: Pull, ) -> Self

Create a blocking GPIO output open-drain driver for a Pin with the provided Level, OutputDrive and Pull configuration.

drive selects the drive strength used when driving the line low. It should be one of the *Disconnect1 variants (typically OutputDrive::Standard0Disconnect1), otherwise the pin will actively drive the line high as well.

Source§

impl<'d> OutputOpenDrain<'d, Async>

Source

pub fn new_async<T: GpiotePin>( pin: Peri<'d, T>, irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, initial_output: Level, drive: OutputDrive, pull: Pull, ) -> Self

Create an async GPIO output open-drain driver for a Pin with the provided Level, OutputDrive and Pull configuration.

The pin’s GPIOTE interrupt must be bound to InterruptHandler for this pin.

drive selects the drive strength used when driving the line low. It should be one of the *Disconnect1 variants (typically OutputDrive::Standard0Disconnect1), otherwise the pin will actively drive the line high as well.

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.

Source§

impl<'d, M: Mode> OutputOpenDrain<'d, M>

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 output_level(&self) -> Level

Get the current output level.

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 level(&self) -> Level

Get the pin input level.

Source§

impl<'d, M: Mode> OutputOpenDrain<'d, M>

Source

pub fn persist(self)

Give up the pin, leaving it configured.

Dropping disconnects the pin, this doesn’t. The pin keeps its configuration after the borrow it came from ends.

Trait Implementations§

Source§

impl<'d, M: Mode> ErrorType for OutputOpenDrain<'d, M>

Source§

type Error = !

Error type
Source§

impl<'d, M: Mode> InputPin for OutputOpenDrain<'d, M>

Source§

type Error = !

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, M: Mode> InputPin for OutputOpenDrain<'d, M>

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, M: Mode> OutputPin for OutputOpenDrain<'d, M>

Source§

type Error = !

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, M: Mode> OutputPin for OutputOpenDrain<'d, M>

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, M: Mode> StatefulOutputPin for OutputOpenDrain<'d, M>

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, M: Mode> StatefulOutputPin for OutputOpenDrain<'d, M>

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, M: Mode> ToggleableOutputPin for OutputOpenDrain<'d, M>

Source§

type Error = !

Error type
Source§

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

Toggle pin output.
Source§

impl<'d> Wait for OutputOpenDrain<'d, Async>

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, M = Blocking> !UnwindSafe for OutputOpenDrain<'d, M>

§

impl<'d, M> Freeze for OutputOpenDrain<'d, M>
where Flex<'d, M>: Freeze,

§

impl<'d, M> RefUnwindSafe for OutputOpenDrain<'d, M>
where Flex<'d, M>: RefUnwindSafe,

§

impl<'d, M> Send for OutputOpenDrain<'d, M>
where Flex<'d, M>: Send,

§

impl<'d, M> Sync for OutputOpenDrain<'d, M>
where Flex<'d, M>: Sync,

§

impl<'d, M> Unpin for OutputOpenDrain<'d, M>
where Flex<'d, M>: Unpin,

§

impl<'d, M> UnsafeUnpin for OutputOpenDrain<'d, M>
where Flex<'d, M>: UnsafeUnpin,

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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.