USRP Hardware Driver and USRP Manual  Version: 4.7.0.0-22-g6758966a
UHD and USRP Manual
device.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2010-2011,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 #pragma once
9 
10 #include <uhd/config.hpp>
11 #include <uhd/property_tree.hpp>
12 #include <uhd/stream.hpp>
15 #include <functional>
16 #include <memory>
17 
18 namespace uhd {
19 
20 class property_tree; // forward declaration
21 
27 {
28 public:
29  typedef std::shared_ptr<device> sptr;
30  typedef std::function<device_addrs_t(const device_addr_t&)> find_t;
31  typedef std::function<sptr(const device_addr_t&)> make_t;
32 
34  enum device_filter_t { ANY, USRP, CLOCK };
35  virtual ~device(void) = 0;
36 
44  static void register_device(
45  const find_t& find, const make_t& make, const device_filter_t filter);
46 
57  static device_addrs_t find(const device_addr_t& hint, device_filter_t filter = ANY);
58 
73  static sptr make(
74  const device_addr_t& hint, device_filter_t filter = ANY, size_t which = 0);
75 
85  virtual rx_streamer::sptr get_rx_stream(const stream_args_t& args) = 0;
86 
96  virtual tx_streamer::sptr get_tx_stream(const stream_args_t& args) = 0;
97 
108  virtual bool recv_async_msg(
109  async_metadata_t& async_metadata, double timeout = 0.1) = 0;
110 
113 
116 
117 protected:
120 };
121 
122 } // namespace uhd
Definition: device_addr.hpp:38
Definition: device.hpp:27
device_filter_t _type
Definition: device.hpp:119
virtual rx_streamer::sptr get_rx_stream(const stream_args_t &args)=0
Make a new receive streamer from the streamer arguments.
virtual bool recv_async_msg(async_metadata_t &async_metadata, double timeout=0.1)=0
static device_addrs_t find(const device_addr_t &hint, device_filter_t filter=ANY)
Find devices attached to the host.
std::function< device_addrs_t(const device_addr_t &)> find_t
Definition: device.hpp:30
uhd::property_tree::sptr get_tree(void) const
Get access to the underlying property structure.
uhd::property_tree::sptr _tree
Definition: device.hpp:118
virtual tx_streamer::sptr get_tx_stream(const stream_args_t &args)=0
Make a new transmit streamer from the streamer arguments.
std::shared_ptr< device > sptr
Definition: device.hpp:29
static sptr make(const device_addr_t &hint, device_filter_t filter=ANY, size_t which=0)
Create a new device from the device address hint.
virtual ~device(void)=0
static void register_device(const find_t &find, const make_t &make, const device_filter_t filter)
std::function< sptr(const device_addr_t &)> make_t
Definition: device.hpp:31
device_filter_t
Device type, used as a filter in make.
Definition: device.hpp:34
@ ANY
Definition: device.hpp:34
device_filter_t get_device_type() const
Get device type.
std::shared_ptr< property_tree > sptr
Definition: property_tree.hpp:223
std::shared_ptr< rx_streamer > sptr
Definition: stream.hpp:169
std::shared_ptr< tx_streamer > sptr
Definition: stream.hpp:267
#define UHD_API
Definition: config.h:87
Definition: build_info.hpp:12
boost::noncopyable noncopyable
Definition: noncopyable.hpp:45
std::vector< device_addr_t > device_addrs_t
A typedef for a vector of device addresses.
Definition: device_addr.hpp:93
Definition: metadata.hpp:203
Definition: stream.hpp:48