pub trait OneWireAsync {
type Status: OneWireStatus;
type BusError;
// Required methods
async fn reset(&mut self) -> OneWireResult<Self::Status, Self::BusError>;
async fn write_byte(
&mut self,
byte: u8,
) -> OneWireResult<(), Self::BusError>;
async fn read_byte(&mut self) -> OneWireResult<u8, Self::BusError>;
async fn write_bit(
&mut self,
bit: bool,
) -> OneWireResult<(), Self::BusError>;
async fn read_bit(&mut self) -> OneWireResult<bool, Self::BusError>;
fn get_overdrive_mode(&mut self) -> bool;
async fn set_overdrive_mode(
&mut self,
enable: bool,
) -> OneWireResult<(), Self::BusError>;
// Provided method
async fn address(
&mut self,
rom: Option<u64>,
) -> OneWireResult<(), Self::BusError> { ... }
}Expand description
Trait for 1-Wire communication. This trait defines the basic operations required for 1-Wire communication, such as resetting the bus, writing and reading bytes, and writing and reading bits.
Required Associated Types§
Sourcetype Status: OneWireStatus
type Status: OneWireStatus
The status type returned by the reset operation. This type must implement the OneWireStatus trait.
Required Methods§
Sourceasync fn reset(&mut self) -> OneWireResult<Self::Status, Self::BusError>
async fn reset(&mut self) -> OneWireResult<Self::Status, Self::BusError>
Sourceasync fn write_byte(&mut self, byte: u8) -> OneWireResult<(), Self::BusError>
async fn write_byte(&mut self, byte: u8) -> OneWireResult<(), Self::BusError>
Writes a byte to the device addressed using OneWireAsync::address on the 1-Wire bus.
Multiple bytes can be written in succession after addressing the device.
§Arguments
byte- The byte to write to the bus.
§Errors
This method returns an error if the write operation fails.
Sourceasync fn read_byte(&mut self) -> OneWireResult<u8, Self::BusError>
async fn read_byte(&mut self) -> OneWireResult<u8, Self::BusError>
Reads a byte from the device addressed using OneWireAsync::address on the 1-Wire bus.
Multiple bytes can be read in succession after addressing the device.
§Note
If there are more than one devices on the bus and OneWireAsync::address was not called
with a specific ROM address, the read operation will return garbage data.
§Returns
Byte read from the bus.
§Errors
This method returns an error if the read operation fails.
Sourceasync fn write_bit(&mut self, bit: bool) -> OneWireResult<(), Self::BusError>
async fn write_bit(&mut self, bit: bool) -> OneWireResult<(), Self::BusError>
Write a single bit to the device addressed using OneWireAsync::address on the 1-Wire bus.
Multiple bits can be written in succession after addressing the device.
§Arguments
bit- The byte to write.
§Errors
This method returns an error if the read operation fails.
Sourceasync fn read_bit(&mut self) -> OneWireResult<bool, Self::BusError>
async fn read_bit(&mut self) -> OneWireResult<bool, Self::BusError>
Reads a single bit from the device addressed using OneWireAsync::address on the 1-Wire bus.
Multiple bits can be read in succession after addressing the device.
§Note
If there are more than one devices on the bus and OneWireAsync::address was not called
with a specific ROM address, the read operation will return garbage data.
§Returns
The bit read from the bus.
§Errors
This method returns an error if the read operation fails.
Sourcefn get_overdrive_mode(&mut self) -> bool
fn get_overdrive_mode(&mut self) -> bool
Check if the 1-Wire bus is in overdrive mode.
§Returns
A result containing a boolean indicating whether the bus is in overdrive mode.
Sourceasync fn set_overdrive_mode(
&mut self,
enable: bool,
) -> OneWireResult<(), Self::BusError>
async fn set_overdrive_mode( &mut self, enable: bool, ) -> OneWireResult<(), Self::BusError>
Provided Methods§
Sourceasync fn address(
&mut self,
rom: Option<u64>,
) -> OneWireResult<(), Self::BusError>
async fn address( &mut self, rom: Option<u64>, ) -> OneWireResult<(), Self::BusError>
Addresses devices on the 1-Wire bus.
The first OneWireAsync::read_byte, OneWireAsync::read_bit, OneWireAsync::write_byte, OneWireAsync::write_bit operation should be preceded by this method to address devices on the bus.
Note: A OneWireAsync::read_byte or OneWireAsync::read_bit call will return garbage data if this method is called without specifying a ROM address on a bus with multiple devices.
§Arguments
rom- The ROM address of the device to address. PassNoneto skip ROM addressing and address all devices on the bus.
§Returns
A result indicating the success or failure of the operation.
If the device is successfully addressed, the method returns Ok(()).
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.