altered default SR and CQI mapping in rr.conf parsing to avoid collisions

This commit is contained in:
Francisco Paisana 2020-08-25 11:30:33 +01:00
parent afb2674dd0
commit 68acad25c6
2 changed files with 10 additions and 8 deletions

View File

@ -359,9 +359,9 @@ int field_sf_mapping::parse(libconfig::Setting& root)
sf_mapping[i] = root["subframe"][i]; sf_mapping[i] = root["subframe"][i];
} }
} else { } else {
*nof_subframes = root["period"]; *nof_subframes = static_cast<uint32_t>(root["period"]) / 2;
for (uint32_t i = 0; i < *nof_subframes; ++i) { for (uint32_t i = 0; i < *nof_subframes; i++) {
sf_mapping[i] = i; sf_mapping[i] = i * 2 + default_offset;
} }
} }
return 0; return 0;
@ -635,7 +635,7 @@ int parse_rr(all_args_t* args_, rrc_cfg_t* rrc_cfg_)
sched_request_cnfg.add_field(make_asn1_enum_number_parser("dsr_trans_max", &rrc_cfg_->sr_cfg.dsr_max)); sched_request_cnfg.add_field(make_asn1_enum_number_parser("dsr_trans_max", &rrc_cfg_->sr_cfg.dsr_max));
sched_request_cnfg.add_field(new parser::field<uint32>("period", &rrc_cfg_->sr_cfg.period)); sched_request_cnfg.add_field(new parser::field<uint32>("period", &rrc_cfg_->sr_cfg.period));
sched_request_cnfg.add_field(new parser::field<uint32>("nof_prb", &rrc_cfg_->sr_cfg.nof_prb)); sched_request_cnfg.add_field(new parser::field<uint32>("nof_prb", &rrc_cfg_->sr_cfg.nof_prb));
sched_request_cnfg.add_field(new field_sf_mapping(rrc_cfg_->sr_cfg.sf_mapping, &rrc_cfg_->sr_cfg.nof_subframes)); sched_request_cnfg.add_field(new field_sf_mapping(rrc_cfg_->sr_cfg.sf_mapping, &rrc_cfg_->sr_cfg.nof_subframes, 0));
parser::section cqi_report_cnfg("cqi_report_cnfg"); parser::section cqi_report_cnfg("cqi_report_cnfg");
phy_cfg_.add_subsection(&cqi_report_cnfg); phy_cfg_.add_subsection(&cqi_report_cnfg);
@ -646,7 +646,7 @@ int parse_rr(all_args_t* args_, rrc_cfg_t* rrc_cfg_)
cqi_report_cnfg.add_field(new parser::field<uint32>("m_ri", &rrc_cfg_->cqi_cfg.m_ri)); cqi_report_cnfg.add_field(new parser::field<uint32>("m_ri", &rrc_cfg_->cqi_cfg.m_ri));
cqi_report_cnfg.add_field(new parser::field<uint32>("nof_prb", &rrc_cfg_->cqi_cfg.nof_prb)); cqi_report_cnfg.add_field(new parser::field<uint32>("nof_prb", &rrc_cfg_->cqi_cfg.nof_prb));
cqi_report_cnfg.add_field(new parser::field<bool>("simultaneousAckCQI", &rrc_cfg_->cqi_cfg.simultaneousAckCQI)); cqi_report_cnfg.add_field(new parser::field<bool>("simultaneousAckCQI", &rrc_cfg_->cqi_cfg.simultaneousAckCQI));
cqi_report_cnfg.add_field(new field_sf_mapping(rrc_cfg_->cqi_cfg.sf_mapping, &rrc_cfg_->cqi_cfg.nof_subframes)); cqi_report_cnfg.add_field(new field_sf_mapping(rrc_cfg_->cqi_cfg.sf_mapping, &rrc_cfg_->cqi_cfg.nof_subframes, 1));
/* RRC config section */ /* RRC config section */
parser::section rrc_cnfg("cell_list"); parser::section rrc_cnfg("cell_list");

View File

@ -140,10 +140,11 @@ private:
class field_sf_mapping : public parser::field_itf class field_sf_mapping : public parser::field_itf
{ {
public: public:
field_sf_mapping(uint32_t* sf_mapping_, uint32_t* nof_subframes_) field_sf_mapping(uint32_t* sf_mapping_, uint32_t* nof_subframes_, uint32_t default_offset_)
{ {
sf_mapping = sf_mapping_; sf_mapping = sf_mapping_;
nof_subframes = nof_subframes_; nof_subframes = nof_subframes_;
default_offset = default_offset_;
} }
int parse(Setting& root) override; int parse(Setting& root) override;
const char* get_name() override { return "sf_mapping"; } const char* get_name() override { return "sf_mapping"; }
@ -151,6 +152,7 @@ public:
private: private:
uint32_t* sf_mapping; uint32_t* sf_mapping;
uint32_t* nof_subframes; uint32_t* nof_subframes;
uint32_t default_offset;
}; };
class field_qci final : public parser::field_itf class field_qci final : public parser::field_itf