USRP Hardware Driver and USRP Manual Version: 4.1.0.5-0-unknown
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
45{
46public:
48
49 static const uint16_t MINOR_COMPAT;
50 static const uint16_t MAJOR_COMPAT;
51
52 static const uint32_t REPLAY_ADDR_W;
53 static const uint32_t REPLAY_BLOCK_OFFSET;
54
55 static const uint32_t REG_COMPAT_ADDR;
56 static const uint32_t REG_MEM_SIZE_ADDR;
57 static const uint32_t REG_REC_RESTART_ADDR;
58 static const uint32_t REG_REC_BASE_ADDR_LO_ADDR;
59 static const uint32_t REG_REC_BASE_ADDR_HI_ADDR;
60 static const uint32_t REG_REC_BUFFER_SIZE_LO_ADDR;
61 static const uint32_t REG_REC_BUFFER_SIZE_HI_ADDR;
62 static const uint32_t REG_REC_FULLNESS_LO_ADDR;
63 static const uint32_t REG_REC_FULLNESS_HI_ADDR;
64 static const uint32_t REG_PLAY_BASE_ADDR_LO_ADDR;
65 static const uint32_t REG_PLAY_BASE_ADDR_HI_ADDR;
66 static const uint32_t REG_PLAY_BUFFER_SIZE_LO_ADDR;
67 static const uint32_t REG_PLAY_BUFFER_SIZE_HI_ADDR;
68 static const uint32_t REG_PLAY_CMD_NUM_WORDS_LO_ADDR;
69 static const uint32_t REG_PLAY_CMD_NUM_WORDS_HI_ADDR;
70 static const uint32_t REG_PLAY_CMD_TIME_LO_ADDR;
71 static const uint32_t REG_PLAY_CMD_TIME_HI_ADDR;
72 static const uint32_t REG_PLAY_CMD_ADDR;
73 static const uint32_t REG_PLAY_WORDS_PER_PKT_ADDR;
74 static const uint32_t REG_PLAY_ITEM_SIZE_ADDR;
75
76 static const uint32_t PLAY_CMD_STOP;
77 static const uint32_t PLAY_CMD_FINITE;
78 static const uint32_t PLAY_CMD_CONTINUOUS;
79
80 /**************************************************************************
81 * Replay Control API calls
82 *************************************************************************/
98 virtual void record(
99 const uint64_t offset, const uint64_t size, const size_t port = 0) = 0;
100
105 virtual void record_restart(const size_t port = 0) = 0;
106
129 virtual void play(const uint64_t offset,
130 const uint64_t size,
131 const size_t port = 0,
132 const uhd::time_spec_t time_spec = uhd::time_spec_t(0.0),
133 const bool repeat = false) = 0;
134
142 virtual void stop(const size_t port = 0) = 0;
143
151 virtual uint64_t get_mem_size() const = 0;
152
157 virtual uint64_t get_word_size() const = 0;
158
159 /**************************************************************************
160 * Record State API calls
161 *************************************************************************/
167 virtual uint64_t get_record_offset(const size_t port = 0) const = 0;
168
174 virtual uint64_t get_record_size(const size_t port = 0) const = 0;
175
184 virtual uint64_t get_record_fullness(const size_t port = 0) = 0;
185
191 virtual io_type_t get_record_type(const size_t port = 0) const = 0;
192
198 virtual size_t get_record_item_size(const size_t port = 0) const = 0;
199
200 /**************************************************************************
201 * Playback State API calls
202 *************************************************************************/
208 virtual uint64_t get_play_offset(const size_t port = 0) const = 0;
209
215 virtual uint64_t get_play_size(const size_t port = 0) const = 0;
216
222 virtual uint32_t get_max_items_per_packet(const size_t port = 0) const = 0;
223
231 virtual uint32_t get_max_packet_size(const size_t port = 0) const = 0;
232
238 virtual io_type_t get_play_type(const size_t port = 0) const = 0;
239
245 virtual size_t get_play_item_size(const size_t port = 0) const = 0;
246
247 /**************************************************************************
248 * Advanced Record Control API calls
249 *************************************************************************/
257 virtual void set_record_type(const io_type_t type, const size_t port = 0) = 0;
258
259 /**************************************************************************
260 * Advanced Playback Control API calls
261 *************************************************************************/
275 virtual void config_play(
276 const uint64_t offset, const uint64_t size, const size_t port = 0) = 0;
277
285 virtual void set_play_type(const io_type_t type, const size_t port = 0) = 0;
286
296 virtual void set_max_items_per_packet(const uint32_t ipp, const size_t port = 0) = 0;
297
305 virtual void set_max_packet_size(const uint32_t size, const size_t port = 0) = 0;
306
322 virtual void issue_stream_cmd(
323 const uhd::stream_cmd_t& stream_cmd, const size_t port = 0) = 0;
324};
325
326}} /* namespace uhd::rfnoc */
Definition: noc_block_base.hpp:42
Definition: replay_block_control.hpp:45
Definition: time_spec.hpp:31
#define UHD_API
Definition: config.h:70
std::string io_type_t
Definition: defaults.hpp:32
Definition: build_info.hpp:12
#define RFNOC_DECLARE_BLOCK(CLASS_NAME)
Definition: noc_block_base.hpp:21
Definition: stream_cmd.hpp:40