8 #ifndef INCLUDED_UHD_USRP_MULTI_USRP_HPP 9 #define INCLUDED_UHD_USRP_MULTI_USRP_HPP 12 #define UHD_USRP_MULTI_USRP_REF_SOURCES_API 13 #define UHD_USRP_MULTI_USRP_GET_RATES_API 14 #define UHD_USRP_MULTI_USRP_FRONTEND_CAL_API 15 #define UHD_USRP_MULTI_USRP_FRONTEND_IQ_AUTO_API 16 #define UHD_USRP_MULTI_USRP_COMMAND_TIME_API 17 #define UHD_USRP_MULTI_USRP_BW_RANGE_API 18 #define UHD_USRP_MULTI_USRP_USER_REGS_API 19 #define UHD_USRP_MULTI_USRP_GET_USRP_INFO_API 20 #define UHD_USRP_MULTI_USRP_NORMALIZED_GAIN 21 #define UHD_USRP_MULTI_USRP_GPIO_API 22 #define UHD_USRP_MULTI_USRP_REGISTER_API 23 #define UHD_USRP_MULTI_USRP_FILTER_API 24 #define UHD_USRP_MULTI_USRP_LO_CONFIG_API 37 #include <boost/shared_ptr.hpp> 38 #include <boost/utility.hpp> 43 namespace uhd{
namespace usrp{
93 typedef boost::shared_ptr<multi_usrp>
sptr;
98 static const size_t ALL_MBOARDS = size_t(~0);
101 static const size_t ALL_CHANS = size_t(~0);
175 virtual void set_master_clock_rate(
double rate,
size_t mboard = ALL_MBOARDS) = 0;
182 virtual double get_master_clock_rate(
size_t mboard = 0) = 0;
188 virtual std::string get_pp_string(
void) = 0;
195 virtual std::string get_mboard_name(
size_t mboard = 0) = 0;
202 virtual time_spec_t get_time_now(
size_t mboard = 0) = 0;
209 virtual time_spec_t get_time_last_pps(
size_t mboard = 0) = 0;
222 virtual void set_time_now(
const time_spec_t &time_spec,
size_t mboard = ALL_MBOARDS) = 0;
236 virtual void set_time_next_pps(
const time_spec_t &time_spec,
size_t mboard = ALL_MBOARDS) = 0;
253 virtual void set_time_unknown_pps(
const time_spec_t &time_spec) = 0;
261 virtual bool get_time_synchronized(
void) = 0;
273 virtual void set_command_time(
const uhd::time_spec_t &time_spec,
size_t mboard = ALL_MBOARDS) = 0;
280 virtual void clear_command_time(
size_t mboard = ALL_MBOARDS) = 0;
294 virtual void issue_stream_cmd(
const stream_cmd_t &stream_cmd,
size_t chan = ALL_CHANS) = 0;
304 virtual void set_clock_config(
const clock_config_t &clock_config,
size_t mboard = ALL_MBOARDS) = 0;
314 virtual void set_time_source(
const std::string &source,
const size_t mboard = ALL_MBOARDS) = 0;
321 virtual std::string get_time_source(
const size_t mboard) = 0;
328 virtual std::vector<std::string> get_time_sources(
const size_t mboard) = 0;
337 virtual void set_clock_source(
const std::string &source,
const size_t mboard = ALL_MBOARDS) = 0;
344 virtual std::string get_clock_source(
const size_t mboard) = 0;
351 virtual std::vector<std::string> get_clock_sources(
const size_t mboard) = 0;
361 virtual void set_clock_source_out(
const bool enb,
const size_t mboard = ALL_MBOARDS) = 0;
371 virtual void set_time_source_out(
const bool enb,
const size_t mboard = ALL_MBOARDS) = 0;
376 virtual size_t get_num_mboards(
void) = 0;
384 virtual sensor_value_t get_mboard_sensor(
const std::string &name,
size_t mboard = 0) = 0;
391 virtual std::vector<std::string> get_mboard_sensor_names(
size_t mboard = 0) = 0;
400 virtual void set_user_register(
const uint8_t addr,
const uint32_t data,
size_t mboard = ALL_MBOARDS) = 0;
427 virtual size_t get_rx_num_channels(
void) = 0;
434 virtual std::string get_rx_subdev_name(
size_t chan = 0) = 0;
441 virtual void set_rx_rate(
double rate,
size_t chan = ALL_CHANS) = 0;
448 virtual double get_rx_rate(
size_t chan = 0) = 0;
472 virtual double get_rx_freq(
size_t chan = 0) = 0;
483 virtual freq_range_t get_rx_freq_range(
size_t chan = 0) = 0;
490 virtual freq_range_t get_fe_rx_freq_range(
size_t chan = 0) = 0;
508 virtual std::vector<std::string> get_rx_lo_names(
size_t chan = 0) = 0;
521 virtual void set_rx_lo_source(
522 const std::string &src,
523 const std::string &name = ALL_LOS,
535 virtual const std::string get_rx_lo_source(
536 const std::string &name = ALL_LOS,
551 virtual std::vector<std::string> get_rx_lo_sources(
552 const std::string &name = ALL_LOS,
566 virtual void set_rx_lo_export_enabled(
568 const std::string &name = ALL_LOS,
577 virtual bool get_rx_lo_export_enabled(
578 const std::string &name = ALL_LOS,
605 virtual double set_rx_lo_freq(
607 const std::string &name,
621 virtual double get_rx_lo_freq(
622 const std::string &name,
636 const std::string &name,
652 virtual std::vector<std::string> get_tx_lo_names(
size_t chan = 0) = 0;
665 virtual void set_tx_lo_source(
666 const std::string &src,
667 const std::string &name = ALL_LOS,
668 const size_t chan = 0
679 virtual const std::string get_tx_lo_source(
680 const std::string &name = ALL_LOS,
681 const size_t chan = 0
694 virtual std::vector<std::string> get_tx_lo_sources(
695 const std::string &name = ALL_LOS,
696 const size_t chan = 0
709 virtual void set_tx_lo_export_enabled(
711 const std::string &name = ALL_LOS,
712 const size_t chan = 0
720 virtual bool get_tx_lo_export_enabled(
721 const std::string &name = ALL_LOS,
722 const size_t chan = 0
748 virtual double set_tx_lo_freq(
750 const std::string &name,
764 virtual double get_tx_lo_freq(
765 const std::string &name,
779 const std::string &name,
793 virtual void set_rx_gain(
double gain,
const std::string &name,
size_t chan = 0) = 0;
807 virtual std::vector<std::string> get_rx_gain_profile_names(
const size_t chan = 0) = 0;
814 virtual void set_rx_gain_profile(
const std::string& profile,
const size_t chan = 0) = 0;
821 virtual std::string get_rx_gain_profile(
const size_t chan = 0) = 0;
825 return this->set_rx_gain(gain, ALL_GAINS, chan);
844 virtual void set_normalized_rx_gain(
double gain,
size_t chan = 0) = 0;
854 virtual void set_rx_agc(
bool enable,
size_t chan = 0) = 0;
863 virtual double get_rx_gain(
const std::string &name,
size_t chan = 0) = 0;
867 return this->get_rx_gain(ALL_GAINS, chan);
880 virtual double get_normalized_rx_gain(
size_t chan = 0) = 0;
889 virtual gain_range_t get_rx_gain_range(
const std::string &name,
size_t chan = 0) = 0;
893 return this->get_rx_gain_range(ALL_GAINS, chan);
902 virtual std::vector<std::string> get_rx_gain_names(
size_t chan = 0) = 0;
909 virtual void set_rx_antenna(
const std::string &ant,
size_t chan = 0) = 0;
916 virtual std::string get_rx_antenna(
size_t chan = 0) = 0;
923 virtual std::vector<std::string> get_rx_antennas(
size_t chan = 0) = 0;
930 virtual void set_rx_bandwidth(
double bandwidth,
size_t chan = 0) = 0;
937 virtual double get_rx_bandwidth(
size_t chan = 0) = 0;
944 virtual meta_range_t get_rx_bandwidth_range(
size_t chan = 0) = 0;
961 virtual sensor_value_t get_rx_sensor(
const std::string &name,
size_t chan = 0) = 0;
968 virtual std::vector<std::string> get_rx_sensor_names(
size_t chan = 0) = 0;
982 virtual void set_rx_dc_offset(
const bool enb,
size_t chan = ALL_CHANS) = 0;
991 virtual void set_rx_dc_offset(
const std::complex<double> &offset,
size_t chan = ALL_CHANS) = 0;
999 virtual void set_rx_iq_balance(
const bool enb,
size_t chan) = 0;
1008 virtual void set_rx_iq_balance(
const std::complex<double> &correction,
size_t chan = ALL_CHANS) = 0;
1035 virtual size_t get_tx_num_channels(
void) = 0;
1042 virtual std::string get_tx_subdev_name(
size_t chan = 0) = 0;
1049 virtual void set_tx_rate(
double rate,
size_t chan = ALL_CHANS) = 0;
1056 virtual double get_tx_rate(
size_t chan = 0) = 0;
1063 virtual meta_range_t get_tx_rates(
size_t chan = 0) = 0;
1080 virtual double get_tx_freq(
size_t chan = 0) = 0;
1091 virtual freq_range_t get_tx_freq_range(
size_t chan = 0) = 0;
1098 virtual freq_range_t get_fe_tx_freq_range(
size_t chan = 0) = 0;
1107 virtual void set_tx_gain(
double gain,
const std::string &name,
size_t chan = 0) = 0;
1121 virtual std::vector<std::string> get_tx_gain_profile_names(
const size_t chan = 0) = 0;
1128 virtual void set_tx_gain_profile(
const std::string& profile,
const size_t chan = 0) = 0;
1135 virtual std::string get_tx_gain_profile(
const size_t chan = 0) = 0;
1139 return this->set_tx_gain(gain, ALL_GAINS, chan);
1152 virtual void set_normalized_tx_gain(
double gain,
size_t chan = 0) = 0;
1161 virtual double get_tx_gain(
const std::string &name,
size_t chan = 0) = 0;
1165 return this->get_tx_gain(ALL_GAINS, chan);
1178 virtual double get_normalized_tx_gain(
size_t chan = 0) = 0;
1187 virtual gain_range_t get_tx_gain_range(
const std::string &name,
size_t chan = 0) = 0;
1191 return this->get_tx_gain_range(ALL_GAINS, chan);
1200 virtual std::vector<std::string> get_tx_gain_names(
size_t chan = 0) = 0;
1207 virtual void set_tx_antenna(
const std::string &ant,
size_t chan = 0) = 0;
1214 virtual std::string get_tx_antenna(
size_t chan = 0) = 0;
1221 virtual std::vector<std::string> get_tx_antennas(
size_t chan = 0) = 0;
1228 virtual void set_tx_bandwidth(
double bandwidth,
size_t chan = 0) = 0;
1235 virtual double get_tx_bandwidth(
size_t chan = 0) = 0;
1242 virtual meta_range_t get_tx_bandwidth_range(
size_t chan = 0) = 0;
1259 virtual sensor_value_t get_tx_sensor(
const std::string &name,
size_t chan = 0) = 0;
1266 virtual std::vector<std::string> get_tx_sensor_names(
size_t chan = 0) = 0;
1274 virtual void set_tx_dc_offset(
const std::complex<double> &offset,
size_t chan = ALL_CHANS) = 0;
1283 virtual void set_tx_iq_balance(
const std::complex<double> &correction,
size_t chan = ALL_CHANS) = 0;
1294 virtual std::vector<std::string> get_gpio_banks(
const size_t mboard) = 0;
1312 virtual void set_gpio_attr(
const std::string &bank,
const std::string &attr,
const uint32_t value,
const uint32_t
mask = 0xffffffff,
const size_t mboard = 0) = 0;
1339 virtual void set_gpio_attr(
const std::string &bank,
const std::string &attr,
const std::string &value,
const uint32_t
mask = 0xffffffff,
const size_t mboard = 0) = 0;
1357 virtual uint32_t get_gpio_attr(
const std::string &bank,
const std::string &attr,
const size_t mboard = 0) = 0;
1384 virtual std::vector<std::string> get_gpio_string_attr(
const std::string &bank,
const std::string &attr,
const size_t mboard = 0) = 0;
1400 virtual std::vector<std::string> enumerate_registers(
const size_t mboard = 0) = 0;
1408 virtual register_info_t get_register_info(
const std::string &path,
const size_t mboard = 0) = 0;
1417 virtual void write_register(
const std::string &path,
const uint32_t field,
const uint64_t value,
const size_t mboard = 0) = 0;
1426 virtual uint64_t read_register(
const std::string &path,
const uint32_t field,
const size_t mboard = 0) = 0;
1442 virtual std::vector<std::string> get_filter_names(
const std::string &search_mask =
"") = 0;
gain_range_t get_rx_gain_range(size_t chan=0)
A convenience wrapper for getting overall RX gain range.
Definition: multi_usrp.hpp:892
Definition: stream_cmd.hpp:36
Definition: tune_result.hpp:19
double get_tx_gain(size_t chan=0)
A convenience wrapper for getting overall TX gain.
Definition: multi_usrp.hpp:1164
void set_tx_gain(double gain, size_t chan=0)
A convenience wrapper for setting overall TX gain.
Definition: multi_usrp.hpp:1138
Definition: time_spec.hpp:29
bool readable
Definition: multi_usrp.hpp:1391
boost::shared_ptr< device > sptr
Definition: device.hpp:31
boost::shared_ptr< multi_usrp > sptr
Definition: multi_usrp.hpp:93
Definition: multi_usrp.hpp:1389
double get_rx_gain(size_t chan=0)
A convenience wrapper for getting overall RX gain.
Definition: multi_usrp.hpp:866
Definition: tune_request.hpp:23
boost::shared_ptr< rx_streamer > sptr
Definition: stream.hpp:161
static const std::string ALL_GAINS
A wildcard gain element name.
Definition: multi_usrp.hpp:104
Definition: build_info.hpp:14
Definition: sensors.hpp:29
boost::shared_ptr< filter_info_base > sptr
Definition: filters.hpp:28
Definition: clock_config.hpp:26
Definition: multi_usrp.hpp:91
Definition: stream.hpp:47
#define UHD_API
Definition: config.h:63
UHD_INLINE data_t mask(const soft_reg_field_t field)
Definition: soft_register.hpp:87
boost::shared_ptr< dboard_iface > sptr
Definition: dboard_iface.hpp:54
void set_rx_gain(double gain, size_t chan=0)
A convenience wrapper for setting overall RX gain.
Definition: multi_usrp.hpp:824
static const std::string ALL_LOS
A wildcard LO stage name.
Definition: multi_usrp.hpp:107
Definition: subdev_spec.hpp:62
bool writable
Definition: multi_usrp.hpp:1392
size_t bitwidth
Definition: multi_usrp.hpp:1390
boost::shared_ptr< tx_streamer > sptr
Definition: stream.hpp:237
gain_range_t get_tx_gain_range(size_t chan=0)
A convenience wrapper for getting overall TX gain range.
Definition: multi_usrp.hpp:1190
Definition: device_addr.hpp:38