pub struct TxStream<E: StreamSample> { /* private fields */ }
Expand description
A stream open for transmitting.
To obtain a TxStream, call Device::tx_stream. The type parameter E
represents the type
of this stream’s samples.
Streams may involve multiple channels.
Implementations§
source§impl<E: StreamSample> TxStream<E>
impl<E: StreamSample> TxStream<E>
sourcepub fn mtu(&self) -> Result<usize, Error>
pub fn mtu(&self) -> Result<usize, Error>
Get the stream’s maximum transmission unit (MTU) in number of elements.
The MTU specifies the maximum payload transfer in a stream operation. This value can be used as a stream buffer allocation size that can best optimize throughput given the underlying stream implementation.
sourcepub fn activate(&mut self, time_ns: Option<i64>) -> Result<(), Error>
pub fn activate(&mut self, time_ns: Option<i64>) -> Result<(), Error>
Activate a stream.
Call activate
to enable a stream before using write()
§Arguments:
time_ns
– optional activation time in nanoseconds
sourcepub fn deactivate(&mut self, time_ns: Option<i64>) -> Result<(), Error>
pub fn deactivate(&mut self, time_ns: Option<i64>) -> Result<(), Error>
Deactivate a stream. The implementation will control switches or halt data flow.
§Arguments:
time_ns
– optional deactivation time in nanoseconds
sourcepub fn write(
&mut self,
buffers: &[&[E]],
at_ns: Option<i64>,
end_burst: bool,
timeout_us: i64,
) -> Result<usize, Error>
pub fn write( &mut self, buffers: &[&[E]], at_ns: Option<i64>, end_burst: bool, timeout_us: i64, ) -> Result<usize, Error>
Attempt to write samples to the device from the provided buffer.
The stream must first be activated.
buffers
contains one source slice for each channel of the stream.
at_ns
is an optional nanosecond precision device timestamp at which
the device is to begin the transmission (c.f. get_hardware_time).
end_burst
indicates when this packet ends a burst transmission.
Returns the number of samples written, which may be smaller than the size of the passed arrays.
§Panics
- If
buffers
is not the same length as thechannels
array passed toDevice::tx_stream
. - If all the buffers in
buffers
are not the same length.
sourcepub fn write_all(
&mut self,
buffers: &[&[E]],
at_ns: Option<i64>,
end_burst: bool,
timeout_us: i64,
) -> Result<(), Error>
pub fn write_all( &mut self, buffers: &[&[E]], at_ns: Option<i64>, end_burst: bool, timeout_us: i64, ) -> Result<(), Error>
Write all samples to the device.
This method repeatedly calls write until the entire provided buffer has been written.
The stream must first be activated.
buffers
contains one source slice for each channel of the stream.
at_ns
is an optional nanosecond precision device timestamp at which
the device is to begin the transmission (c.f. get_hardware_time).
end_burst
indicates when this packet ends a burst transmission.
§Panics
- If
buffers
is not the same length as thechannels
array passed toDevice::rx_stream
. - If all the buffers in
buffers
are not the same length.
Trait Implementations§
source§impl<E: StreamSample> Drop for TxStream<E>
impl<E: StreamSample> Drop for TxStream<E>
impl<E: StreamSample> Send for TxStream<E>
Streams may only be used on one thread at a time but may be sent between threads