OneWire

Struct OneWire 

Source
pub struct OneWire<'a, P: InputPin + OutputPin> { /* private fields */ }
Expand description

Implementations§

Source§

impl<'a, P: InputPin + OutputPin> OneWire<'a, P>

Source

pub fn new(pin: &'a mut P) -> Self

pin needs to be an open drain pin

Source

pub fn initialize_bus( &mut self, delay: &mut impl DelayNs, ) -> Result<bool, P::Error>

Sends a RESET pulse and listens for a PRESENCE pulse.

Retrurns Ok(true), if a PRESENCE pulse is received, Ok(false) if not.

delay must be able to accurately handle delays in the range of 1-480 us.

Source

pub fn write_bit( &mut self, bit: bool, delay: &mut impl DelayNs, ) -> Result<(), P::Error>

Writes a single bit to the OneWire bus.

delay must be able to accurately handle delays in the range of 5-65 us.

Source

pub fn read_bit(&mut self, delay: &mut impl DelayNs) -> Result<bool, P::Error>

Reads a single bit from the OneWire bus.

delay must be able to accurately handle delays in the range of 3-53 us.

Source

pub fn write_byte( &mut self, byte: u8, delay: &mut impl DelayNs, ) -> Result<(), P::Error>

Writes a byte to the OneWire bus, least significant bit first.

For requirements on delay, see OneWire::write_bit.

Source

pub fn read_byte(&mut self, delay: &mut impl DelayNs) -> Result<u8, P::Error>

Reads a byte from the OneWire bus, least significant bit first.

For requirements on delay, see OneWire::read_bit.

Source

pub fn read_rom( &mut self, delay: &mut impl DelayNs, ) -> Result<RomCode, OneWireError<P::Error>>

Issues a Read Rom command to the OneWire bus.

Only yields valid data, if exactly one other device is connected to the OneWire bus. Since all devices connected to the OneWire bus will respond, the data will be corrupt if multiple do so.

Source

pub fn match_rom( &mut self, rom_code: RomCode, delay: &mut impl DelayNs, ) -> Result<(), OneWireError<P::Error>>

Issues a Match Rom command to the OneWire bus.

Source

pub fn skip_rom( &mut self, delay: &mut impl DelayNs, ) -> Result<(), OneWireError<P::Error>>

Issues a Skip Rom command to the OneWire bus.

Source

pub fn search_rom_iter<'b, D: DelayNs>( &'b mut self, delay: &'b mut D, ) -> OneWireRomIter<'a, 'b, P, D, false>

The iterator performs a Search Rom procedure.

Source

pub fn alarm_search_iter<'b, D: DelayNs>( &'b mut self, delay: &'b mut D, ) -> OneWireRomIter<'a, 'b, P, D, true>

The iterator performs an Alarm Search procedure.

Auto Trait Implementations§

§

impl<'a, P> Freeze for OneWire<'a, P>

§

impl<'a, P> RefUnwindSafe for OneWire<'a, P>
where P: RefUnwindSafe,

§

impl<'a, P> Send for OneWire<'a, P>
where P: Send,

§

impl<'a, P> Sync for OneWire<'a, P>
where P: Sync,

§

impl<'a, P> Unpin for OneWire<'a, P>

§

impl<'a, P> !UnwindSafe for OneWire<'a, P>

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.