 |
USRP Hardware Driver and USRP Manual
Version: 4.9.0.0
UHD and USRP Manual
|
|
Go to the documentation of this file.
16 namespace uhd {
namespace rfnoc {
namespace test {
42 [&samp_rate_in = _samp_rate_in,
43 &master_clock_rate = _master_clock_rate,
46 samp_rate_in = master_clock_rate.get();
56 this->_samp_rate_out = this->_master_clock_rate.
get();
59 {&_master_clock_rate, &_samp_rate_in, &_samp_rate_out},
62 get_unique_id(),
" Calling resolver for `master_clock_rate'...");
63 if (_master_clock_rate.
get() > 150e6) {
64 _master_clock_rate = 200e6;
66 _master_clock_rate = 100e6;
68 _samp_rate_in = _master_clock_rate.
get();
70 _samp_rate_out = _master_clock_rate.
get();
74 "Forcing samp_rate_out to " << _samp_rate_out.
get());
90 std::dynamic_pointer_cast<stream_cmd_action_info>(action);
93 stream_cmd_action->stream_cmd.stream_mode;
94 RFNOC_LOG_INFO(
"Received stream command: " << stream_mode <<
" to "
96 <<
", id==" << action->id);
99 }
else if (stream_mode
116 return "MOCK_RADIO" + std::to_string(_radio_idx);
132 auto rx_event_action =
153 const size_t _radio_idx;
157 property_t<double> _master_clock_rate{
185 UHD_LOG_INFO(
"MOCK DDC",
"Calling resolver for `decim'...");
187 samp_rate_out = samp_rate_in.get() / decim.get();
197 UHD_LOG_INFO(
"MOCK DDC",
"Calling resolver for `samp_rate_in'...");
198 decim =
coerce_decim(
int(samp_rate_in.get() / samp_rate_out.get()));
199 samp_rate_out = samp_rate_in.get() / decim.get();
207 UHD_LOG_INFO(
"MOCK DDC",
"Calling resolver for `samp_rate_out'...");
208 decim =
coerce_decim(
int(samp_rate_in.get() / samp_rate_out.get()));
209 samp_rate_in = samp_rate_out.get() * decim.get();
217 std::dynamic_pointer_cast<stream_cmd_action_info>(action);
220 stream_cmd_action->stream_cmd.stream_mode;
221 RFNOC_LOG_INFO(
"Received stream command: " << stream_mode <<
" to "
223 <<
", id==" << action->id);
225 new_action->stream_cmd = stream_cmd_action->stream_cmd;
230 new_action->stream_cmd.num_samps *=
_decim.
get();
233 new_action->stream_cmd.num_samps /=
_decim.
get();
238 << new_action->stream_cmd.num_samps
239 <<
", id==" << new_action->id);
263 if (requested_decim <= 1) {
266 return std::min(requested_decim - (requested_decim % 2),
MAX_DECIM);
314 const size_t _num_ports;
332 _samp_rate_in = _samp_rate_user.
get();
342 return "MOCK_STREAMER";
359 scmd->stream_cmd = stream_cmd;
366 const size_t _num_ports;
377 const std::vector<std::string> expected_actions = {},
378 const std::string name =
"MOCK_TERMINATOR")
379 : _num_ports(num_ports), _term_count(
counter++), _name(name)
383 for (
const auto& action_key : expected_actions) {
388 "Received action: key=" << action->key <<
", id=" << action->id
397 return _name + std::to_string(_term_count);
410 template <
typename data_t>
416 set_property<data_t>(
id, val, edge_info);
419 auto edge_info_inverted = edge_info;
422 node_accessor.forward_edge_property(
this, edge_info.
instance, &new_prop);
423 set_property<data_t>(
id, val, edge_info);
427 template <
typename data_t>
432 return get_property<data_t>(
id, edge_info);
443 const size_t _num_ports;
444 const size_t _term_count;
445 const std::string _name;
458 std::unordered_map<res_source_info, std::vector<action_info::sptr>>;
462 const std::string& name =
"MOCK_EDGE_NODE")
463 : _input_ports(input_ports), _output_ports(output_ports), _name(name)
465 _in_props.reserve(_input_ports);
466 _out_props.reserve(_output_ports);
469 for (
size_t i = 0; i < _input_ports; i++) {
470 _in_props.emplace_back(
474 for (
size_t i = 0; i < _output_ports; i++) {
475 _out_props.emplace_back(
482 auto itr = _received_actions.find(src);
483 if (itr == _received_actions.end()) {
484 _received_actions.insert({src, {action}});
486 itr->second.push_back(action);
491 template <
typename T>
495 node_t::set_property<T>(
id, val, rsi);
498 template <
typename T>
501 return node_t::get_property<T>(
id, rsi);
511 return _output_ports;
533 return _received_actions;
538 _received_actions.clear();
543 size_t _output_ports;
545 std::vector<property_t<int>> _in_props;
546 std::vector<property_t<int>> _out_props;
547 received_actions_map_t _received_actions;
557 : _input_ports(input_ports), _output_ports(output_ports)
562 set_prop_forwarding_policy(forwarding_policy_t::DROP);
563 set_action_forwarding_policy(forwarding_policy_t::DROP);
573 return _output_ports;
578 return "MOCK_ROUTING_NODE";
583 set_prop_forwarding_policy(forwarding_policy_t::USE_MAP);
589 set_action_forwarding_policy(forwarding_policy_t::USE_MAP);
595 size_t _output_ports;
mock_radio_node_t(const size_t radio_idx)
Definition: mock_nodes.hpp:31
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:504
mock_streamer_t(const size_t num_ports)
Definition: mock_nodes.hpp:324
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:345
@ STREAM_MODE_START_CONTINUOUS
Definition: stream_cmd.hpp:42
#define UHD_LOG_DEBUG(component,...)
Definition: log.h:46
@ OUTPUT_EDGE
An input edge sources this resource.
Definition: res_source_info.hpp:24
property_t< int > _decim
Definition: mock_nodes.hpp:277
Definition: mock_nodes.hpp:553
Definition: res_source_info.hpp:17
#define UHD_ASSERT_THROW(code)
Definition: exception.hpp:321
#define UHD_LOG_INFO(component,...)
Definition: log.h:53
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:302
void post_action(const res_source_info &edge_info, action_info::sptr action)
Definition: mock_nodes.hpp:435
static source_t invert_edge(const source_t edge_direction)
Definition: res_source_info.hpp:72
mock_terminator_t(const size_t num_ports, const std::vector< std::string > expected_actions={}, const std::string name="MOCK_TERMINATOR")
Definition: mock_nodes.hpp:376
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:244
Definition: exception.hpp:58
const received_actions_map_t & get_received_actions_map() const
Definition: mock_nodes.hpp:531
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:119
long long to_ticks(const double tick_rate) const
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:124
void register_action_handler(const std::string &id, action_handler_t &&handler)
Definition: mock_nodes.hpp:288
constexpr int MAX_DECIM
Definition: mock_nodes.hpp:18
void update_fwd_policy(forwarding_policy_t policy)
Definition: mock_nodes.hpp:109
void set_edge_property(const std::string &id, const T &val, const res_source_info &rsi)
Definition: mock_nodes.hpp:492
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:576
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:340
std::shared_ptr< stream_cmd_action_info > sptr
Definition: actions.hpp:61
@ ONE_TO_ONE
Forward the property/action to the opposite port with the same index.
@ DROP
Property propagation ends here.
@ STREAM_MODE_NUM_SAMPS_AND_MORE
Definition: stream_cmd.hpp:45
property_t< double > _samp_rate_in
Definition: mock_nodes.hpp:273
std::string to_string() const
Returns a string representation of the source.
Definition: res_source_info.hpp:55
#define RFNOC_LOG_DEBUG(message)
Definition: log.hpp:252
void post_action(const res_source_info &edge_info, action_info::sptr action)
T get_edge_property(const std::string &id, const res_source_info &rsi)
Definition: mock_nodes.hpp:499
Definition: mock_nodes.hpp:168
const data_t & get() const
Get the value of this property.
Definition: property.hpp:252
static dirtifier_t ALWAYS_DIRTY
A dirtifyer object, useful for properties that always need updating.
Definition: node.hpp:474
void set_edge_property(const std::string &id, data_t val, res_source_info edge_info)
Definition: mock_nodes.hpp:411
@ INPUT_EDGE
An input edge sources this resource.
Definition: res_source_info.hpp:23
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:566
std::list< action_info::sptr > received_actions
Definition: mock_nodes.hpp:440
void issue_stream_cmd(uhd::stream_cmd_t stream_cmd, const size_t chan)
Definition: mock_nodes.hpp:355
std::shared_ptr< action_info > sptr
Definition: actions.hpp:38
size_t last_num_samps
Definition: mock_nodes.hpp:150
Definition: mock_nodes.hpp:454
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:405
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:254
static int coerce_decim(const int requested_decim)
Definition: mock_nodes.hpp:261
void post_output_edge_action(action_info::sptr action, size_t port)
Definition: mock_nodes.hpp:525
void set_action_forwarding_policy(forwarding_policy_t policy, const std::string &action_key="")
double force_samp_out_value
Definition: mock_nodes.hpp:148
Definition: build_info.hpp:12
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:350
Definition: time_spec.hpp:28
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:509
@ USER
The user API sources this resource.
Definition: res_source_info.hpp:22
static sptr make(const uhd::stream_cmd_t::stream_mode_t stream_mode)
Factory function.
source_t type
The type of source (user or edge)
Definition: res_source_info.hpp:38
std::unordered_map< res_source_info, std::vector< action_info::sptr > > received_actions_map_t
Definition: mock_nodes.hpp:458
mock_ddc_node_t()
Definition: mock_nodes.hpp:171
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:307
void register_property(property_base_t *prop, resolve_callback_t &&clean_callback=nullptr)
std::unordered_map< res_source_info, std::vector< res_source_info > > forwarding_map_t
Definition: node.hpp:43
size_t get_num_output_ports() const override
Definition: mock_nodes.hpp:571
void clear_received_actions_map()
Definition: mock_nodes.hpp:536
Definition: stream_cmd.hpp:39
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:514
forwarding_policy_t
Types of property/action forwarding for those not defined by the block itself.
Definition: node.hpp:46
#define RFNOC_LOG_INFO(message)
Definition: log.hpp:253
void add_property_resolver(prop_ptrs_t &&inputs, prop_ptrs_t &&outputs, resolver_fn_t &&resolver_fn)
mock_routing_node_t(size_t input_ports, size_t output_ports)
Definition: mock_nodes.hpp:556
Definition: mock_nodes.hpp:371
void generate_underrun(const size_t chan, uhd::time_spec_t time_spec)
Definition: mock_nodes.hpp:138
stream_mode_t
Definition: stream_cmd.hpp:41
void set_action_forwarding_map(const node_t::forwarding_map_t &fwd_map)
Definition: mock_nodes.hpp:587
void set_prop_forwarding_map(const node_t::forwarding_map_t &fwd_map)
Definition: mock_nodes.hpp:581
void set_prop_forwarding_map(const forwarding_map_t &map)
Definition: mock_nodes.hpp:321
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:395
size_t rssi_resolver_count
Definition: mock_nodes.hpp:146
void post_input_edge_action(action_info::sptr action, size_t port)
Definition: mock_nodes.hpp:519
@ STREAM_MODE_NUM_SAMPS_AND_DONE
Definition: stream_cmd.hpp:44
bool disable_samp_out_resolver
Definition: mock_nodes.hpp:147
void set_prop_forwarding_policy(forwarding_policy_t policy, const std::string &prop_id="")
mock_edge_node_t(size_t input_ports, size_t output_ports, const std::string &name="MOCK_EDGE_NODE")
Definition: mock_nodes.hpp:460
static size_t counter
Definition: mock_nodes.hpp:374
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:297
Special class which may access nodes.
Definition: node_accessor.hpp:27
void generate_overrun(const size_t chan)
Definition: mock_nodes.hpp:130
void set_action_forwarding_map(const forwarding_map_t &map)
constexpr int DEFAULT_DECIM
Definition: mock_nodes.hpp:20
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:249
static sptr make(uhd::rx_metadata_t::error_code_t error_code)
Factory function.
@ STREAM_MODE_STOP_CONTINUOUS
Definition: stream_cmd.hpp:43
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition: mock_nodes.hpp:114
size_t get_num_input_ports() const override
Definition: mock_nodes.hpp:400
data_t get_edge_property(const std::string &id, res_source_info edge_info)
Definition: mock_nodes.hpp:428
constexpr double DEFAULT_RATE
Definition: mock_nodes.hpp:19
property_t< double > _samp_rate_out
Definition: mock_nodes.hpp:275
static sptr make(uhd::async_metadata_t::event_code_t event_code, const boost::optional< uint64_t > &tsf)
Factory function.
Definition: mock_nodes.hpp:28
size_t instance
The instance of the source. For resource that is sourced by a edge, it.
Definition: res_source_info.hpp:42
mock_fifo_t(const size_t num_ports)
Definition: mock_nodes.hpp:291