USRP Hardware Driver and USRP Manual Version: 4.2.0.0
UHD and USRP Manual
replay_block_control.hpp
Go to the documentation of this file.
1//
2// Copyright 2020 Ettus Research, a National Instruments Brand
3//
4// SPDX-License-Identifier: GPL-3.0-or-later
5//
6
7#pragma once
8
9#include <uhd/config.hpp>
11
12namespace uhd { namespace rfnoc {
13
14// doxygen tables need long long lines
15// clang-format off
110// clang-format on
112{
113public:
115
116 static const uint16_t MINOR_COMPAT;
117 static const uint16_t MAJOR_COMPAT;
118
119 static const uint32_t REPLAY_ADDR_W;
120 static const uint32_t REPLAY_BLOCK_OFFSET;
121
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;
147
148 static const uint32_t PLAY_CMD_STOP;
149 static const uint32_t PLAY_CMD_FINITE;
150 static const uint32_t PLAY_CMD_CONTINUOUS;
151
152 /**************************************************************************
153 * Replay Control API calls
154 *************************************************************************/
171 virtual void record(
172 const uint64_t offset, const uint64_t size, const size_t port = 0) = 0;
173
180 virtual void record_restart(const size_t port = 0) = 0;
181
222 virtual void play(const uint64_t offset,
223 const uint64_t size,
224 const size_t port = 0,
225 const uhd::time_spec_t time_spec = uhd::time_spec_t(0.0),
226 const bool repeat = false) = 0;
227
235 virtual void stop(const size_t port = 0) = 0;
236
244 virtual uint64_t get_mem_size() const = 0;
245
250 virtual uint64_t get_word_size() const = 0;
251
252 /**************************************************************************
253 * Record State API calls
254 *************************************************************************/
260 virtual uint64_t get_record_offset(const size_t port = 0) const = 0;
261
267 virtual uint64_t get_record_size(const size_t port = 0) const = 0;
268
277 virtual uint64_t get_record_fullness(const size_t port = 0) = 0;
278
284 virtual uint64_t get_record_position(const size_t port = 0) = 0;
285
291 virtual io_type_t get_record_type(const size_t port = 0) const = 0;
292
298 virtual size_t get_record_item_size(const size_t port = 0) const = 0;
299
313 virtual bool get_record_async_metadata(
314 uhd::rx_metadata_t& metadata, const double timeout = 0.1) = 0;
315
316 /**************************************************************************
317 * Playback State API calls
318 *************************************************************************/
324 virtual uint64_t get_play_offset(const size_t port = 0) const = 0;
325
331 virtual uint64_t get_play_size(const size_t port = 0) const = 0;
332
338 virtual uint64_t get_play_position(const size_t port = 0) = 0;
339
345 virtual uint32_t get_max_items_per_packet(const size_t port = 0) const = 0;
346
354 virtual uint32_t get_max_packet_size(const size_t port = 0) const = 0;
355
361 virtual io_type_t get_play_type(const size_t port = 0) const = 0;
362
368 virtual size_t get_play_item_size(const size_t port = 0) const = 0;
369
383 virtual bool get_play_async_metadata(
384 uhd::async_metadata_t& metadata, const double timeout = 0.1) = 0;
385
386 /**************************************************************************
387 * Advanced Record Control API calls
388 *************************************************************************/
396 virtual void set_record_type(const io_type_t type, const size_t port = 0) = 0;
397
398 /**************************************************************************
399 * Advanced Playback Control API calls
400 *************************************************************************/
415 virtual void config_play(
416 const uint64_t offset, const uint64_t size, const size_t port = 0) = 0;
417
425 virtual void set_play_type(const io_type_t type, const size_t port = 0) = 0;
426
436 virtual void set_max_items_per_packet(const uint32_t ipp, const size_t port = 0) = 0;
437
446 virtual void set_max_packet_size(const uint32_t size, const size_t port = 0) = 0;
447
464 virtual void issue_stream_cmd(
465 const uhd::stream_cmd_t& stream_cmd, const size_t port = 0) = 0;
466};
467
468}} /* namespace uhd::rfnoc */
Definition: noc_block_base.hpp:43
Definition: replay_block_control.hpp:112
Definition: time_spec.hpp:31
#define UHD_API
Definition: config.h:87
std::string io_type_t
Definition: defaults.hpp:30
Definition: build_info.hpp:12
#define RFNOC_DECLARE_BLOCK(CLASS_NAME)
Definition: noc_block_base.hpp:22
Definition: metadata.hpp:203
Definition: metadata.hpp:23
Definition: stream_cmd.hpp:40