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;
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
bool endc_supported = false;
rrc_endc_cfg_t endc_cfg = {};
@ -111,8 +116,8 @@ private:
private:
srslog::basic_logger& logger;
};
struct wait_add_complete_st {}; // user needs to complete RA procedure and send C-RNTI CE
struct endc_activated_st {}; // user has enabled EN-DC successfully and is currently served
struct wait_add_complete_st {}; // user needs to complete RA procedure and send C-RNTI CE
struct endc_activated_st {}; // user has enabled EN-DC successfully and is currently served
struct wait_sgnb_rel_req_resp_st {}; // release EN-DC
// FSM guards
@ -141,7 +146,7 @@ protected:
// transitions
using fsm = rrc_endc;
// clang-format off
using transitions = transition_table<
using transitions = transition_table<
// Start Target Event Action Guard
// +---------------------------+--------------------------+------------------------+------------------------------+-------------------------+
row< endc_deactivated_st, wait_sgnb_add_req_resp_st, sgnb_add_req_sent_ev, nullptr >,
@ -154,7 +159,7 @@ protected:
// +---------------------------+--------------------------+------------------------+------------------------------+-------------------------+
row< endc_activated_st, wait_sgnb_rel_req_resp_st, sgnb_rel_req_ev, &fsm::handle_sgnb_rel_req >,
row< wait_sgnb_rel_req_resp_st, endc_deactivated_st, sgnb_rel_req_ack_ev >
>;
// clang-format on
};

@ -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;
// 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.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();
auto& meas_obj_nr = meas_obj.meas_obj.meas_obj_nr_r15();
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
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.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();
@ -108,10 +114,14 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
// measIdToAddModList
meas_cfg.meas_id_to_add_mod_list_present = true;
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_obj_id = meas_obj.meas_obj_id;
meas_id.report_cfg_id = report_cfg.report_cfg_id;
// 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.meas_id = nr_meas_id;
meas_id.meas_obj_id = meas_obj.meas_obj_id;
meas_id.report_cfg_id = report_cfg.report_cfg_id;
meas_cfg.meas_id_to_add_mod_list.push_back(meas_id);
// quantityConfig
@ -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;
// 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.setup().gap_offset.set_gp0() = 16;
} 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
conn_recfg->rr_cfg_ded.drb_to_release_list_present = true;
conn_recfg->rr_cfg_ded.drb_to_release_list.resize(1);

Loading…
Cancel
Save