10#include <boost/optional.hpp>
27 template <
typename payload_t>
31 boost::optional<uint64_t> timestamp = boost::none,
32 std::vector<uint64_t> metadata = {});
40 std::vector<uint8_t> payload_data,
41 boost::optional<uint64_t> timestamp = boost::none,
42 std::vector<uint64_t> mdata = {});
94 template <
typename OutputIterator>
107 template <
typename InputIterator>
136 template <
typename payload_t>
145 template <
typename payload_t>
153 template <
typename payload_t>
158 void serialize_ptr(
endianness_t endianness,
void* start,
void* end)
const;
163 inline void set_header_lengths()
170 std::vector<uint8_t> _payload;
171 boost::optional<uint64_t> _timestamp;
172 std::vector<uint64_t> _mdata;
uhd::rfnoc::chdr::chdr_header get_header() const
std::vector< uint8_t > serialize_to_byte_vector(endianness_t endianness=uhd::ENDIANNESS_LITTLE) const
std::string to_string_with_payload(uhd::endianness_t endianness=uhd::ENDIANNESS_LITTLE) const
Return a string representation of this object and deserialize its payload.
Definition chdr_packet.ipp:81
void set_payload(payload_t payload, uhd::endianness_t endianness=uhd::ENDIANNESS_LITTLE)
Definition chdr_packet.ipp:64
size_t get_packet_len() const
const std::vector< uint64_t > & get_metadata() const
void set_metadata(std::vector< uint64_t > metadata)
void set_timestamp(boost::optional< uint64_t > timestamp)
void set_header(uhd::rfnoc::chdr::chdr_header header)
std::string to_string() const
Return a string representation of this object.
void set_payload_bytes(std::vector< uint8_t > bytes)
const std::vector< uint8_t > & get_payload_bytes() const
chdr_packet(uhd::rfnoc::chdr_w_t chdr_w, uhd::rfnoc::chdr::chdr_header header, std::vector< uint8_t > payload_data, boost::optional< uint64_t > timestamp=boost::none, std::vector< uint64_t > mdata={})
chdr_packet(uhd::rfnoc::chdr_w_t chdr_w, uhd::rfnoc::chdr::chdr_header header, payload_t payload, boost::optional< uint64_t > timestamp=boost::none, std::vector< uint64_t > metadata={})
Definition chdr_packet.ipp:16
payload_t get_payload(uhd::endianness_t endianness=uhd::ENDIANNESS_LITTLE) const
Definition chdr_packet.ipp:47
static chdr_packet deserialize(uhd::rfnoc::chdr_w_t chdr_w, InputIterator first, InputIterator last, endianness_t endianness=uhd::ENDIANNESS_LITTLE)
Definition chdr_packet.ipp:36
boost::optional< uint64_t > get_timestamp() const
void serialize(OutputIterator first, OutputIterator last, endianness_t endianness=uhd::ENDIANNESS_LITTLE) const
Definition chdr_packet.ipp:27
#define UHD_API
Definition config.h:87
chdr_w_t
Type that indicates the CHDR Width in bits.
Definition rfnoc_types.hpp:19
constexpr size_t chdr_w_to_bits(chdr_w_t chdr_w)
Conversion from chdr_w_t to a number of bits.
Definition rfnoc_types.hpp:22
Definition chdr_packet.hpp:14
Definition chdr_packet.hpp:14
Definition build_info.hpp:12
endianness_t
Definition endianness.hpp:30
@ ENDIANNESS_LITTLE
Definition endianness.hpp:30