42 [&samp_rate_in = _samp_rate_in,
43 &master_clock_rate = _master_clock_rate,
46 samp_rate_in = master_clock_rate.get();
53 get_unique_id(),
"Forcing samp_rate_out to " << _samp_rate_out.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>
419 auto edge_info_inverted = edge_info;
427 template <
typename data_t>
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>
498 template <
typename T>
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;
557 : _input_ports(input_ports), _output_ports(output_ports)
573 return _output_ports;
578 return "MOCK_ROUTING_NODE";
595 size_t _output_ports;
void forward_edge_property(node_t *dst_node, const size_t dst_port, property_base_t *incoming_prop)
Definition node_accessor.hpp:110
const prop_data_t & get_property(const std::string &id, const size_t instance=0)
Definition node.ipp:53
void register_property(property_base_t *prop, resolve_callback_t &&clean_callback=nullptr)
void set_action_forwarding_policy(forwarding_policy_t policy, const std::string &action_key="")
void set_prop_forwarding_map(const forwarding_map_t &map)
void register_action_handler(const std::string &id, action_handler_t &&handler)
void post_action(const res_source_info &edge_info, action_info::sptr action)
void set_property(const std::string &id, const prop_data_t &val, const size_t instance=0)
Definition node.ipp:45
std::unordered_map< res_source_info, std::vector< res_source_info > > forwarding_map_t
Definition node.hpp:42
void set_action_forwarding_map(const forwarding_map_t &map)
forwarding_policy_t
Types of property/action forwarding for those not defined by the block itself.
Definition node.hpp:46
@ ONE_TO_ONE
Forward the property/action to the opposite port with the same index.
Definition node.hpp:49
@ USE_MAP
Forward the property based on a client-provided map.
Definition node.hpp:61
@ DROP
Property propagation ends here.
Definition node.hpp:59
void add_property_resolver(prop_ptrs_t &&inputs, prop_ptrs_t &&outputs, resolver_fn_t &&resolver_fn)
friend class node_accessor_t
Definition node.hpp:477
static dirtifier_t ALWAYS_DIRTY
A dirtifyer object, useful for properties that always need updating.
Definition node.hpp:474
void set_prop_forwarding_policy(forwarding_policy_t policy, const std::string &prop_id="")
Definition property.hpp:151
property_t< double > _samp_rate_out
Definition mock_nodes.hpp:275
static int coerce_decim(const int requested_decim)
Definition mock_nodes.hpp:261
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:254
mock_ddc_node_t()
Definition mock_nodes.hpp:171
property_t< double > _samp_rate_in
Definition mock_nodes.hpp:273
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:244
property_t< int > _decim
Definition mock_nodes.hpp:277
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:249
const received_actions_map_t & get_received_actions_map() const
Definition mock_nodes.hpp:531
T get_edge_property(const std::string &id, const res_source_info &rsi)
Definition mock_nodes.hpp:499
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:504
std::unordered_map< res_source_info, std::vector< action_info::sptr > > received_actions_map_t
Definition mock_nodes.hpp:457
mock_edge_node_t(size_t input_ports, size_t output_ports, const std::string &name="MOCK_EDGE_NODE")
Definition mock_nodes.hpp:460
void post_output_edge_action(action_info::sptr action, size_t port)
Definition mock_nodes.hpp:525
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:514
void clear_received_actions_map()
Definition mock_nodes.hpp:536
void post_input_edge_action(action_info::sptr action, size_t port)
Definition mock_nodes.hpp:519
void set_edge_property(const std::string &id, const T &val, const res_source_info &rsi)
Definition mock_nodes.hpp:492
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:509
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:302
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:307
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:297
mock_fifo_t(const size_t num_ports)
Definition mock_nodes.hpp:291
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 rssi_resolver_count
Definition mock_nodes.hpp:146
void update_fwd_policy(forwarding_policy_t policy)
Definition mock_nodes.hpp:109
double force_samp_out_value
Definition mock_nodes.hpp:148
size_t last_num_samps
Definition mock_nodes.hpp:150
void generate_underrun(const size_t chan, uhd::time_spec_t time_spec)
Definition mock_nodes.hpp:138
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:119
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:124
void generate_overrun(const size_t chan)
Definition mock_nodes.hpp:130
bool disable_samp_out_resolver
Definition mock_nodes.hpp:147
mock_radio_node_t(const size_t radio_idx)
Definition mock_nodes.hpp:31
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:571
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:576
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:566
mock_routing_node_t(size_t input_ports, size_t output_ports)
Definition mock_nodes.hpp:556
void set_prop_forwarding_map(const node_t::forwarding_map_t &fwd_map)
Definition mock_nodes.hpp:581
void set_action_forwarding_map(const node_t::forwarding_map_t &fwd_map)
Definition mock_nodes.hpp:587
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:345
void issue_stream_cmd(uhd::stream_cmd_t stream_cmd, const size_t chan)
Definition mock_nodes.hpp:355
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:340
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:350
mock_streamer_t(const size_t num_ports)
Definition mock_nodes.hpp:324
void post_action(const res_source_info &edge_info, action_info::sptr action)
Definition mock_nodes.hpp:435
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
void set_edge_property(const std::string &id, data_t val, res_source_info edge_info)
Definition mock_nodes.hpp:411
size_t get_num_output_ports() const override
Definition mock_nodes.hpp:405
size_t get_num_input_ports() const override
Definition mock_nodes.hpp:400
std::list< action_info::sptr > received_actions
Definition mock_nodes.hpp:440
std::string get_unique_id() const override
Return a unique identifier string for this node. In every RFNoC graph,.
Definition mock_nodes.hpp:395
data_t get_edge_property(const std::string &id, res_source_info edge_info)
Definition mock_nodes.hpp:428
static size_t counter
Definition mock_nodes.hpp:374
Definition time_spec.hpp:31
long long to_ticks(const double tick_rate) const
#define UHD_ASSERT_THROW(code)
Definition exception.hpp:321
#define UHD_LOG_DEBUG(component,...)
Definition log.h:46
#define UHD_LOG_INFO(component,...)
Definition log.h:53
#define RFNOC_LOG_DEBUG(message)
Definition log.hpp:252
#define RFNOC_LOG_INFO(message)
Definition log.hpp:253
Definition mock_nodes.hpp:16
constexpr int MAX_DECIM
Definition mock_nodes.hpp:18
constexpr double DEFAULT_RATE
Definition mock_nodes.hpp:19
constexpr int DEFAULT_DECIM
Definition mock_nodes.hpp:20
Definition actions.hpp:24
Definition build_info.hpp:12
Definition exception.hpp:59
std::shared_ptr< action_info > sptr
Definition actions.hpp:38
Definition res_source_info.hpp:18
size_t instance
The instance of the source. For resource that is sourced by a edge, it.
Definition res_source_info.hpp:42
source_t type
The type of source (user or edge)
Definition res_source_info.hpp:38
@ INPUT_EDGE
An input edge sources this resource.
Definition res_source_info.hpp:23
@ OUTPUT_EDGE
An input edge sources this resource.
Definition res_source_info.hpp:24
@ USER
The user API sources this resource.
Definition res_source_info.hpp:22
static source_t invert_edge(const source_t edge_direction)
Definition res_source_info.hpp:72
std::string to_string() const
Returns a string representation of the source.
Definition res_source_info.hpp:55
static sptr make(uhd::rx_metadata_t::error_code_t error_code)
Factory function.
std::shared_ptr< stream_cmd_action_info > sptr
Definition actions.hpp:61
static sptr make(const uhd::stream_cmd_t::stream_mode_t stream_mode)
Factory function.
static sptr make(uhd::async_metadata_t::event_code_t event_code, const boost::optional< uint64_t > &tsf)
Factory function.
Definition stream_cmd.hpp:40
stream_mode_t
Definition stream_cmd.hpp:41
@ STREAM_MODE_NUM_SAMPS_AND_DONE
Definition stream_cmd.hpp:44
@ STREAM_MODE_NUM_SAMPS_AND_MORE
Definition stream_cmd.hpp:45
@ STREAM_MODE_STOP_CONTINUOUS
Definition stream_cmd.hpp:43
@ STREAM_MODE_START_CONTINUOUS
Definition stream_cmd.hpp:42