12 namespace uhd {
namespace rfnoc {
116 static const uint16_t MINOR_COMPAT;
117 static const uint16_t MAJOR_COMPAT;
119 static const uint32_t REPLAY_ADDR_W;
120 static const uint32_t REPLAY_BLOCK_OFFSET;
122 static const uint32_t REG_COMPAT_ADDR;
123 static const uint32_t REG_MEM_SIZE_ADDR;
124 static const uint32_t REG_REC_RESTART_ADDR;
125 static const uint32_t REG_REC_BASE_ADDR_LO_ADDR;
126 static const uint32_t REG_REC_BASE_ADDR_HI_ADDR;
127 static const uint32_t REG_REC_BUFFER_SIZE_LO_ADDR;
128 static const uint32_t REG_REC_BUFFER_SIZE_HI_ADDR;
129 static const uint32_t REG_REC_FULLNESS_LO_ADDR;
130 static const uint32_t REG_REC_FULLNESS_HI_ADDR;
131 static const uint32_t REG_PLAY_BASE_ADDR_LO_ADDR;
132 static const uint32_t REG_PLAY_BASE_ADDR_HI_ADDR;
133 static const uint32_t REG_PLAY_BUFFER_SIZE_LO_ADDR;
134 static const uint32_t REG_PLAY_BUFFER_SIZE_HI_ADDR;
135 static const uint32_t REG_PLAY_CMD_NUM_WORDS_LO_ADDR;
136 static const uint32_t REG_PLAY_CMD_NUM_WORDS_HI_ADDR;
137 static const uint32_t REG_PLAY_CMD_TIME_LO_ADDR;
138 static const uint32_t REG_PLAY_CMD_TIME_HI_ADDR;
139 static const uint32_t REG_PLAY_CMD_ADDR;
140 static const uint32_t REG_PLAY_WORDS_PER_PKT_ADDR;
141 static const uint32_t REG_PLAY_ITEM_SIZE_ADDR;
142 static const uint32_t REG_REC_POS_LO_ADDR;
143 static const uint32_t REG_REC_POS_HI_ADDR;
144 static const uint32_t REG_PLAY_POS_LO_ADDR;
145 static const uint32_t REG_PLAY_POS_HI_ADDR;
146 static const uint32_t REG_PLAY_CMD_FIFO_SPACE_ADDR;
148 static const uint32_t PLAY_CMD_STOP;
149 static const uint32_t PLAY_CMD_FINITE;
150 static const uint32_t PLAY_CMD_CONTINUOUS;
156 static constexpr auto PLAY_CONTINUOUS{std::numeric_limits<size_t>::max()};
178 const uint64_t offset,
const uint64_t size,
const size_t port = 0) = 0;
186 virtual void record_restart(
const size_t port = 0) = 0;
231 virtual void play(
const uint64_t offset,
235 const bool repeat) = 0;
278 virtual void play(
const uint64_t offset,
280 const size_t port = 0,
282 const size_t iterations = 1) = 0;
291 virtual void stop(
const size_t port = 0) = 0;
300 virtual uint64_t get_mem_size()
const = 0;
306 virtual uint64_t get_word_size()
const = 0;
316 virtual uint64_t get_record_offset(
const size_t port = 0)
const = 0;
323 virtual uint64_t get_record_size(
const size_t port = 0)
const = 0;
333 virtual uint64_t get_record_fullness(
const size_t port = 0) = 0;
340 virtual uint64_t get_record_position(
const size_t port = 0) = 0;
347 virtual io_type_t get_record_type(
const size_t port = 0)
const = 0;
354 virtual size_t get_record_item_size(
const size_t port = 0)
const = 0;
369 virtual bool get_record_async_metadata(
380 virtual uint64_t get_play_offset(
const size_t port = 0)
const = 0;
387 virtual uint64_t get_play_size(
const size_t port = 0)
const = 0;
394 virtual uint64_t get_play_position(
const size_t port = 0) = 0;
401 virtual uint32_t get_max_items_per_packet(
const size_t port = 0)
const = 0;
410 virtual uint32_t get_max_packet_size(
const size_t port = 0)
const = 0;
417 virtual io_type_t get_play_type(
const size_t port = 0)
const = 0;
424 virtual size_t get_play_item_size(
const size_t port = 0)
const = 0;
439 virtual bool get_play_async_metadata(
452 virtual void set_record_type(
const io_type_t type,
const size_t port = 0) = 0;
471 virtual void config_play(
472 const uint64_t offset,
const uint64_t size,
const size_t port = 0) = 0;
481 virtual void set_play_type(
const io_type_t type,
const size_t port = 0) = 0;
492 virtual void set_max_items_per_packet(
const uint32_t ipp,
const size_t port = 0) = 0;
502 virtual void set_max_packet_size(
const uint32_t size,
const size_t port = 0) = 0;
520 virtual void issue_stream_cmd(
530 virtual void post_input_action(
531 const std::shared_ptr<uhd::rfnoc::action_info>& action,
const size_t port) = 0;
540 virtual void post_output_action(
541 const std::shared_ptr<uhd::rfnoc::action_info>& action,
const size_t port) = 0;