#include <uhd/types/metadata.hpp>
Public Types | |
enum | error_code_t { ERROR_CODE_NONE = 0x0 , ERROR_CODE_TIMEOUT = 0x1 , ERROR_CODE_LATE_COMMAND = 0x2 , ERROR_CODE_BROKEN_CHAIN = 0x4 , ERROR_CODE_OVERFLOW = 0x8 , ERROR_CODE_ALIGNMENT = 0xc , ERROR_CODE_BAD_PACKET = 0xf } |
Public Member Functions | |
rx_metadata_t () | |
Default constructor. More... | |
void | reset () |
Reset values. More... | |
std::string | to_pp_string (bool compact=true) const |
std::string | strerror (void) const |
Public Attributes | |
bool | has_time_spec |
Has time specification? More... | |
time_spec_t | time_spec |
Time of the first sample. More... | |
bool | more_fragments |
size_t | fragment_offset |
bool | start_of_burst |
Start of burst will be true for the first packet in the chain. More... | |
bool | end_of_burst |
End of burst will be true for the last packet in the chain. More... | |
size_t * | eov_positions |
size_t | eov_positions_size |
size_t | eov_positions_count |
enum uhd::rx_metadata_t::error_code_t | error_code |
bool | out_of_sequence |
RX metadata structure for describing sent IF data. Includes time specification, fragmentation flags, burst flags, and error codes. The receive routines will convert IF data headers into metadata.
The error condition on a receive call.
Note: When an overrun occurs in continuous streaming mode, the device will continue to send samples to the host. For other streaming modes, streaming will discontinue until the user issues a new stream command.
The metadata fields have meaning for the following error codes:
|
inline |
Default constructor.
|
inline |
Reset values.
std::string uhd::rx_metadata_t::strerror | ( | void | ) | const |
Similar to C's strerror() function, creates a std::string describing the error code.
std::string uhd::rx_metadata_t::to_pp_string | ( | bool | compact = true | ) | const |
Convert a rx_metadata_t into a pretty print string.
compact | Set to false for a more verbose output. |
bool uhd::rx_metadata_t::end_of_burst |
End of burst will be true for the last packet in the chain.
size_t* uhd::rx_metadata_t::eov_positions |
If this pointer is not null, it specifies the address of an array of size_t
s into which the sample offset relative to the beginning of a call to recv()
of each vector (as denoted by packets with the eov
header byte set) will be written.
The caller is responsible for allocating and deallocating the storage for the array and for indicating the maximum number of elements in the array via the eov_positions_size
value below.
Upon return from recv()
, eov_positions_count
will be updated to indicate the number of valid entries written to the end_of_vector_positions
array. It shall never exceed the value of eov_positions_size
. However, if in the process of recv()
, storage for new positions is exhausted, then recv()
shall return.
size_t uhd::rx_metadata_t::eov_positions_count |
Upon return from recv()
, holds the number of end-of-vector indications in the eov_positions
array.
size_t uhd::rx_metadata_t::eov_positions_size |
enum uhd::rx_metadata_t::error_code_t uhd::rx_metadata_t::error_code |
size_t uhd::rx_metadata_t::fragment_offset |
Fragmentation offset: The fragment offset is the sample number at the start of the receive buffer. For non-fragmented receives, the fragment offset should always be zero.
bool uhd::rx_metadata_t::has_time_spec |
Has time specification?
bool uhd::rx_metadata_t::more_fragments |
Fragmentation flag: Similar to IPv4 fragmentation: http://en.wikipedia.org/wiki/IPv4#Fragmentation_and_reassembly More fragments is true when the input buffer has insufficient size to fit an entire received packet. More fragments will be false for the last fragment.
bool uhd::rx_metadata_t::out_of_sequence |
Out of sequence. The transport has either dropped a packet or received data out of order.
bool uhd::rx_metadata_t::start_of_burst |
Start of burst will be true for the first packet in the chain.
time_spec_t uhd::rx_metadata_t::time_spec |
Time of the first sample.