|
|
@ -1814,8 +1814,9 @@ int set_derived_args_nr(all_args_t* args_, rrc_nr_cfg_t* rrc_nr_cfg_, phy_cfg_t*
|
|
|
|
return SRSRAN_ERROR;
|
|
|
|
return SRSRAN_ERROR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (rrc_nr_cfg_->is_standalone) {
|
|
|
|
if (rrc_nr_cfg_->is_standalone) {
|
|
|
|
if (cfg.phy_cell.carrier.dl_center_frequency_hz != 1842.5e6) {
|
|
|
|
if (is_valid_arfcn(cfg.band, cfg.dl_arfcn) == false) {
|
|
|
|
ERROR("Only DL-ARFCN 368500 supported.");
|
|
|
|
ERROR("DL-ARFCN %d in band n%d not supported with coreset0 config.", cfg.dl_arfcn, cfg.band);
|
|
|
|
|
|
|
|
ERROR("Valid ARFCNs for band n%d are: %s", cfg.band, valid_arfcns_to_string(cfg.band).c_str());
|
|
|
|
return SRSRAN_ERROR;
|
|
|
|
return SRSRAN_ERROR;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (cfg.duplex_mode == SRSRAN_DUPLEX_MODE_TDD) {
|
|
|
|
if (cfg.duplex_mode == SRSRAN_DUPLEX_MODE_TDD) {
|
|
|
@ -1828,6 +1829,38 @@ int set_derived_args_nr(all_args_t* args_, rrc_nr_cfg_t* rrc_nr_cfg_, phy_cfg_t*
|
|
|
|
return SRSRAN_SUCCESS;
|
|
|
|
return SRSRAN_SUCCESS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// List of selected ARFCNs in band n3, n7 and n20 that match the coreset0 config
|
|
|
|
|
|
|
|
using arfcn_list_t = std::list<uint32_t>;
|
|
|
|
|
|
|
|
std::map<uint32_t, arfcn_list_t> valid_arfcn = {{3, {363500, 368500, 369500, 374500, 375000}},
|
|
|
|
|
|
|
|
{7, {525000, 526200, 531000}},
|
|
|
|
|
|
|
|
{20, {159000, 160200}}};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string valid_arfcns_to_string(uint32_t band)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
std::string band_string;
|
|
|
|
|
|
|
|
if (valid_arfcn.find(band) != valid_arfcn.end()) {
|
|
|
|
|
|
|
|
for (const auto& arfcn : valid_arfcn.at(band)) {
|
|
|
|
|
|
|
|
band_string += std::to_string(arfcn);
|
|
|
|
|
|
|
|
band_string += ", ";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return band_string;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool is_valid_arfcn(uint32_t band, uint32_t dl_arfcn)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (valid_arfcn.find(band) == valid_arfcn.end()) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
const auto& arfcn_list = valid_arfcn.at(band);
|
|
|
|
|
|
|
|
for (const auto& arfcn : arfcn_list) {
|
|
|
|
|
|
|
|
if (arfcn == dl_arfcn) {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace enb_conf_sections
|
|
|
|
} // namespace enb_conf_sections
|
|
|
|
|
|
|
|
|
|
|
|
namespace sib_sections {
|
|
|
|
namespace sib_sections {
|
|
|
|