|
|
@ -64,8 +64,7 @@ void ue_cfg_apply_srb_updates(ue_cfg_t& ue_cfg, const srb_to_add_mod_list_l& srb
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg,
|
|
|
|
void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg,
|
|
|
|
const rrc_conn_recfg_r8_ies_s& conn_recfg,
|
|
|
|
const rrc_conn_recfg_r8_ies_s& conn_recfg,
|
|
|
|
const cell_ctxt_dedicated_list& ue_cell_list,
|
|
|
|
const cell_ctxt_dedicated_list& ue_cell_list);
|
|
|
|
const srslte::rrc_ue_capabilities_t& uecaps);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Adds to sched_interface::ue_cfg_t the changes present in the asn1 RRCReconfiguration message related to
|
|
|
|
* Adds to sched_interface::ue_cfg_t the changes present in the asn1 RRCReconfiguration message related to
|
|
|
@ -73,6 +72,8 @@ void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& u
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void ue_cfg_apply_phy_cfg_ded(ue_cfg_t& ue_cfg, const asn1::rrc::phys_cfg_ded_s& phy_cfg, const rrc_cfg_t& rrc_cfg);
|
|
|
|
void ue_cfg_apply_phy_cfg_ded(ue_cfg_t& ue_cfg, const asn1::rrc::phys_cfg_ded_s& phy_cfg, const rrc_cfg_t& rrc_cfg);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void ue_cfg_apply_capabilities(ue_cfg_t& ue_cfg, const rrc_cfg_t& rrc_cfg, const srslte::rrc_ue_capabilities_t& uecaps);
|
|
|
|
|
|
|
|
|
|
|
|
/***************************
|
|
|
|
/***************************
|
|
|
|
* MAC Controller class
|
|
|
|
* MAC Controller class
|
|
|
|
**************************/
|
|
|
|
**************************/
|
|
|
@ -201,7 +202,8 @@ void rrc::ue::mac_controller::handle_con_reconf(const asn1::rrc::rrc_conn_recfg_
|
|
|
|
|
|
|
|
|
|
|
|
// Store MAC updates that are applied once RRCReconfigurationComplete is received
|
|
|
|
// Store MAC updates that are applied once RRCReconfigurationComplete is received
|
|
|
|
next_sched_ue_cfg = current_sched_ue_cfg;
|
|
|
|
next_sched_ue_cfg = current_sched_ue_cfg;
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps);
|
|
|
|
ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps);
|
|
|
|
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list);
|
|
|
|
|
|
|
|
|
|
|
|
// Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message)
|
|
|
|
// Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message)
|
|
|
|
set_drb_activation(false);
|
|
|
|
set_drb_activation(false);
|
|
|
@ -248,7 +250,8 @@ void rrc::ue::mac_controller::handle_target_enb_ho_cmd(const asn1::rrc::rrc_conn
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
next_sched_ue_cfg = current_sched_ue_cfg;
|
|
|
|
next_sched_ue_cfg = current_sched_ue_cfg;
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps);
|
|
|
|
ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps);
|
|
|
|
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list);
|
|
|
|
|
|
|
|
|
|
|
|
// Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message)
|
|
|
|
// Temporarily freeze new allocations for DRBs (SRBs are needed to send RRC Reconf Message)
|
|
|
|
set_drb_activation(false);
|
|
|
|
set_drb_activation(false);
|
|
|
@ -269,7 +272,8 @@ void rrc::ue::mac_controller::handle_intraenb_ho_cmd(const asn1::rrc::rrc_conn_r
|
|
|
|
if (conn_recfg.rr_cfg_ded_present and conn_recfg.rr_cfg_ded.phys_cfg_ded_present) {
|
|
|
|
if (conn_recfg.rr_cfg_ded_present and conn_recfg.rr_cfg_ded.phys_cfg_ded_present) {
|
|
|
|
ue_cfg_apply_phy_cfg_ded(next_sched_ue_cfg, conn_recfg.rr_cfg_ded.phys_cfg_ded, *rrc_cfg);
|
|
|
|
ue_cfg_apply_phy_cfg_ded(next_sched_ue_cfg, conn_recfg.rr_cfg_ded.phys_cfg_ded, *rrc_cfg);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list, uecaps);
|
|
|
|
ue_cfg_apply_capabilities(next_sched_ue_cfg, *rrc_cfg, uecaps);
|
|
|
|
|
|
|
|
ue_cfg_apply_reconf_complete_updates(next_sched_ue_cfg, conn_recfg, rrc_ue->cell_ded_list);
|
|
|
|
|
|
|
|
|
|
|
|
// Freeze SCells
|
|
|
|
// Freeze SCells
|
|
|
|
// NOTE: this avoids that the UE receives an HOCmd retx from target cell and do an incorrect RLC-level concatenation
|
|
|
|
// NOTE: this avoids that the UE receives an HOCmd retx from target cell and do an incorrect RLC-level concatenation
|
|
|
@ -387,8 +391,7 @@ void ue_cfg_apply_srb_updates(ue_cfg_t& ue_cfg, const srb_to_add_mod_list_l& srb
|
|
|
|
|
|
|
|
|
|
|
|
void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg,
|
|
|
|
void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& ue_cfg,
|
|
|
|
const rrc_conn_recfg_r8_ies_s& conn_recfg,
|
|
|
|
const rrc_conn_recfg_r8_ies_s& conn_recfg,
|
|
|
|
const cell_ctxt_dedicated_list& ue_cell_list,
|
|
|
|
const cell_ctxt_dedicated_list& ue_cell_list)
|
|
|
|
const srslte::rrc_ue_capabilities_t& uecaps)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// Configure RadioResourceConfigDedicated
|
|
|
|
// Configure RadioResourceConfigDedicated
|
|
|
|
if (conn_recfg.rr_cfg_ded_present) {
|
|
|
|
if (conn_recfg.rr_cfg_ded_present) {
|
|
|
@ -453,11 +456,12 @@ void ue_cfg_apply_reconf_complete_updates(ue_cfg_t& u
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Params non-dependent on Reconf message content
|
|
|
|
void ue_cfg_apply_capabilities(ue_cfg_t& ue_cfg, const rrc_cfg_t& rrc_cfg, const srslte::rrc_ue_capabilities_t& uecaps)
|
|
|
|
if (uecaps.support_ul_64qam) {
|
|
|
|
{
|
|
|
|
ue_cfg.support_ul_64qam = true;
|
|
|
|
ue_cfg.support_ul_64qam =
|
|
|
|
}
|
|
|
|
uecaps.support_ul_64qam and rrc_cfg.sibs[1].sib2().rr_cfg_common.pusch_cfg_common.pusch_cfg_basic.enable64_qam;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace srsenb
|
|
|
|
} // namespace srsenb
|
|
|
|