|
|
@ -29,8 +29,12 @@ using namespace asn1::rrc;
|
|
|
|
* rrc_endc class
|
|
|
|
* rrc_endc class
|
|
|
|
************************************************************************************************/
|
|
|
|
************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
rrc::ue::rrc_endc::rrc_endc(rrc::ue* outer_ue) :
|
|
|
|
rrc::ue::rrc_endc::rrc_endc(rrc::ue* outer_ue, const rrc_endc_cfg_t& endc_cfg_) :
|
|
|
|
base_t(outer_ue->parent->logger), rrc_ue(outer_ue), rrc_enb(outer_ue->parent), logger(outer_ue->parent->logger)
|
|
|
|
base_t(outer_ue->parent->logger),
|
|
|
|
|
|
|
|
rrc_ue(outer_ue),
|
|
|
|
|
|
|
|
rrc_enb(outer_ue->parent),
|
|
|
|
|
|
|
|
logger(outer_ue->parent->logger),
|
|
|
|
|
|
|
|
endc_cfg(endc_cfg_)
|
|
|
|
{}
|
|
|
|
{}
|
|
|
|
|
|
|
|
|
|
|
|
//! Method to add NR fields to a RRC Connection Reconfiguration Message
|
|
|
|
//! Method to add NR fields to a RRC Connection Reconfiguration Message
|
|
|
@ -41,7 +45,7 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (not is_endc_activation_running()) {
|
|
|
|
if (not is_endc_activation_running() && endc_cfg.act_from_b1_event) {
|
|
|
|
// add hard-coded measConfig
|
|
|
|
// add hard-coded measConfig
|
|
|
|
conn_recfg->meas_cfg_present = true;
|
|
|
|
conn_recfg->meas_cfg_present = true;
|
|
|
|
meas_cfg_s& meas_cfg = conn_recfg->meas_cfg;
|
|
|
|
meas_cfg_s& meas_cfg = conn_recfg->meas_cfg;
|
|
|
@ -50,26 +54,16 @@ bool rrc::ue::rrc_endc::fill_conn_recfg(asn1::rrc::rrc_conn_recfg_r8_ies_s* conn
|
|
|
|
|
|
|
|
|
|
|
|
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 = meas_cfg.meas_obj_to_add_mod_list.size() + 1;
|
|
|
|
meas_obj.meas_obj.set_meas_obj_eutra();
|
|
|
|
meas_obj.meas_obj.set_meas_obj_nr_r15();
|
|
|
|
meas_obj.meas_obj.meas_obj_eutra().carrier_freq = 300;
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().carrier_freq_r15 = endc_cfg.nr_dl_arfcn;
|
|
|
|
meas_obj.meas_obj.meas_obj_eutra().allowed_meas_bw = allowed_meas_bw_opts::mbw50;
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.meas_timing_cfg_r15.periodicity_and_offset_r15.set_sf20_r15();
|
|
|
|
meas_obj.meas_obj.meas_obj_eutra().presence_ant_port1 = false;
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.meas_timing_cfg_r15.ssb_dur_r15 =
|
|
|
|
meas_obj.meas_obj.meas_obj_eutra().neigh_cell_cfg.from_number(0b01);
|
|
|
|
|
|
|
|
meas_cfg.meas_obj_to_add_mod_list.push_back(meas_obj);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
meas_obj_to_add_mod_s meas_obj2 = {};
|
|
|
|
|
|
|
|
meas_obj2.meas_obj_id = meas_cfg.meas_obj_to_add_mod_list.size() + 1;
|
|
|
|
|
|
|
|
meas_obj2.meas_obj.set_meas_obj_nr_r15();
|
|
|
|
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().carrier_freq_r15 = 634176;
|
|
|
|
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.meas_timing_cfg_r15.periodicity_and_offset_r15.set_sf20_r15();
|
|
|
|
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.meas_timing_cfg_r15.ssb_dur_r15 =
|
|
|
|
|
|
|
|
asn1::rrc::mtc_ssb_nr_r15_s::ssb_dur_r15_opts::sf1;
|
|
|
|
asn1::rrc::mtc_ssb_nr_r15_s::ssb_dur_r15_opts::sf1;
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.subcarrier_spacing_ssb_r15 =
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().rs_cfg_ssb_r15.subcarrier_spacing_ssb_r15 = endc_cfg.ssb_ssc;
|
|
|
|
asn1::rrc::rs_cfg_ssb_nr_r15_s::subcarrier_spacing_ssb_r15_opts::khz30;
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().ext = true;
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().ext = true;
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().band_nr_r15.set_present(true);
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().band_nr_r15.set_present(true);
|
|
|
|
meas_obj.meas_obj.meas_obj_nr_r15().band_nr_r15.get()->set_setup() = endc_cfg.nr_band;
|
|
|
|
meas_obj2.meas_obj.meas_obj_nr_r15().band_nr_r15.get()->set_setup() = 78;
|
|
|
|
meas_cfg.meas_obj_to_add_mod_list.push_back(meas_obj);
|
|
|
|
meas_cfg.meas_obj_to_add_mod_list.push_back(meas_obj2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// report config
|
|
|
|
// report config
|
|
|
|
meas_cfg.report_cfg_to_add_mod_list_present = true;
|
|
|
|
meas_cfg.report_cfg_to_add_mod_list_present = true;
|
|
|
@ -105,8 +99,8 @@ 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;
|
|
|
|
meas_id_to_add_mod_s meas_id = {};
|
|
|
|
meas_id_to_add_mod_s meas_id = {};
|
|
|
|
meas_id.meas_id = meas_obj.meas_obj_id;
|
|
|
|
meas_id.meas_id = meas_cfg.meas_id_to_add_mod_list.size() + 1;
|
|
|
|
meas_id.meas_obj_id = meas_obj2.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);
|
|
|
|
|
|
|
|
|
|
|
|