Radio: add individual Rx gain and integrate in srsue

Fix compilation

Fix compilation

Add missing variable. Wasn't compiling

Radio: revert some changes
This commit is contained in:
Xavier Arteaga 2020-07-28 16:06:52 +02:00 committed by Xavier Arteaga
parent 04d7267734
commit df2c949417
3 changed files with 30 additions and 4 deletions

View File

@ -47,6 +47,7 @@ typedef struct {
float ul_freq;
float freq_offset;
float rx_gain;
float rx_gain_ch[SRSLTE_MAX_CARRIERS];
float tx_gain;
float tx_gain_ch[SRSLTE_MAX_CARRIERS];
float tx_max_power;

View File

@ -198,6 +198,26 @@ int radio::init(const rf_args_t& args, phy_interface_radio* phy_)
}
}
// Set individual gains
for (uint32_t i = 0; i < args.nof_carriers; i++) {
if (args.rx_gain_ch[i] > 0) {
for (uint32_t j = 0; j < nof_antennas; j++) {
uint32_t phys_antenna_idx = i * nof_antennas + j;
// From channel number deduce RF device index and channel
uint32_t rf_device_idx = phys_antenna_idx / nof_channels_x_dev;
uint32_t rf_channel_idx = phys_antenna_idx % nof_channels_x_dev;
log_h->info(
"Setting individual rx_gain=%.1f on dev=%d ch=%d\n", args.rx_gain_ch[i], rf_device_idx, rf_channel_idx);
if (srslte_rf_set_rx_gain_ch(&rf_devices[rf_device_idx], rf_channel_idx, args.rx_gain_ch[i]) < 0) {
log_h->error(
"Setting channel rx_gain=%.1f on dev=%d ch=%d\n", args.rx_gain_ch[i], rf_device_idx, rf_channel_idx);
}
}
}
}
// Set resampler buffers to 5 ms
if (std::isnormal(fix_srate_hz)) {
for (auto& buf : rx_buffer) {
@ -277,9 +297,9 @@ bool radio::start_agc(bool tx_gain_same_rx)
bool radio::rx_now(rf_buffer_interface& buffer, rf_timestamp_interface& rxd_time)
{
std::unique_lock<std::mutex> lock(rx_mutex);
bool ret = true;
rf_buffer_t buffer_rx;
uint32_t ratio = SRSLTE_MAX(1, decimators[0].ratio);
bool ret = true;
rf_buffer_t buffer_rx;
uint32_t ratio = SRSLTE_MAX(1, decimators[0].ratio);
// If the interpolator have been set, interpolate
for (uint32_t ch = 0; ch < nof_channels; ch++) {
@ -379,7 +399,7 @@ bool radio::rx_dev(const uint32_t& device_idx, const rf_buffer_interface& buffer
bool radio::tx(rf_buffer_interface& buffer, const rf_timestamp_interface& tx_time)
{
bool ret = true;
bool ret = true;
std::unique_lock<std::mutex> lock(tx_mutex);
// If the interpolator have been set, interpolate

View File

@ -87,6 +87,11 @@ static int parse_args(all_args_t* args, int argc, char* argv[])
("rf.tx_gain[2]", bpo::value<float>(&args->rf.tx_gain_ch[2])->default_value(-1), "Front-end transmitter gain CH2")
("rf.tx_gain[3]", bpo::value<float>(&args->rf.tx_gain_ch[3])->default_value(-1), "Front-end transmitter gain CH3")
("rf.tx_gain[4]", bpo::value<float>(&args->rf.tx_gain_ch[4])->default_value(-1), "Front-end transmitter gain CH4")
("rf.rx_gain[0]", bpo::value<float>(&args->rf.rx_gain_ch[0])->default_value(-1), "Front-end receiver gain CH0")
("rf.rx_gain[1]", bpo::value<float>(&args->rf.rx_gain_ch[1])->default_value(-1), "Front-end receiver gain CH1")
("rf.rx_gain[2]", bpo::value<float>(&args->rf.rx_gain_ch[2])->default_value(-1), "Front-end receiver gain CH2")
("rf.rx_gain[3]", bpo::value<float>(&args->rf.rx_gain_ch[3])->default_value(-1), "Front-end receiver gain CH3")
("rf.rx_gain[4]", bpo::value<float>(&args->rf.rx_gain_ch[4])->default_value(-1), "Front-end receiver gain CH4")
("rf.nof_carriers", bpo::value<uint32_t>(&args->rf.nof_carriers)->default_value(1), "Number of carriers")
("rf.nof_antennas", bpo::value<uint32_t>(&args->rf.nof_antennas)->default_value(1), "Number of antennas per carrier")