The TX streamer is the host interface to transmitting samples. It represents the layer between the samples on the host and samples inside the device's transmit DSP processing.
virtual size_t uhd::tx_streamer::send |
( |
const buffs_type & |
buffs, |
|
|
const size_t |
nsamps_per_buff, |
|
|
const tx_metadata_t & |
metadata, |
|
|
const double |
timeout = 0.1 |
|
) |
| |
|
pure virtual |
Send buffers containing samples described by the metadata.
Send handles fragmentation as follows: If the buffer has more items than the maximum per packet, the send method will fragment the samples across several packets. Send will respect the burst flags when fragmenting to ensure that start of burst can only be set on the first fragment and that end of burst can only be set on the final fragment.
This is a blocking call and will not return until the number of samples returned have been read out of each buffer. Under a timeout condition, the number of samples returned may be less than the number of samples specified.
Note on threading: send() is not thread-safe, to avoid locking overhead. The application calling send() is responsible for making sure that not more than one thread can call send() on the same streamer at the same time. If there are multiple streamers, transmitting to different destinations, then those may be called from different threads simultaneously.
- Parameters
-
buffs | a vector of read-only memory containing samples |
nsamps_per_buff | the number of samples to send, per buffer |
metadata | data describing the buffer's contents |
timeout | the timeout in seconds to wait on a packet |
- Returns
- the number of samples sent