本文整理汇总了C++中uhd::usrp::multi_usrp::sptr::get_rx_gain_range方法的典型用法代码示例。如果您正苦于以下问题:C++ sptr::get_rx_gain_range方法的具体用法?C++ sptr::get_rx_gain_range怎么用?C++ sptr::get_rx_gain_range使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类uhd::usrp::multi_usrp::sptr
的用法示例。
在下文中一共展示了sptr::get_rx_gain_range方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: init_usrp
void init_usrp() {
cout << "Initial USRP" << endl;
usrp = uhd::usrp::multi_usrp::make(usrp_ip);
usrp->set_rx_rate(rate);
usrp->set_tx_rate(rate);
usrp->set_rx_freq(freq);
usrp->set_tx_freq(freq);
usrp->set_rx_gain(gain);
uhd::meta_range_t rx_range = usrp->get_rx_gain_range();
}
示例2: init_gains
void uhd_device::init_gains()
{
uhd::gain_range_t range;
range = usrp_dev->get_tx_gain_range();
tx_gain_min = range.start();
tx_gain_max = range.stop();
range = usrp_dev->get_rx_gain_range();
rx_gain_min = range.start();
rx_gain_max = range.stop();
usrp_dev->set_tx_gain((tx_gain_min + tx_gain_max) / 2);
usrp_dev->set_rx_gain((rx_gain_min + rx_gain_max) / 2);
tx_gain = usrp_dev->get_tx_gain();
rx_gain = usrp_dev->get_rx_gain();
return;
}
示例3: set_optimal_rx_gain
/***********************************************************************
* Function to find optimal RX gain setting (for the current frequency)
**********************************************************************/
UHD_INLINE void set_optimal_rx_gain(
uhd::usrp::multi_usrp::sptr usrp,
uhd::rx_streamer::sptr rx_stream,
double wave_freq = 0.0)
{
const double gain_step = 3.0;
const double gain_compression_threshold = gain_step * 0.5;
const double actual_rx_rate = usrp->get_rx_rate();
const double actual_tx_freq = usrp->get_tx_freq();
const double actual_rx_freq = usrp->get_rx_freq();
const double bb_tone_freq = actual_tx_freq - actual_rx_freq + wave_freq;
const size_t nsamps = size_t(actual_rx_rate / default_fft_bin_size);
std::vector<samp_type> buff(nsamps);
uhd::gain_range_t rx_gain_range = usrp->get_rx_gain_range();
double rx_gain = rx_gain_range.start() + gain_step;
double curr_dbrms = 0.0;
double prev_dbrms = 0.0;
double delta = 0.0;
// No sense in setting the gain where this is no gain range
if (rx_gain_range.stop() - rx_gain_range.start() < gain_step)
return;
// The algorithm below cycles through the RX gain range
// looking for the point where the signal begins to get
// clipped and the gain begins to be compressed. It does
// this by looking for the gain setting where the increase
// in the tone is less than the gain step by more than the
// gain compression threshold (curr - prev < gain - threshold).
// Initialize prev_dbrms value
usrp->set_rx_gain(rx_gain);
capture_samples(usrp, rx_stream, buff, nsamps);
prev_dbrms = compute_tone_dbrms(buff, bb_tone_freq/actual_rx_rate);
rx_gain += gain_step;
// Find RX gain where signal begins to clip
while (rx_gain <= rx_gain_range.stop())
{
usrp->set_rx_gain(rx_gain);
capture_samples(usrp, rx_stream, buff, nsamps);
curr_dbrms = compute_tone_dbrms(buff, bb_tone_freq/actual_rx_rate);
delta = curr_dbrms - prev_dbrms;
// check if the gain is compressed beyone the threshold
if (delta < gain_step - gain_compression_threshold)
break; // if so, we are done
prev_dbrms = curr_dbrms;
rx_gain += gain_step;
}
// The rx_gain value at this point is the gain setting where clipping
// occurs or the gain setting that is just beyond the gain range.
// The gain is reduced by 2 steps to make sure it is within the range and
// under the point where it is clipped with enough room to make adjustments.
rx_gain -= 2 * gain_step;
// Make sure the gain is within the range.
rx_gain = rx_gain_range.clip(rx_gain);
// Finally, set the gain.
usrp->set_rx_gain(rx_gain);
}
示例4: get_rx_parameters
//.........这里部分代码省略.........
os << std::endl << "-----> Get RX gain names" << std::endl;
std::vector<std::string> rx_gain_names = usrp->get_rx_gain_names(nchan);
os << "Rx Gain Names: " << std::endl;
for (int index =0; index < rx_gain_names.size(); index++)
{
// Name
os << "\t" << rx_gain_names[index] << endl;
}
for (int index =0; index < rx_gain_names.size(); index++)
{
// Name
os << "\t" << "Name: " << rx_gain_names[index] << " Value: ";
// Value
try
{
double element_gain = usrp->get_rx_gain(rx_gain_names[index], nchan);
os << element_gain << endl;
}
catch(uhd::runtime_error &e)
{
os << "Exception code while getting value: " << e.code() << endl;
}
}
// Gain ranges for each of the gain elements
os << std::endl << "-----> Get RX element gain ranges" << std::endl;
for (int index =0; index < rx_gain_names.size(); index++)
{
// Name
os << "\t" << "Name: " << rx_gain_names[index] << " Value: ";
// Value
try
{
uhd::gain_range_t element_gain_range = usrp->get_rx_gain_range(rx_gain_names[index], nchan);
os << "Start: " << element_gain_range.start() << " End: " << element_gain_range.stop() << " Step: " << element_gain_range.step() << endl;
}
catch(uhd::runtime_error &e)
{
os << "Exception code while getting value: " << e.code() << endl;
}
}
// Total Gain range
try
{
os << endl << "-----> Get RX Total Gain Range" << endl;
uhd::gain_range_t rx_total_gain_range = usrp->get_rx_gain_range(nchan);
os << "RX Total Gain Range: " ;
os << "Start: " << rx_total_gain_range.start() << " End: " << rx_total_gain_range.stop() << " Step: " << rx_total_gain_range.step() << endl;
}
catch(uhd::runtime_error &e)
{
os << "Exception code: " << e.code() <<endl;
}
// ANTENNA FUNCTIONS
os << std::endl << "********** RX ANTENNA ***********" << std::endl;
// Current Rx Antenna
os << std::endl << "-----> Get RX Antenna" << std::endl;
string rx_antenna = usrp->get_rx_antenna(nchan);
os << "RX Antenna: " ;
os << rx_antenna << endl;
// RX Antenna choices
os << std::endl << "-----> Get Rx Antenna List" << std::endl;