mirror of https://github.com/PentHertz/srsLTE.git
Extended measurements interrat nr r15 testcase with measurements
This commit is contained in:
parent
826dd32c89
commit
ce4526a935
|
@ -99,15 +99,7 @@ private:
|
|||
void ho_reest_finish(const uint32_t src_earfcn, const uint32_t dst_earfcn);
|
||||
bool parse_meas_config(const meas_cfg_s* meas_config, bool is_ho_reest, uint32_t src_earfcn);
|
||||
void eval_triggers();
|
||||
void eval_triggers_eutra(uint32_t meas_id,
|
||||
report_cfg_eutra_s& report_cfg,
|
||||
meas_obj_eutra_s& meas_obj,
|
||||
meas_cell_eutra* serv_cell,
|
||||
float Ofs,
|
||||
float Ocs);
|
||||
void report_triggers();
|
||||
void report_triggers_eutra(uint32_t meas_id, report_cfg_eutra_s& report_cfg, meas_obj_eutra_s& meas_obj);
|
||||
|
||||
private:
|
||||
void remove_varmeas_report(const uint32_t meas_id);
|
||||
|
||||
|
@ -130,6 +122,17 @@ private:
|
|||
void reportConfig_addmod_interrat(const report_cfg_to_add_mod_s& l);
|
||||
bool reportConfig_addmod_to_reportConfigList(const report_cfg_to_add_mod_s& l);
|
||||
|
||||
void eval_triggers_eutra(uint32_t meas_id,
|
||||
report_cfg_eutra_s& report_cfg,
|
||||
meas_obj_eutra_s& meas_obj,
|
||||
meas_cell_eutra* serv_cell,
|
||||
float Ofs,
|
||||
float Ocs);
|
||||
void eval_triggers_interrat_nr(uint32_t meas_id, report_cfg_inter_rat_s& report_cfg, meas_obj_nr_r15_s& meas_obj);
|
||||
|
||||
void report_triggers_eutra(uint32_t meas_id, report_cfg_eutra_s& report_cfg, meas_obj_eutra_s& meas_obj);
|
||||
void report_triggers_interrat_nr(uint32_t meas_id, report_cfg_inter_rat_s& report_cfg, meas_obj_nr_r15_s& meas_obj);
|
||||
|
||||
class cell_trigger_state
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -463,6 +463,11 @@ void rrc::rrc_meas::var_meas_cfg::report_triggers_eutra(uint32_t meas
|
|||
}
|
||||
}
|
||||
|
||||
void rrc::rrc_meas::var_meas_cfg::report_triggers_interrat_nr(uint32_t meas_id,
|
||||
report_cfg_inter_rat_s& report_cfg,
|
||||
meas_obj_nr_r15_s& meas_obj)
|
||||
{}
|
||||
|
||||
void rrc::rrc_meas::var_meas_cfg::report_triggers()
|
||||
{
|
||||
// for each measId included in the measIdList within VarMeasConfig
|
||||
|
@ -478,6 +483,11 @@ void rrc::rrc_meas::var_meas_cfg::report_triggers()
|
|||
if (meas_obj.meas_obj.type().value == meas_obj_to_add_mod_s::meas_obj_c_::types_opts::meas_obj_eutra &&
|
||||
report_cfg.report_cfg.type().value == report_cfg_to_add_mod_s::report_cfg_c_::types::report_cfg_eutra) {
|
||||
report_triggers_eutra(m.first, report_cfg.report_cfg.report_cfg_eutra(), meas_obj.meas_obj.meas_obj_eutra());
|
||||
} else if (meas_obj.meas_obj.type().value == meas_obj_to_add_mod_s::meas_obj_c_::types_opts::meas_obj_nr_r15 &&
|
||||
report_cfg.report_cfg.type().value ==
|
||||
report_cfg_to_add_mod_s::report_cfg_c_::types::report_cfg_inter_rat) {
|
||||
report_triggers_interrat_nr(
|
||||
m.first, report_cfg.report_cfg.report_cfg_inter_rat(), meas_obj.meas_obj.meas_obj_nr_r15());
|
||||
} else {
|
||||
log_h->error("Unsupported combination of measurement object type %s and report config type %s \n",
|
||||
meas_obj.meas_obj.type().to_string().c_str(),
|
||||
|
@ -624,6 +634,10 @@ void rrc::rrc_meas::var_meas_cfg::eval_triggers_eutra(uint32_t meas_i
|
|||
}
|
||||
}
|
||||
|
||||
void rrc::rrc_meas::var_meas_cfg::eval_triggers_interrat_nr(uint32_t meas_id,
|
||||
report_cfg_inter_rat_s& report_cfg,
|
||||
meas_obj_nr_r15_s& meas_obj)
|
||||
{}
|
||||
/* Evaluate event trigger conditions for each cell 5.5.4 */
|
||||
void rrc::rrc_meas::var_meas_cfg::eval_triggers()
|
||||
{
|
||||
|
@ -661,10 +675,22 @@ void rrc::rrc_meas::var_meas_cfg::eval_triggers()
|
|||
m.second.meas_obj_id,
|
||||
m.second.report_cfg_id);
|
||||
|
||||
report_cfg_eutra_s& report_cfg = reportConfigList.at(m.second.report_cfg_id).report_cfg.report_cfg_eutra();
|
||||
meas_obj_eutra_s& meas_obj = measObjectsList.at(m.second.meas_obj_id).meas_obj.meas_obj_eutra();
|
||||
|
||||
eval_triggers_eutra(m.first, report_cfg, meas_obj, serv_cell, Ofs, Ocs);
|
||||
report_cfg_to_add_mod_s& report_cfg = reportConfigList.at(m.second.report_cfg_id);
|
||||
meas_obj_to_add_mod_s& meas_obj = measObjectsList.at(m.second.meas_obj_id);
|
||||
if (meas_obj.meas_obj.type().value == meas_obj_to_add_mod_s::meas_obj_c_::types_opts::meas_obj_eutra &&
|
||||
report_cfg.report_cfg.type().value == report_cfg_to_add_mod_s::report_cfg_c_::types::report_cfg_eutra) {
|
||||
eval_triggers_eutra(
|
||||
m.first, report_cfg.report_cfg.report_cfg_eutra(), meas_obj.meas_obj.meas_obj_eutra(), serv_cell, Ofs, Ocs);
|
||||
} else if (meas_obj.meas_obj.type().value == meas_obj_to_add_mod_s::meas_obj_c_::types_opts::meas_obj_nr_r15 &&
|
||||
report_cfg.report_cfg.type().value ==
|
||||
report_cfg_to_add_mod_s::report_cfg_c_::types::report_cfg_inter_rat)
|
||||
eval_triggers_interrat_nr(
|
||||
m.first, report_cfg.report_cfg.report_cfg_inter_rat(), meas_obj.meas_obj.meas_obj_nr_r15());
|
||||
else {
|
||||
log_h->error("Unsupported combination of measurement object type %s and report config type %s \n",
|
||||
meas_obj.meas_obj.type().to_string().c_str(),
|
||||
report_cfg.report_cfg.type().to_string().c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -317,6 +317,20 @@ public:
|
|||
run_tti(1);
|
||||
}
|
||||
|
||||
#ifdef HAVE_5GNR
|
||||
void add_neighbour_cell_nr(uint32_t pci, uint32_t earfcn, float rsrp = 0)
|
||||
{
|
||||
std::vector<phy_meas_nr_t> phy_meas = {};
|
||||
phy_meas_nr_t meas = {};
|
||||
meas.pci_nr = pci;
|
||||
meas.arfcn_nr = earfcn;
|
||||
meas.rsrp = rsrp;
|
||||
phy_meas.push_back(meas); // neighbour cell
|
||||
new_cell_meas_nr(phy_meas);
|
||||
run_tti(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
using rrc::has_neighbour_cell;
|
||||
using rrc::is_serving_cell;
|
||||
using rrc::start_cell_select;
|
||||
|
@ -1171,6 +1185,8 @@ int meas_obj_inter_rat_nr_test()
|
|||
rep.report_cfg.report_cfg_inter_rat().trigger_type.set_event();
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.set_event_b1_nr_r15();
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.event_b1_nr_r15().b1_thres_nr_r15.set_nr_rsrp_r15();
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.event_b1_nr_r15().b1_thres_nr_r15.nr_rsrp_r15() =
|
||||
56;
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.event_b1_nr_r15().report_on_leave_r15 = true;
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().hysteresis = 0;
|
||||
rep.report_cfg.report_cfg_inter_rat().trigger_type.event().time_to_trigger = asn1::rrc::time_to_trigger_opts::options::ms100;
|
||||
|
@ -1195,6 +1211,20 @@ int meas_obj_inter_rat_nr_test()
|
|||
// Just test it doesn't crash
|
||||
TESTASSERT(rrctest.send_meas_cfg(rrc_conn_recfg));
|
||||
TESTASSERT(rrctest.phytest.meas_nof_freqs() == 0);
|
||||
|
||||
#ifdef HAVE_5GNR
|
||||
|
||||
rrctest.add_neighbour_cell(2, 300, 2.0);
|
||||
rrctest.set_serving_cell(2, 300);
|
||||
rrctest.add_neighbour_cell_nr(500, 631680, -60.0);
|
||||
int ttt_iters = 100 + 1; // 100 ms
|
||||
|
||||
for (int i = 0; i < ttt_iters; i++) {
|
||||
log1->info("Report %d/%d enter condition is true\n", i, ttt_iters);
|
||||
rrctest.add_neighbour_cell_nr(500, 631680, -60.0);
|
||||
}
|
||||
|
||||
#endif
|
||||
return SRSLTE_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue