[−][src]Struct rppal::spi::Segment
Part of a multi-segment transfer.
Segment
s are transferred using the Spi::transfer_segments
method.
Construct a new Segment
for a simultaneous (full-duplex) read/write
transfer using new
. For read operations without any outgoing data,
use with_read
. For write operations where any incoming data
should be discarded, use with_write
.
Methods
impl<'a, 'b> Segment<'a, 'b>
[src]
pub fn new(read_buffer: &'a mut [u8], write_buffer: &'b [u8]) -> Segment<'a, 'b>
[src]
Constructs a new Segment
with the default settings, and configures it
for a simultaneous (full-duplex) read/write transfer.
For Segment
s that only require either a read or write operation, call
with_read
or with_write
instead of new
.
Spi::transfer_segments
will only transfer as many bytes as the shortest of
the two buffers contains.
By default, all customizable settings are set to 0, which means it uses
the same values as set for Spi
.
pub fn with_read(buffer: &mut [u8]) -> Segment
[src]
Constructs a new Segment
with the default settings, and configures it
for a read operation.
Incoming data from the slave device is written to buffer
. The total
number of bytes read depends on the length of buffer
. A zero-value
byte is sent for every byte read.
By default, all customizable settings are set to 0, which means it uses
the same values as set for Spi
.
pub fn with_write(buffer: &[u8]) -> Segment
[src]
Constructs a new Segment
with the default settings, and configures it
for a write operation.
Outgoing data from buffer
is sent to the slave device. Any
incoming data is discarded.
By default, all customizable settings are set to 0, which means it uses
the same values as set for Spi
.
pub fn with_settings(
read_buffer: Option<&'a mut [u8]>,
write_buffer: Option<&'b [u8]>,
clock_speed: u32,
delay: u16,
bits_per_word: u8,
ss_change: bool
) -> Segment<'a, 'b>
[src]
read_buffer: Option<&'a mut [u8]>,
write_buffer: Option<&'b [u8]>,
clock_speed: u32,
delay: u16,
bits_per_word: u8,
ss_change: bool
) -> Segment<'a, 'b>
Constructs a new Segment
with the specified settings.
These settings override the values set for Spi
, and are only used
for this specific segment.
If read_buffer
is set to None
, any incoming data is discarded.
If write_buffer
is set to None
, a zero-value byte is sent for every
byte read.
If both read_buffer
and write_buffer
are specified, Spi::transfer_segments
will only transfer as many bytes as the shortest of the two buffers contains.
clock_speed
sets a custom clock speed in hertz (Hz).
delay
sets a delay in microseconds (µs).
bits_per_word
sets the number of bits per word. The Raspberry Pi currently only supports 8 bits per word.
ss_change
changes how Slave Select behaves in between two segments (toggle SS), or after the final segment (keep SS active).
pub fn len(&self) -> usize
[src]
Returns the number of bytes that will be transferred.
If both a read buffer and write buffer are supplied,
Spi::transfer_segments
only transfers as many bytes as the
shortest of the two buffers contains.
pub fn is_empty(&self) -> bool
[src]
Returns true
if this segment won't transfer any bytes.
pub fn clock_speed(&self) -> u32
[src]
Gets the custom clock speed in hertz (Hz) for this segment.
pub fn set_clock_speed(&mut self, clock_speed: u32)
[src]
Sets a custom clock speed in hertz (Hz) for this segment.
The SPI driver will automatically select the closest valid frequency.
By default, clock_speed
is set to 0
, which means
it will use the same value as configured for Spi
.
pub fn delay(&self) -> u16
[src]
Gets the delay in microseconds (µs) for this segment.
pub fn set_delay(&mut self, delay: u16)
[src]
Sets a delay in microseconds (µs) for this segment.
set_delay
adds a delay at the end of this segment,
before the (optional) Slave Select change.
By default, delay
is set to 0
.
pub fn bits_per_word(&self) -> u8
[src]
Gets the number of bits per word for this segment.
pub fn set_bits_per_word(&mut self, bits_per_word: u8)
[src]
Sets the number of bits per word for this segment.
The Raspberry Pi currently only supports 8 bit words.
By default, bits_per_word
is set to 0
, which means
it will use the same value as configured for Spi
.
pub fn ss_change(&self) -> bool
[src]
Gets the state of Slave Select change for this segment.
pub fn set_ss_change(&mut self, ss_change: bool)
[src]
Changes Slave Select's behavior for this segment.
If ss_change
is set to true
, and this is not the last
segment of the transfer, the Slave Select line will briefly
change to inactive between this segment and the next.
If this is the last segment, setting ss_change
to true will
keep Slave Select active after the transfer ends.
By default, ss_change
is set to false
.
Trait Implementations
impl<'a, 'b> Clone for Segment<'a, 'b>
[src]
impl<'a, 'b> Copy for Segment<'a, 'b>
[src]
impl<'a, 'b> Debug for Segment<'a, 'b>
[src]
impl<'a, 'b> Eq for Segment<'a, 'b>
[src]
impl<'a, 'b> PartialEq<Segment<'a, 'b>> for Segment<'a, 'b>
[src]
fn eq(&self, other: &Segment<'a, 'b>) -> bool
[src]
fn ne(&self, other: &Segment<'a, 'b>) -> bool
[src]
impl<'a, 'b> StructuralEq for Segment<'a, 'b>
[src]
impl<'a, 'b> StructuralPartialEq for Segment<'a, 'b>
[src]
Auto Trait Implementations
impl<'a, 'b> RefUnwindSafe for Segment<'a, 'b>
impl<'a, 'b> Send for Segment<'a, 'b>
impl<'a, 'b> Sync for Segment<'a, 'b>
impl<'a, 'b> Unpin for Segment<'a, 'b>
impl<'a, 'b> !UnwindSafe for Segment<'a, 'b>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,