/usr/include/uhd/usrp/dboard_manager.hpp is in libuhd-dev 3.10.3.0-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | //
// Copyright 2010,2017 Ettus Research, A National Instruments Company
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
#ifndef INCLUDED_UHD_USRP_DBOARD_MANAGER_HPP
#define INCLUDED_UHD_USRP_DBOARD_MANAGER_HPP
#include <uhd/config.hpp>
#include <uhd/property_tree.hpp>
#include <uhd/usrp/dboard_base.hpp>
#include <uhd/usrp/dboard_id.hpp>
#include <uhd/usrp/dboard_eeprom.hpp>
#include <boost/utility.hpp>
#include <boost/shared_ptr.hpp>
#include <string>
#include <vector>
namespace uhd{ namespace usrp{
/*!
* A daughter board subdev dboard_manager class.
* Create subdev instances for each subdev on a dboard.
* Provide wax::obj access to the subdevs inside.
*/
class UHD_API dboard_manager : boost::noncopyable{
public:
typedef boost::shared_ptr<dboard_manager> sptr;
//dboard constructor (each dboard should have a ::make with this signature)
typedef dboard_base::sptr(*dboard_ctor_t)(dboard_base::ctor_args_t);
/*!
* Register a rx or tx dboard into the system.
* For single subdevice boards, omit subdev_names.
* \param dboard_id the dboard id (rx or tx)
* \param db_subdev_ctor the dboard sub-device constructor function pointer (one instance per subdev name)
* \param name the canonical name for the dboard represented
* \param subdev_names the names of the subdevs on this dboard
* \param db_container_ctor the dboard container constructor function pointer (one instance per dboard)
*/
static void register_dboard(
const dboard_id_t &dboard_id,
dboard_ctor_t db_subdev_ctor,
const std::string &name,
const std::vector<std::string> &subdev_names = std::vector<std::string>(1, "0"),
dboard_ctor_t db_container_ctor = NULL
);
/*!
* Register an xcvr dboard into the system.
* For single subdevice boards, omit subdev_names.
* \param rx_dboard_id the rx unit dboard id
* \param tx_dboard_id the tx unit dboard id
* \param db_subdev_ctor the dboard sub-device constructor function pointer (one instance per subdev name)
* \param name the canonical name for the dboard represented
* \param subdev_names the names of the subdevs on this dboard
* \param db_container_ctor the dboard container constructor function pointer (one instance per dboard)
*/
static void register_dboard(
const dboard_id_t &rx_dboard_id,
const dboard_id_t &tx_dboard_id,
dboard_ctor_t db_subdev_ctor,
const std::string &name,
const std::vector<std::string> &subdev_names = std::vector<std::string>(1, "0"),
dboard_ctor_t db_container_ctor = NULL
);
/*!
* Register a restricted rx or tx dboard into the system.
* A restricted dboard does not add its dboard_iface object into the property tree.
* For single subdevice boards, omit subdev_names.
* The iface for a restricted board is not registered into the property tree.
* \param dboard_id the dboard id (rx or tx)
* \param db_subdev_ctor the dboard sub-device constructor function pointer (one instance per subdev name)
* \param name the canonical name for the dboard represented
* \param subdev_names the names of the subdevs on this dboard
* \param db_container_ctor the dboard container constructor function pointer (one instance per dboard)
*/
static void register_dboard_restricted(
const dboard_id_t &dboard_id,
dboard_ctor_t db_subdev_ctor,
const std::string &name,
const std::vector<std::string> &subdev_names = std::vector<std::string>(1, "0"),
dboard_ctor_t db_container_ctor = NULL
);
/*!
* Register a restricted xcvr dboard into the system.
* A restricted dboard does not add its dboard_iface object into the property tree.
* For single subdevice boards, omit subdev_names.
* The iface for a restricted board is not registered into the property tree.
* \param rx_dboard_id the rx unit dboard id
* \param tx_dboard_id the tx unit dboard id
* \param db_subdev_ctor the dboard sub-device constructor function pointer (one instance per subdev name)
* \param name the canonical name for the dboard represented
* \param subdev_names the names of the subdevs on this dboard
* \param db_container_ctor the dboard container constructor function pointer (one instance per dboard)
*/
static void register_dboard_restricted(
const dboard_id_t &rx_dboard_id,
const dboard_id_t &tx_dboard_id,
dboard_ctor_t db_subdev_ctor,
const std::string &name,
const std::vector<std::string> &subdev_names = std::vector<std::string>(1, "0"),
dboard_ctor_t db_container_ctor = NULL
);
/*!
* Make a new dboard manager.
* \param rx_dboard_id the id of the rx dboard
* \param tx_dboard_id the id of the tx dboard
* \param gdboard_id the id of the grand-dboard
* \param iface the custom dboard interface
* \param subtree the subtree to load with props
* \param defer_db_init initialising the daughterboards (DEPRECATED)
* \return an sptr to the new dboard manager
*/
static sptr make(
dboard_id_t rx_dboard_id,
dboard_id_t tx_dboard_id,
dboard_id_t gdboard_id,
dboard_iface::sptr iface,
property_tree::sptr subtree,
bool defer_db_init = false
);
/*!
* Make a new dboard manager.
* \param rx_eeprom the RX EEPROM data
* \param tx_eeprom the TX EEPROM data
* \param gdb_eeprom the grand-dboard EEPROM data
* \param iface the custom dboard interface
* \param subtree the subtree to load with props
* \param defer_db_init initialising the daughterboards (DEPRECATED)
* \return an sptr to the new dboard manager
*/
static sptr make(
dboard_eeprom_t rx_eeprom,
dboard_eeprom_t tx_eeprom,
dboard_eeprom_t gdb_eeprom,
dboard_iface::sptr iface,
property_tree::sptr subtree,
bool defer_db_init = false
);
virtual ~dboard_manager() {}
/*!
* Run dboard post constructor initializations if defered during make
*/
virtual void initialize_dboards() = 0;
/*!
* Returns a vector of RX frontend (subdev) names
* \return a vector of names
*/
virtual const std::vector<std::string>& get_rx_frontends() const = 0;
/*!
* Returns a vector of TX frontend (subdev) names
* \return a vector of names
*/
virtual const std::vector<std::string>& get_tx_frontends() const = 0;
};
}} //namespace
#endif /* INCLUDED_UHD_USRP_DBOARD_MANAGER_HPP */
|