Add cell group update without random access.

master
Fabian Eckermann 3 years ago committed by Andre Puschmann
parent cb6809c9b2
commit 4182a9f164

@ -213,10 +213,12 @@ private:
std::map<uint32_t, srsran_csi_rs_nzp_resource_t> csi_rs_nzp_res; std::map<uint32_t, srsran_csi_rs_nzp_resource_t> csi_rs_nzp_res;
bool apply_cell_group_cfg(const asn1::rrc_nr::cell_group_cfg_s& cell_group_cfg); bool apply_cell_group_cfg(const asn1::rrc_nr::cell_group_cfg_s& cell_group_cfg);
bool update_cell_group_cfg(const asn1::rrc_nr::cell_group_cfg_s& cell_group_cfg);
bool apply_radio_bearer_cfg(const asn1::rrc_nr::radio_bearer_cfg_s& radio_bearer_cfg); bool apply_radio_bearer_cfg(const asn1::rrc_nr::radio_bearer_cfg_s& radio_bearer_cfg);
bool apply_rlc_add_mod(const asn1::rrc_nr::rlc_bearer_cfg_s& rlc_bearer_cfg); bool apply_rlc_add_mod(const asn1::rrc_nr::rlc_bearer_cfg_s& rlc_bearer_cfg);
bool apply_mac_cell_group(const asn1::rrc_nr::mac_cell_group_cfg_s& mac_cell_group_cfg); bool apply_mac_cell_group(const asn1::rrc_nr::mac_cell_group_cfg_s& mac_cell_group_cfg);
bool apply_sp_cell_cfg(const asn1::rrc_nr::sp_cell_cfg_s& sp_cell_cfg); bool apply_sp_cell_cfg(const asn1::rrc_nr::sp_cell_cfg_s& sp_cell_cfg);
bool update_sp_cell_cfg(const asn1::rrc_nr::sp_cell_cfg_s& sp_cell_cfg);
bool apply_phy_cell_group_cfg(const asn1::rrc_nr::phys_cell_group_cfg_s& phys_cell_group_cfg); bool apply_phy_cell_group_cfg(const asn1::rrc_nr::phys_cell_group_cfg_s& phys_cell_group_cfg);
bool apply_dl_common_cfg(const asn1::rrc_nr::dl_cfg_common_s& dl_cfg_common); bool apply_dl_common_cfg(const asn1::rrc_nr::dl_cfg_common_s& dl_cfg_common);
bool apply_ul_common_cfg(const asn1::rrc_nr::ul_cfg_common_s& ul_cfg_common); bool apply_ul_common_cfg(const asn1::rrc_nr::ul_cfg_common_s& ul_cfg_common);

