USRP Hardware Driver and USRP Manual  Version: 3.13.1.0-3
UHD and USRP Manual
source_node_ctrl.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2014 Ettus Research LLC
3 // Copyright 2018 Ettus Research, a National Instruments Company
4 //
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 
8 #ifndef INCLUDED_LIBUHD_SOURCE_NODE_CTRL_BASE_HPP
9 #define INCLUDED_LIBUHD_SOURCE_NODE_CTRL_BASE_HPP
10 
12 #include <uhd/rfnoc/constants.hpp>
13 #include <uhd/types/stream_cmd.hpp>
14 #include <boost/thread.hpp>
15 
16 namespace uhd {
17  namespace rfnoc {
18 
24 class source_node_ctrl : virtual public node_ctrl_base
25 {
26 public:
27  /***********************************************************************
28  * Types
29  **********************************************************************/
30  typedef boost::shared_ptr<source_node_ctrl> sptr;
31  typedef std::map< size_t, boost::weak_ptr<source_node_ctrl> > node_map_t;
32  typedef std::pair< size_t, boost::weak_ptr<source_node_ctrl> > node_map_pair_t;
33 
34  /***********************************************************************
35  * Source block controls
36  **********************************************************************/
41  virtual void issue_stream_cmd(
42  const uhd::stream_cmd_t &stream_cmd,
43  const size_t chan=0
44  ) = 0;
45 
60  size_t connect_downstream(
61  node_ctrl_base::sptr downstream_node,
62  size_t port=ANY_PORT,
64  );
65 
72  virtual void set_rx_streamer(bool active, const size_t port);
73 
74 protected:
75 
86  virtual size_t _request_output_port(
87  const size_t suggested_port,
88  const uhd::device_addr_t &args
89  ) const;
90 
91 
92 private:
95  boost::mutex _output_mutex;
96 
107  void _register_downstream_node(
108  node_ctrl_base::sptr downstream_node,
109  size_t port
110  );
111 
112 }; /* class source_node_ctrl */
113 
114 }} /* namespace uhd::rfnoc */
115 
116 #endif /* INCLUDED_LIBUHD_SOURCE_NODE_CTRL_BASE_HPP */
117 // vim: sw=4 et:
Definition: stream_cmd.hpp:36
std::pair< size_t, boost::weak_ptr< source_node_ctrl > > node_map_pair_t
Definition: source_node_ctrl.hpp:32
Definition: source_node_ctrl.hpp:24
boost::shared_ptr< source_node_ctrl > sptr
Definition: source_node_ctrl.hpp:30
virtual void issue_stream_cmd(const uhd::stream_cmd_t &stream_cmd, const size_t chan=0)=0
Definition: build_info.hpp:14
boost::shared_ptr< node_ctrl_base > sptr
Definition: node_ctrl_base.hpp:37
#define UHD_RFNOC_API
Definition: config.hpp:98
virtual size_t _request_output_port(const size_t suggested_port, const uhd::device_addr_t &args) const
size_t connect_downstream(node_ctrl_base::sptr downstream_node, size_t port=ANY_PORT, const uhd::device_addr_t &args=uhd::device_addr_t())
virtual void set_rx_streamer(bool active, const size_t port)
std::map< size_t, boost::weak_ptr< source_node_ctrl > > node_map_t
Definition: source_node_ctrl.hpp:31
Definition: device_addr.hpp:38
Definition: node_ctrl_base.hpp:31