Struct spidev::spidevioctl::spi_ioc_transfer[][src]

#[repr(C)]
pub struct spi_ioc_transfer<'a, 'b> { pub speed_hz: u32, pub delay_usecs: u16, pub bits_per_word: u8, pub cs_change: u8, pub pad: u32, // some fields omitted }
Expand description

Structure that is used when performing communication with the kernel.

From the kernel documentation:

struct spi_ioc_transfer - describes a single SPI transfer
@tx_buf: Holds pointer to userspace buffer with transmit data, or null.
  If no data is provided, zeroes are shifted out.
@rx_buf: Holds pointer to userspace buffer for receive data, or null.
@len: Length of tx and rx buffers, in bytes.
@speed_hz: Temporary override of the device's bitrate.
@bits_per_word: Temporary override of the device's wordsize.
@delay_usecs: If nonzero, how long to delay after the last bit transfer
     before optionally deselecting the device before the next transfer.
@cs_change: True to deselect device before starting the next transfer.

This structure is mapped directly to the kernel spi_transfer structure;
the fields have the same meanings, except of course that the pointers
are in a different address space (and may be of different sizes in some
cases, such as 32-bit i386 userspace over a 64-bit x86_64 kernel).
Zero-initialize the structure, including currently unused fields, to
accommodate potential future updates.

SPI_IOC_MESSAGE gives userspace the equivalent of kernel spi_sync().
Pass it an array of related transfers, they'll execute together.
Each transfer may be half duplex (either direction) or full duplex.

     struct spi_ioc_transfer mesg[4];
     ...
     status = ioctl(fd, SPI_IOC_MESSAGE(4), mesg);

So for example one transfer might send a nine bit command (right aligned
in a 16-bit word), the next could read a block of 8-bit data before
terminating that command by temporarily deselecting the chip; the next
could send a different nine bit command (re-selecting the chip), and the
last transfer might write some register values.

Fields

speed_hz: u32delay_usecs: u16bits_per_word: u8cs_change: u8pad: u32

Implementations

The tx_buf and rx_buf must be the same length.

Trait Implementations

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.