pub struct I2c<I> { /* private fields */ }
Expand description
A safe wrapper around an I2C device.
Implementations§
Source§impl<I> I2c<I>
impl<I> I2c<I>
Sourcepub fn into_inner(self) -> I
pub fn into_inner(self) -> I
Consumes the I2C handle to return the inner file descriptor.
Source§impl<I: AsRawFd> I2c<I>
impl<I: AsRawFd> I2c<I>
Sourcepub fn i2c_set_retries(&self, value: usize) -> Result<()>
pub fn i2c_set_retries(&self, value: usize) -> Result<()>
Sets the number of times to retry communication before failing.
Sourcepub fn i2c_set_timeout(&self, duration: Duration) -> Result<()>
pub fn i2c_set_timeout(&self, duration: Duration) -> Result<()>
Sets a timeout for I2C operations
Sourcepub fn smbus_set_slave_address(
&mut self,
address: u16,
tenbit: bool,
) -> Result<()>
pub fn smbus_set_slave_address( &mut self, address: u16, tenbit: bool, ) -> Result<()>
Set the slave address to communicate with.
Sourcepub fn smbus_set_pec(&self, pec: bool) -> Result<()>
pub fn smbus_set_pec(&self, pec: bool) -> Result<()>
Enable or disable SMBus Packet Error Checking.
Sourcepub fn i2c_functionality(&self) -> Result<Functionality>
pub fn i2c_functionality(&self) -> Result<Functionality>
Retrieve the capabilities of the I2C device. These should be checked before attempting to use certain SMBus commands or I2C flags.
Sourcepub fn i2c_transfer_flags(&self) -> Result<(ReadFlags, WriteFlags)>
pub fn i2c_transfer_flags(&self) -> Result<(ReadFlags, WriteFlags)>
i2c_transfer
capabilities of the I2C device. These should be checked
before attempting to use any of the protocol mangling flags.
Sourcepub fn i2c_transfer(&mut self, messages: &mut [Message<'_>]) -> Result<()>
pub fn i2c_transfer(&mut self, messages: &mut [Message<'_>]) -> Result<()>
Executes a queue of I2C transfers, separated by repeat START conditions. Data buffers are truncated to the actual read length on completion.
See the I2C_RDWR
ioctl for more information.
Sourcepub fn smbus_write_quick(&mut self, value: ReadWrite) -> Result<()>
pub fn smbus_write_quick(&mut self, value: ReadWrite) -> Result<()>
Sends a single bit to the device, in the place of the Rd/Wr address bit.
Sourcepub fn smbus_read_byte(&mut self) -> Result<u8>
pub fn smbus_read_byte(&mut self) -> Result<u8>
Reads a single byte from a device without specifying a register.
Some devices are so simple that this interface is enough; for others, it is a shorthand if you want to read the same register as in the previous SMBus command.
Sourcepub fn smbus_write_byte(&mut self, value: u8) -> Result<()>
pub fn smbus_write_byte(&mut self, value: u8) -> Result<()>
Sends a single byte to a device.
Sourcepub fn smbus_read_byte_data(&mut self, command: u8) -> Result<u8>
pub fn smbus_read_byte_data(&mut self, command: u8) -> Result<u8>
Reads a single byte from a device from the designated register.
Sourcepub fn smbus_write_byte_data(&mut self, command: u8, value: u8) -> Result<()>
pub fn smbus_write_byte_data(&mut self, command: u8, value: u8) -> Result<()>
Writes a single byte to a device to the designated register.
Sourcepub fn smbus_read_word_data(&mut self, command: u8) -> Result<u16>
pub fn smbus_read_word_data(&mut self, command: u8) -> Result<u16>
Reads a 16-bit word from the device register.
Sourcepub fn smbus_write_word_data(&mut self, command: u8, value: u16) -> Result<()>
pub fn smbus_write_word_data(&mut self, command: u8, value: u16) -> Result<()>
Writes a 16-bit word to the device register.
Sourcepub fn smbus_process_call(&mut self, command: u8, value: u16) -> Result<u16>
pub fn smbus_process_call(&mut self, command: u8, value: u16) -> Result<u16>
Selects a device register, sends a 16-bit word to it, and read 16-bits of data in return.
Sourcepub fn smbus_read_block_data(
&mut self,
command: u8,
value: &mut [u8],
) -> Result<usize>
pub fn smbus_read_block_data( &mut self, command: u8, value: &mut [u8], ) -> Result<usize>
Read up to 32 bytes from the designated device register.
Returns the amount of data read.
Sourcepub fn smbus_write_block_data(
&mut self,
command: u8,
value: &[u8],
) -> Result<()>
pub fn smbus_write_block_data( &mut self, command: u8, value: &[u8], ) -> Result<()>
Write up to 32 bytes to the designated device register.
Sourcepub fn smbus_block_process_call(
&mut self,
command: u8,
write: &[u8],
read: &mut [u8],
) -> Result<usize>
pub fn smbus_block_process_call( &mut self, command: u8, write: &[u8], read: &mut [u8], ) -> Result<usize>
Sends up to 31 bytes of data to the designated device register, and reads up to 31 bytes in return.
This was introduced in SMBus 2.0
Sourcepub fn i2c_read_block_data(
&mut self,
command: u8,
value: &mut [u8],
) -> Result<usize>
pub fn i2c_read_block_data( &mut self, command: u8, value: &mut [u8], ) -> Result<usize>
Reads a block of bytes from the designated device register.
Unlike smbus_read_block_data this does not receive a data length. This
is limited to 32 bytes due to the use of the Linux SMBus interface. Use
i2c_transfer()
if more data is needed. write()
+read()
may also be
an option, though will produce an I2C STOP condition between the
transfers, which may be undesirable.
Sourcepub fn i2c_write_block_data(&mut self, command: u8, value: &[u8]) -> Result<()>
pub fn i2c_write_block_data(&mut self, command: u8, value: &[u8]) -> Result<()>
Writes a block of bytes from the designated device register.
Unlike smbus_write_block_data this does not transfer the data length.
This is limited to 32 bytes due to the use of the Linux SMBus interface.
Use i2c_transfer()
or write()
instead if more data is needed.
Trait Implementations§
Source§impl<I: AsRawFd> BlockTransfer for I2c<I>
impl<I: AsRawFd> BlockTransfer for I2c<I>
Source§impl<I: AsRawFd> BulkTransfer for I2c<I>
impl<I: AsRawFd> BulkTransfer for I2c<I>
Source§fn i2c_transfer_support(
&mut self,
) -> Result<(ReadFlags, WriteFlags), Self::Error>
fn i2c_transfer_support( &mut self, ) -> Result<(ReadFlags, WriteFlags), Self::Error>
Source§impl FromRawFd for I2c<File>
impl FromRawFd for I2c<File>
Source§unsafe fn from_raw_fd(fd: RawFd) -> Self
unsafe fn from_raw_fd(fd: RawFd) -> Self
Self
from the given raw file
descriptor. Read moreSource§impl<I: IntoRawFd> IntoRawFd for I2c<I>
impl<I: IntoRawFd> IntoRawFd for I2c<I>
Source§fn into_raw_fd(self) -> RawFd
fn into_raw_fd(self) -> RawFd
Source§impl<I: Read> Read for I2c<I>
impl<I: Read> Read for I2c<I>
Source§fn read(&mut self, buf: &mut [u8]) -> Result<usize>
fn read(&mut self, buf: &mut [u8]) -> Result<usize>
1.36.0 · Source§fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>
read
, except that it reads into a slice of buffers. Read moreSource§fn is_read_vectored(&self) -> bool
fn is_read_vectored(&self) -> bool
can_vector
)1.0.0 · Source§fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>
buf
. Read more1.0.0 · Source§fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>
buf
. Read more1.6.0 · Source§fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>
buf
. Read moreSource§fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)Source§fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>
read_buf
)cursor
. Read more1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Read
. Read moreSource§impl<I: AsRawFd> Smbus for I2c<I>
impl<I: AsRawFd> Smbus for I2c<I>
Source§fn smbus_write_quick(&mut self, value: bool) -> Result<(), Self::Error>
fn smbus_write_quick(&mut self, value: bool) -> Result<(), Self::Error>
Source§fn smbus_read_byte(&mut self) -> Result<u8, Self::Error>
fn smbus_read_byte(&mut self) -> Result<u8, Self::Error>
Source§fn smbus_write_byte(&mut self, value: u8) -> Result<(), Self::Error>
fn smbus_write_byte(&mut self, value: u8) -> Result<(), Self::Error>
Source§fn smbus_read_byte_data(&mut self, command: u8) -> Result<u8, Self::Error>
fn smbus_read_byte_data(&mut self, command: u8) -> Result<u8, Self::Error>
Source§fn smbus_write_byte_data(
&mut self,
command: u8,
value: u8,
) -> Result<(), Self::Error>
fn smbus_write_byte_data( &mut self, command: u8, value: u8, ) -> Result<(), Self::Error>
Source§fn smbus_read_word_data(&mut self, command: u8) -> Result<u16, Self::Error>
fn smbus_read_word_data(&mut self, command: u8) -> Result<u16, Self::Error>
Source§fn smbus_write_word_data(
&mut self,
command: u8,
value: u16,
) -> Result<(), Self::Error>
fn smbus_write_word_data( &mut self, command: u8, value: u16, ) -> Result<(), Self::Error>
Source§fn smbus_process_call(
&mut self,
command: u8,
value: u16,
) -> Result<u16, Self::Error>
fn smbus_process_call( &mut self, command: u8, value: u16, ) -> Result<u16, Self::Error>
Source§impl<I: Write> Write for I2c<I>
impl<I: Write> Write for I2c<I>
Source§fn write(&mut self, buf: &[u8]) -> Result<usize>
fn write(&mut self, buf: &[u8]) -> Result<usize>
Source§fn flush(&mut self) -> Result<()>
fn flush(&mut self) -> Result<()>
Source§fn is_write_vectored(&self) -> bool
fn is_write_vectored(&self) -> bool
can_vector
)1.0.0 · Source§fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>
Source§fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>
write_all_vectored
)Auto Trait Implementations§
impl<I> Freeze for I2c<I>where
I: Freeze,
impl<I> RefUnwindSafe for I2c<I>where
I: RefUnwindSafe,
impl<I> Send for I2c<I>where
I: Send,
impl<I> Sync for I2c<I>where
I: Sync,
impl<I> Unpin for I2c<I>where
I: Unpin,
impl<I> UnwindSafe for I2c<I>where
I: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<R> ReadBytesExt for R
impl<R> ReadBytesExt for R
Source§fn read_u8(&mut self) -> Result<u8, Error>
fn read_u8(&mut self) -> Result<u8, Error>
Source§fn read_i8(&mut self) -> Result<i8, Error>
fn read_i8(&mut self) -> Result<i8, Error>
Source§fn read_u16<T>(&mut self) -> Result<u16, Error>where
T: ByteOrder,
fn read_u16<T>(&mut self) -> Result<u16, Error>where
T: ByteOrder,
Source§fn read_i16<T>(&mut self) -> Result<i16, Error>where
T: ByteOrder,
fn read_i16<T>(&mut self) -> Result<i16, Error>where
T: ByteOrder,
Source§fn read_u24<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
fn read_u24<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
Source§fn read_i24<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
fn read_i24<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
Source§fn read_u32<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
fn read_u32<T>(&mut self) -> Result<u32, Error>where
T: ByteOrder,
Source§fn read_i32<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
fn read_i32<T>(&mut self) -> Result<i32, Error>where
T: ByteOrder,
Source§fn read_u48<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
fn read_u48<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
Source§fn read_i48<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
fn read_i48<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
Source§fn read_u64<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
fn read_u64<T>(&mut self) -> Result<u64, Error>where
T: ByteOrder,
Source§fn read_i64<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
fn read_i64<T>(&mut self) -> Result<i64, Error>where
T: ByteOrder,
Source§fn read_u128<T>(&mut self) -> Result<u128, Error>where
T: ByteOrder,
fn read_u128<T>(&mut self) -> Result<u128, Error>where
T: ByteOrder,
Source§fn read_i128<T>(&mut self) -> Result<i128, Error>where
T: ByteOrder,
fn read_i128<T>(&mut self) -> Result<i128, Error>where
T: ByteOrder,
Source§fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error>where
T: ByteOrder,
fn read_uint<T>(&mut self, nbytes: usize) -> Result<u64, Error>where
T: ByteOrder,
Source§fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error>where
T: ByteOrder,
fn read_int<T>(&mut self, nbytes: usize) -> Result<i64, Error>where
T: ByteOrder,
Source§fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error>where
T: ByteOrder,
fn read_uint128<T>(&mut self, nbytes: usize) -> Result<u128, Error>where
T: ByteOrder,
Source§fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error>where
T: ByteOrder,
fn read_int128<T>(&mut self, nbytes: usize) -> Result<i128, Error>where
T: ByteOrder,
Source§fn read_f32<T>(&mut self) -> Result<f32, Error>where
T: ByteOrder,
fn read_f32<T>(&mut self) -> Result<f32, Error>where
T: ByteOrder,
Source§fn read_f64<T>(&mut self) -> Result<f64, Error>where
T: ByteOrder,
fn read_f64<T>(&mut self) -> Result<f64, Error>where
T: ByteOrder,
Source§fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error>where
T: ByteOrder,
fn read_u16_into<T>(&mut self, dst: &mut [u16]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error>where
T: ByteOrder,
fn read_u32_into<T>(&mut self, dst: &mut [u32]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error>where
T: ByteOrder,
fn read_u64_into<T>(&mut self, dst: &mut [u64]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error>where
T: ByteOrder,
fn read_u128_into<T>(&mut self, dst: &mut [u128]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<(), Error>
Source§fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error>where
T: ByteOrder,
fn read_i16_into<T>(&mut self, dst: &mut [i16]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error>where
T: ByteOrder,
fn read_i32_into<T>(&mut self, dst: &mut [i32]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error>where
T: ByteOrder,
fn read_i64_into<T>(&mut self, dst: &mut [i64]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error>where
T: ByteOrder,
fn read_i128_into<T>(&mut self, dst: &mut [i128]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
fn read_f32_into<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
Source§fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
fn read_f32_into_unchecked<T>(&mut self, dst: &mut [f32]) -> Result<(), Error>where
T: ByteOrder,
read_f32_into
instead