From b11ffaee7e4d58c015a7ee716a5dad06ef8dae3d Mon Sep 17 00:00:00 2001 From: Xavier Arteaga Date: Wed, 6 May 2020 10:45:28 +0200 Subject: [PATCH] SRSENB: fix channel emulator for multiple channels --- srsenb/hdr/phy/phy_common.h | 12 +++++++++++- srsenb/src/phy/phy_common.cc | 2 +- srsenb/src/phy/txrx.cc | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/srsenb/hdr/phy/phy_common.h b/srsenb/hdr/phy/phy_common.h index 0e3323cde..c9aeeba81 100644 --- a/srsenb/hdr/phy/phy_common.h +++ b/srsenb/hdr/phy/phy_common.h @@ -89,9 +89,19 @@ public: return ret; }; + uint32_t get_nof_rf_channels() + { + uint32_t count = 0; + + for (auto& cell : cell_list) { + count += cell.cell.nof_ports; + } + + return count; + } double get_ul_freq_hz(uint32_t cc_idx) { - double ret = 0.0f; + double ret = 0.0; if (cc_idx < cell_list.size()) { ret = cell_list[cc_idx].ul_freq_hz; diff --git a/srsenb/src/phy/phy_common.cc b/srsenb/src/phy/phy_common.cc index eaf967dba..091d41646 100644 --- a/srsenb/src/phy/phy_common.cc +++ b/srsenb/src/phy/phy_common.cc @@ -68,7 +68,7 @@ bool phy_common::init(const phy_cell_cfg_list_t& cell_list_, // Instantiate DL channel emulator if (params.dl_channel_args.enable) { - dl_channel = srslte::channel_ptr(new srslte::channel(params.dl_channel_args, 1)); + dl_channel = srslte::channel_ptr(new srslte::channel(params.dl_channel_args, get_nof_rf_channels())); dl_channel->set_srate((uint32_t)srslte_sampling_freq_hz(cell_list[0].cell.nof_prb)); } diff --git a/srsenb/src/phy/txrx.cc b/srsenb/src/phy/txrx.cc index c68185c0f..174296af8 100644 --- a/srsenb/src/phy/txrx.cc +++ b/srsenb/src/phy/txrx.cc @@ -69,7 +69,8 @@ bool txrx::init(srslte::radio_interface_phy* radio_h_, // Instantiate UL channel emulator if (worker_com->params.ul_channel_args.enable) { - ul_channel = srslte::channel_ptr(new srslte::channel(worker_com->params.ul_channel_args, 1)); + ul_channel = + srslte::channel_ptr(new srslte::channel(worker_com->params.ul_channel_args, worker_com->get_nof_rf_channels())); } start(prio_);