aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests/common/mock_zero_copy.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/tests/common/mock_zero_copy.hpp')
-rw-r--r--host/tests/common/mock_zero_copy.hpp159
1 files changed, 78 insertions, 81 deletions
diff --git a/host/tests/common/mock_zero_copy.hpp b/host/tests/common/mock_zero_copy.hpp
index 8d27c9b46..60e5f4659 100644
--- a/host/tests/common/mock_zero_copy.hpp
+++ b/host/tests/common/mock_zero_copy.hpp
@@ -7,18 +7,17 @@
#ifndef INCLUDED_MOCK_XPORT_HPP
#define INCLUDED_MOCK_XPORT_HPP
-#include <uhdlib/rfnoc/xports.hpp>
+#include <uhd/exception.hpp>
#include <uhd/transport/chdr.hpp>
#include <uhd/transport/vrt_if_packet.hpp>
#include <uhd/transport/zero_copy.hpp>
#include <uhd/types/endianness.hpp>
#include <uhd/types/sid.hpp>
-#include <uhd/exception.hpp>
#include <uhd/utils/byteswap.hpp>
-#include <uhd/exception.hpp>
+#include <uhdlib/rfnoc/xports.hpp>
#include <boost/make_shared.hpp>
-#include <boost/shared_ptr.hpp>
#include <boost/shared_array.hpp>
+#include <boost/shared_ptr.hpp>
#include <list>
#include <vector>
@@ -36,89 +35,101 @@ static constexpr size_t DEFAULT_RECV_FRAME_SIZE = 1024;
/***********************************************************************
* Dummy managed buffers for testing
**********************************************************************/
-class mock_msb : public uhd::transport::managed_send_buffer {
- public:
- void release(void) { /* nop */
+class mock_msb : public uhd::transport::managed_send_buffer
+{
+public:
+ void release(void)
+ { /* nop */
}
- sptr get_new(boost::shared_array<uint8_t> mem, size_t* len) {
+ sptr get_new(boost::shared_array<uint8_t> mem, size_t* len)
+ {
_mem = mem;
return make(this, mem.get(), *len);
}
- private:
+private:
boost::shared_array<uint8_t> _mem;
};
-class mock_mrb : public uhd::transport::managed_recv_buffer {
- public:
- void release(void) { /* nop */
+class mock_mrb : public uhd::transport::managed_recv_buffer
+{
+public:
+ void release(void)
+ { /* nop */
}
- sptr get_new(boost::shared_array<uint8_t> mem, size_t len) {
+ sptr get_new(boost::shared_array<uint8_t> mem, size_t len)
+ {
_mem = mem;
return make(this, _mem.get(), len);
}
- private:
+private:
boost::shared_array<uint8_t> _mem;
};
-class mock_zero_copy : public uhd::transport::zero_copy_if {
- public:
+class mock_zero_copy : public uhd::transport::zero_copy_if
+{
+public:
typedef boost::shared_ptr<mock_zero_copy> sptr;
- mock_zero_copy(
- uhd::transport::vrt::if_packet_info_t::link_type_t type,
+ mock_zero_copy(uhd::transport::vrt::if_packet_info_t::link_type_t type,
size_t recv_frame_size = DEFAULT_RECV_FRAME_SIZE,
- size_t send_frame_size = DEFAULT_SEND_FRAME_SIZE
- );
+ size_t send_frame_size = DEFAULT_SEND_FRAME_SIZE);
uhd::transport::managed_recv_buffer::sptr get_recv_buff(double);
uhd::transport::managed_send_buffer::sptr get_send_buff(double);
- size_t get_num_recv_frames(void) const { return 1; }
- size_t get_num_send_frames(void) const { return 1; }
- size_t get_recv_frame_size(void) const { return _recv_frame_size; }
- size_t get_send_frame_size(void) const { return _send_frame_size; }
+ size_t get_num_recv_frames(void) const
+ {
+ return 1;
+ }
+ size_t get_num_send_frames(void) const
+ {
+ return 1;
+ }
+ size_t get_recv_frame_size(void) const
+ {
+ return _recv_frame_size;
+ }
+ size_t get_send_frame_size(void) const
+ {
+ return _send_frame_size;
+ }
template <typename T>
- void push_back_packet(
- uhd::transport::vrt::if_packet_info_t& ifpi,
+ void push_back_packet(uhd::transport::vrt::if_packet_info_t& ifpi,
const std::vector<T>& otw_data = std::vector<T>(),
- uhd::endianness_t endianness = uhd::ENDIANNESS_BIG);
+ uhd::endianness_t endianness = uhd::ENDIANNESS_BIG);
void set_reuse_recv_memory(bool reuse_recv);
void set_reuse_send_memory(bool reuse_send);
- void set_simulate_io_error(bool status) { _simulate_io_error = status; }
+ void set_simulate_io_error(bool status)
+ {
+ _simulate_io_error = status;
+ }
template <typename T, uhd::endianness_t endianness = uhd::ENDIANNESS_BIG>
void push_back_recv_packet(
- uhd::transport::vrt::if_packet_info_t& ifpi,
- const std::vector<T>& otw_data
- );
+ uhd::transport::vrt::if_packet_info_t& ifpi, const std::vector<T>& otw_data);
template <uhd::endianness_t endianness = uhd::ENDIANNESS_BIG>
void push_back_inline_message_packet(
- uhd::transport::vrt::if_packet_info_t& ifpi,
- const uint32_t message
- );
+ uhd::transport::vrt::if_packet_info_t& ifpi, const uint32_t message);
template <uhd::endianness_t endianness = uhd::ENDIANNESS_BIG>
void push_back_flow_ctrl_packet(
uhd::transport::vrt::if_packet_info_t::packet_type_t type,
uint32_t packet_count,
- uint32_t byte_count
- );
+ uint32_t byte_count);
template <uhd::endianness_t endianness = uhd::ENDIANNESS_BIG>
- void pop_send_packet(
- uhd::transport::vrt::if_packet_info_t &ifpi
- );
+ void pop_send_packet(uhd::transport::vrt::if_packet_info_t& ifpi);
- private:
+private:
std::list<boost::shared_array<uint8_t>> _tx_mems;
std::list<size_t> _tx_lens;
@@ -136,27 +147,23 @@ class mock_zero_copy : public uhd::transport::zero_copy_if {
bool _reuse_recv_memory = false;
bool _reuse_send_memory = false;
-
};
template <typename T, uhd::endianness_t endianness>
void mock_zero_copy::push_back_recv_packet(
- uhd::transport::vrt::if_packet_info_t& ifpi,
- const std::vector<T>& otw_data
-) {
+ uhd::transport::vrt::if_packet_info_t& ifpi, const std::vector<T>& otw_data)
+{
using namespace uhd::transport;
UHD_ASSERT_THROW(
- ifpi.num_payload_words32 * sizeof(uint32_t)
- == otw_data.size() * sizeof(T));
+ ifpi.num_payload_words32 * sizeof(uint32_t) == otw_data.size() * sizeof(T));
const size_t max_hdr_len =
- _link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR ?
- vrt::chdr::max_if_hdr_words64*sizeof(uint64_t) :
- (vrt::max_if_hdr_words32 + 1/*tlr*/)*sizeof(uint32_t);
+ _link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR
+ ? vrt::chdr::max_if_hdr_words64 * sizeof(uint64_t)
+ : (vrt::max_if_hdr_words32 + 1 /*tlr*/) * sizeof(uint32_t);
- const size_t max_pkt_len =
- ifpi.num_payload_words32*sizeof(uint32_t)+max_hdr_len;
+ const size_t max_pkt_len = ifpi.num_payload_words32 * sizeof(uint32_t) + max_hdr_len;
UHD_ASSERT_THROW(max_pkt_len <= _recv_frame_size);
@@ -168,15 +175,13 @@ void mock_zero_copy::push_back_recv_packet(
if (endianness == uhd::ENDIANNESS_BIG) {
if (_link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR) {
uhd::transport::vrt::chdr::if_hdr_pack_be(rx_buff_ptr, ifpi);
- }
- else {
+ } else {
uhd::transport::vrt::if_hdr_pack_be(rx_buff_ptr, ifpi);
}
} else {
if (_link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR) {
uhd::transport::vrt::chdr::if_hdr_pack_le(rx_buff_ptr, ifpi);
- }
- else {
+ } else {
uhd::transport::vrt::if_hdr_pack_le(rx_buff_ptr, ifpi);
}
}
@@ -184,42 +189,37 @@ void mock_zero_copy::push_back_recv_packet(
// Copy data
uint32_t* data_ptr = (rx_buff_ptr + ifpi.num_header_words32);
std::copy(otw_data.begin(), otw_data.end(), reinterpret_cast<T*>(data_ptr));
- _rx_lens.push_back(ifpi.num_packet_words32*sizeof(uint32_t));
+ _rx_lens.push_back(ifpi.num_packet_words32 * sizeof(uint32_t));
}
template <uhd::endianness_t endianness>
void mock_zero_copy::push_back_inline_message_packet(
- uhd::transport::vrt::if_packet_info_t& ifpi,
- const uint32_t message
-) {
- const std::vector<uint32_t> data { message | uhd::byteswap(message) };
+ uhd::transport::vrt::if_packet_info_t& ifpi, const uint32_t message)
+{
+ const std::vector<uint32_t> data{message | uhd::byteswap(message)};
push_back_recv_packet<uint32_t, endianness>(ifpi, data);
}
template <uhd::endianness_t endianness>
-void mock_zero_copy::pop_send_packet(
- uhd::transport::vrt::if_packet_info_t &ifpi
-) {
+void mock_zero_copy::pop_send_packet(uhd::transport::vrt::if_packet_info_t& ifpi)
+{
using namespace uhd::transport;
- ifpi.num_packet_words32 = _tx_lens.front()/sizeof(uint32_t);
+ ifpi.num_packet_words32 = _tx_lens.front() / sizeof(uint32_t);
- uint32_t* tx_buff_ptr = reinterpret_cast<uint32_t *>(_tx_mems.front().get());
+ uint32_t* tx_buff_ptr = reinterpret_cast<uint32_t*>(_tx_mems.front().get());
if (endianness == uhd::ENDIANNESS_BIG) {
if (_link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR) {
uhd::transport::vrt::chdr::if_hdr_unpack_be(tx_buff_ptr, ifpi);
- }
- else {
+ } else {
uhd::transport::vrt::if_hdr_unpack_be(tx_buff_ptr, ifpi);
}
- }
- else {
+ } else {
if (_link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR) {
uhd::transport::vrt::chdr::if_hdr_unpack_le(tx_buff_ptr, ifpi);
- }
- else {
+ } else {
uhd::transport::vrt::if_hdr_unpack_le(tx_buff_ptr, ifpi);
}
}
@@ -231,14 +231,12 @@ template <uhd::endianness_t endianness>
void mock_zero_copy::push_back_flow_ctrl_packet(
uhd::transport::vrt::if_packet_info_t::packet_type_t type,
uint32_t packet_count,
- uint32_t byte_count
-)
+ uint32_t byte_count)
{
using namespace uhd::transport;
- UHD_ASSERT_THROW(
- type == vrt::if_packet_info_t::PACKET_TYPE_FC or
- type == vrt::if_packet_info_t::PACKET_TYPE_ACK);
+ UHD_ASSERT_THROW(type == vrt::if_packet_info_t::PACKET_TYPE_FC
+ or type == vrt::if_packet_info_t::PACKET_TYPE_ACK);
// Only implemented for chdr packets currently
UHD_ASSERT_THROW(_link_type == vrt::if_packet_info_t::LINK_TYPE_CHDR);
@@ -246,18 +244,17 @@ void mock_zero_copy::push_back_flow_ctrl_packet(
const size_t packet_len_in_words32 = 2;
vrt::if_packet_info_t ifpi;
- ifpi.packet_type = type;
+ ifpi.packet_type = type;
ifpi.num_payload_words32 = packet_len_in_words32;
- ifpi.num_payload_bytes = ifpi.num_payload_words32*sizeof(uint32_t);
- ifpi.has_tsf = false;
+ ifpi.num_payload_bytes = ifpi.num_payload_words32 * sizeof(uint32_t);
+ ifpi.has_tsf = false;
std::vector<uint32_t> data(packet_len_in_words32, 0);
if (endianness == uhd::ENDIANNESS_BIG) {
data[0] = uhd::ntohx(packet_count);
data[1] = uhd::ntohx(byte_count);
- }
- else {
+ } else {
data[0] = uhd::wtohx(packet_count);
data[1] = uhd::wtohx(byte_count);
}