Disable measGapConfig in first reconfig. Remove all measurement reports for nr in the 2nd reconfig.

master
Fabian Eckermann 3 years ago committed by Andre Puschmann
parent 08c96b0e35
commit 9cbd2727f5

@ -85,6 +85,11 @@ private:
rrc* rrc_enb = nullptr; rrc* rrc_enb = nullptr;
srslog::basic_logger& logger; srslog::basic_logger& logger;
// nr ids to deactivate in second reconfig
uint32_t nr_meas_obj_id = 0;
uint32_t nr_report_cfg_id = 0;
uint32_t nr_meas_id = 0;
// vars // vars
bool endc_supported = false; bool endc_supported = false;
rrc_endc_cfg_t endc_cfg = {}; rrc_endc_cfg_t endc_cfg = {};

@ -62,8 +62,11 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
meas_cfg.meas_obj_to_add_mod_list_present = true; meas_cfg.meas_obj_to_add_mod_list_present = true;
// store id of nr meas object to remove it in second reconfiguration message
nr_meas_obj_id = meas_cfg.meas_obj_to_add_mod_list.size() + 1;
meas_obj_to_add_mod_s meas_obj = {}; meas_obj_to_add_mod_s meas_obj = {};
meas_obj.meas_obj_id = meas_cfg.meas_obj_to_add_mod_list.size() + 1; meas_obj.meas_obj_id = nr_meas_obj_id;
meas_obj.meas_obj.set_meas_obj_nr_r15(); meas_obj.meas_obj.set_meas_obj_nr_r15();
auto& meas_obj_nr = meas_obj.meas_obj.meas_obj_nr_r15(); auto& meas_obj_nr = meas_obj.meas_obj.meas_obj_nr_r15();
meas_obj_nr.carrier_freq_r15 = endc_cfg.abs_frequency_ssb; meas_obj_nr.carrier_freq_r15 = endc_cfg.abs_frequency_ssb;
@ -77,9 +80,12 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
// report config // report config
meas_cfg.report_cfg_to_add_mod_list_present = true; meas_cfg.report_cfg_to_add_mod_list_present = true;
report_cfg_to_add_mod_s report_cfg = {};
report_cfg.report_cfg_id = meas_cfg.report_cfg_to_add_mod_list.size() + 1; // store id of nr report config to remove it in second reconfiguration message
nr_report_cfg_id = meas_cfg.report_cfg_to_add_mod_list.size() + 1;
report_cfg_to_add_mod_s report_cfg = {};
report_cfg.report_cfg_id = nr_report_cfg_id;
report_cfg.report_cfg.set_report_cfg_inter_rat(); report_cfg.report_cfg.set_report_cfg_inter_rat();
report_cfg.report_cfg.report_cfg_inter_rat().trigger_type.set_event(); report_cfg.report_cfg.report_cfg_inter_rat().trigger_type.set_event();
report_cfg.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.set_event_b1_nr_r15(); report_cfg.report_cfg.report_cfg_inter_rat().trigger_type.event().event_id.set_event_b1_nr_r15();
@ -108,8 +114,12 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
// measIdToAddModList // measIdToAddModList
meas_cfg.meas_id_to_add_mod_list_present = true; meas_cfg.meas_id_to_add_mod_list_present = true;
// store id of nr meas to remove it in second reconfiguration message
nr_meas_id = meas_cfg.meas_id_to_add_mod_list.size() + 1;
meas_id_to_add_mod_s meas_id = {}; meas_id_to_add_mod_s meas_id = {};
meas_id.meas_id = meas_cfg.meas_id_to_add_mod_list.size() + 1; meas_id.meas_id = nr_meas_id;
meas_id.meas_obj_id = meas_obj.meas_obj_id; meas_id.meas_obj_id = meas_obj.meas_obj_id;
meas_id.report_cfg_id = report_cfg.report_cfg_id; meas_id.report_cfg_id = report_cfg.report_cfg_id;
meas_cfg.meas_id_to_add_mod_list.push_back(meas_id); meas_cfg.meas_id_to_add_mod_list.push_back(meas_id);
@ -125,10 +135,26 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
meas_quant[0].meas_quant_cell_nr_r15.filt_coeff_rsrp_r15 = filt_coef_opts::fc3; meas_quant[0].meas_quant_cell_nr_r15.filt_coeff_rsrp_r15 = filt_coef_opts::fc3;
// measGapConfig // measGapConfig
meas_cfg.meas_gap_cfg_present = true; meas_cfg.meas_gap_cfg_present = false; // No LTE measGaps allowed while in NSA mode
meas_cfg.meas_gap_cfg.set_setup(); meas_cfg.meas_gap_cfg.set_setup();
meas_cfg.meas_gap_cfg.setup().gap_offset.set_gp0() = 16; meas_cfg.meas_gap_cfg.setup().gap_offset.set_gp0() = 16;
} else if (is_in_state<prepare_recfg_st>()) { } else if (is_in_state<prepare_recfg_st>()) {
// Deactivate measurement reports, as we do not support measurements after NR activation
conn_recfg->meas_cfg_present = true;
meas_cfg_s& meas_cfg = conn_recfg->meas_cfg;
// Remove meas config
meas_cfg.meas_obj_to_rem_list_present = true;
meas_cfg.meas_obj_to_rem_list.resize(1);
meas_cfg.meas_obj_to_rem_list[0] = nr_meas_obj_id;
// remove report config
meas_cfg.report_cfg_to_rem_list_present = true;
meas_cfg.report_cfg_to_rem_list.resize(1);
meas_cfg.report_cfg_to_rem_list[0] = nr_report_cfg_id;
// remove meas id
meas_cfg.meas_id_to_rem_list_present = true;
meas_cfg.meas_id_to_rem_list.resize(1);
meas_cfg.meas_id_to_rem_list[0] = nr_meas_id;
// FIXME: use bearer manager to remove EUTRA DRB // FIXME: use bearer manager to remove EUTRA DRB
conn_recfg->rr_cfg_ded.drb_to_release_list_present = true; conn_recfg->rr_cfg_ded.drb_to_release_list_present = true;
conn_recfg->rr_cfg_ded.drb_to_release_list.resize(1); conn_recfg->rr_cfg_ded.drb_to_release_list.resize(1);

Loading…
Cancel
Save