@ -1569,6 +1569,15 @@ bool rrc_nr::apply_sp_cell_ded_ul_pusch(const asn1::rrc_nr::pusch_cfg_s& pusch_c
}; };
bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg) bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg)
{
update_sp_cell_cfg(sp_cell_cfg);
phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL;
return true;
}
bool rrc_nr::update_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg)
{ {
srsran_csi_hl_cfg_t prev_csi = phy_cfg.csi; srsran_csi_hl_cfg_t prev_csi = phy_cfg.csi;
if (sp_cell_cfg.recfg_with_sync_present) { if (sp_cell_cfg.recfg_with_sync_present) {
@ -1621,7 +1630,7 @@ bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg)
} }
} }
} else { } else {
logger.warning("Reconfig with with sync not present"); logger.warning("Reconfig with sync not present");
} }
// Dedicated config // Dedicated config
@ -1740,8 +1749,6 @@ bool rrc_nr::apply_sp_cell_cfg(const sp_cell_cfg_s& sp_cell_cfg)
current_phycfg.csi = prev_csi; current_phycfg.csi = prev_csi;
phy->set_config(current_phycfg); phy->set_config(current_phycfg);
phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL;
return true; return true;
} }
@ -1758,6 +1765,15 @@ bool rrc_nr::apply_phy_cell_group_cfg(const phys_cell_group_cfg_s& phys_cell_gro
} }
bool rrc_nr::apply_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg) bool rrc_nr::apply_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg)
{
update_cell_group_cfg(cell_group_cfg);
phy_cfg_state = PHY_CFG_STATE_APPLY_SP_CELL;
return true;
}
bool rrc_nr::update_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg)
{ {
if (cell_group_cfg.rlc_bearer_to_add_mod_list_present) { if (cell_group_cfg.rlc_bearer_to_add_mod_list_present) {
for (uint32_t i = 0; i < cell_group_cfg.rlc_bearer_to_add_mod_list.size(); i++) { for (uint32_t i = 0; i < cell_group_cfg.rlc_bearer_to_add_mod_list.size(); i++) {
@ -1777,7 +1793,7 @@ bool rrc_nr::apply_cell_group_cfg(const cell_group_cfg_s& cell_group_cfg)
} }
} }
if (cell_group_cfg.sp_cell_cfg_present) { if (cell_group_cfg.sp_cell_cfg_present) {
if (apply_sp_cell_cfg(cell_group_cfg.sp_cell_cfg) == false) { if (update_sp_cell_cfg(cell_group_cfg.sp_cell_cfg) == false) {
return false; return false;
} }
} }

@ -34,11 +34,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator
Info("Starting..."); Info("Starting...");
initiator = initiator_; initiator = initiator_;
#if 0
asn1::json_writer js; asn1::json_writer js;
rrc_nr_reconf.to_json(js); rrc_nr_reconf.to_json(js);
Debug("RRC NR Reconfiguration: %s", js.to_string().c_str()); Debug("RRC NR Reconfiguration: %s", js.to_string().c_str());
#endif
if (rrc_nr_reconf.crit_exts.rrc_recfg().secondary_cell_group_present) { if (rrc_nr_reconf.crit_exts.rrc_recfg().secondary_cell_group_present) {
if (rrc_nr_reconf.crit_exts.type() != asn1::rrc_nr::rrc_recfg_s::crit_exts_c_::types::rrc_recfg) { if (rrc_nr_reconf.crit_exts.type() != asn1::rrc_nr::rrc_recfg_s::crit_exts_c_::types::rrc_recfg) {
@ -55,11 +53,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator
return proc_outcome_t::error; return proc_outcome_t::error;
} }
#if 0
asn1::json_writer js1; asn1::json_writer js1;
secondary_cell_group_cfg.to_json(js1); secondary_cell_group_cfg.to_json(js1);
Debug("Secondary Cell Group: %s", js1.to_string().c_str()); Debug("Secondary Cell Group: %s", js1.to_string().c_str());
#endif
Info("Applying Secondary Cell Group Cfg."); Info("Applying Secondary Cell Group Cfg.");
if (!rrc_handle.apply_cell_group_cfg(secondary_cell_group_cfg)) { if (!rrc_handle.apply_cell_group_cfg(secondary_cell_group_cfg)) {
@ -85,11 +81,9 @@ proc_outcome_t rrc_nr::connection_reconf_no_ho_proc::init(const reconf_initiator
return proc_outcome_t::error; return proc_outcome_t::error;
} }
#if 0
asn1::json_writer js2; asn1::json_writer js2;
master_cell_group_cfg.to_json(js2); master_cell_group_cfg.to_json(js2);
Debug("Master Cell Group: %s", js2.to_string().c_str()); Debug("Master Cell Group: %s", js2.to_string().c_str());
#endif
Info("Applying Master Cell Group Cfg."); Info("Applying Master Cell Group Cfg.");
if (!rrc_handle.apply_cell_group_cfg(master_cell_group_cfg)) { if (!rrc_handle.apply_cell_group_cfg(master_cell_group_cfg)) {
@ -168,7 +162,7 @@ void rrc_nr::connection_reconf_no_ho_proc::then(const srsran::proc_state_t& resu
*************************************/ *************************************/
rrc_nr::setup_request_proc::setup_request_proc(rrc_nr& parent_) : rrc_nr::setup_request_proc::setup_request_proc(rrc_nr& parent_) :
rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC")) rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC-NR"))
{} {}
proc_outcome_t rrc_nr::setup_request_proc::init(srsran::nr_establishment_cause_t cause_, proc_outcome_t rrc_nr::setup_request_proc::init(srsran::nr_establishment_cause_t cause_,
@ -293,7 +287,7 @@ srsran::proc_outcome_t rrc_nr::setup_request_proc::react(const cell_selection_pr
// Simple procedure mainly do defer the transmission of the SetupComplete until all PHY reconfiguration are done // Simple procedure mainly do defer the transmission of the SetupComplete until all PHY reconfiguration are done
rrc_nr::connection_setup_proc::connection_setup_proc(srsue::rrc_nr& parent_) : rrc_nr::connection_setup_proc::connection_setup_proc(srsue::rrc_nr& parent_) :
rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC")) rrc_handle(parent_), logger(srslog::fetch_basic_logger("RRC-NR"))
{} {}
srsran::proc_outcome_t rrc_nr::connection_setup_proc::init(const asn1::rrc_nr::radio_bearer_cfg_s radio_bearer_cfg_, srsran::proc_outcome_t rrc_nr::connection_setup_proc::init(const asn1::rrc_nr::radio_bearer_cfg_s radio_bearer_cfg_,
@ -315,7 +309,7 @@ srsran::proc_outcome_t rrc_nr::connection_setup_proc::init(const asn1::rrc_nr::r
} }
// Apply the Cell Group configuration // Apply the Cell Group configuration
if (!rrc_handle.apply_cell_group_cfg(cell_group_)) { if (!rrc_handle.update_cell_group_cfg(cell_group_)) {
return proc_outcome_t::error; return proc_outcome_t::error;
} }

Loading…
Cancel
Save