|
|
@ -206,7 +206,8 @@ srslte::pdcp_config_t make_srb_pdcp_config_t(const uint8_t bearer_id, bool is_ue
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
PDCP_SN_LEN_5,
|
|
|
|
PDCP_SN_LEN_5,
|
|
|
|
pdcp_t_reordering_t::ms500,
|
|
|
|
pdcp_t_reordering_t::ms500,
|
|
|
|
pdcp_discard_timer_t::infinity);
|
|
|
|
pdcp_discard_timer_t::infinity,
|
|
|
|
|
|
|
|
false);
|
|
|
|
return cfg;
|
|
|
|
return cfg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -218,7 +219,8 @@ srslte::pdcp_config_t make_drb_pdcp_config_t(const uint8_t bearer_id, bool is_ue
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
PDCP_SN_LEN_12,
|
|
|
|
PDCP_SN_LEN_12,
|
|
|
|
pdcp_t_reordering_t::ms500,
|
|
|
|
pdcp_t_reordering_t::ms500,
|
|
|
|
pdcp_discard_timer_t::infinity);
|
|
|
|
pdcp_discard_timer_t::infinity,
|
|
|
|
|
|
|
|
false);
|
|
|
|
return cfg;
|
|
|
|
return cfg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -255,8 +257,9 @@ srslte::pdcp_config_t make_drb_pdcp_config_t(const uint8_t bearer_id, bool is_ue
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool status_report_required = false;
|
|
|
|
if (pdcp_cfg.rlc_am_present) {
|
|
|
|
if (pdcp_cfg.rlc_am_present) {
|
|
|
|
// TODO: handle RLC AM config for PDCP
|
|
|
|
status_report_required = pdcp_cfg.rlc_am.status_report_required;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
pdcp_config_t cfg(bearer_id,
|
|
|
|
pdcp_config_t cfg(bearer_id,
|
|
|
@ -265,7 +268,8 @@ srslte::pdcp_config_t make_drb_pdcp_config_t(const uint8_t bearer_id, bool is_ue
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
is_ue ? SECURITY_DIRECTION_DOWNLINK : SECURITY_DIRECTION_UPLINK,
|
|
|
|
sn_len,
|
|
|
|
sn_len,
|
|
|
|
t_reordering,
|
|
|
|
t_reordering,
|
|
|
|
discard_timer);
|
|
|
|
discard_timer,
|
|
|
|
|
|
|
|
status_report_required);
|
|
|
|
return cfg;
|
|
|
|
return cfg;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -310,7 +314,6 @@ void set_mac_cfg_t_main_cfg(mac_cfg_t* cfg, const asn1::rrc::mac_main_cfg_s& asn
|
|
|
|
// RACH-Common section is always present
|
|
|
|
// RACH-Common section is always present
|
|
|
|
void set_mac_cfg_t_rach_cfg_common(mac_cfg_t* cfg, const asn1::rrc::rach_cfg_common_s& asn1_type)
|
|
|
|
void set_mac_cfg_t_rach_cfg_common(mac_cfg_t* cfg, const asn1::rrc::rach_cfg_common_s& asn1_type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
// Preamble info
|
|
|
|
// Preamble info
|
|
|
|
cfg->rach_cfg.nof_preambles = asn1_type.preamb_info.nof_ra_preambs.to_number();
|
|
|
|
cfg->rach_cfg.nof_preambles = asn1_type.preamb_info.nof_ra_preambs.to_number();
|
|
|
|
if (asn1_type.preamb_info.preambs_group_a_cfg_present) {
|
|
|
|
if (asn1_type.preamb_info.preambs_group_a_cfg_present) {
|
|
|
@ -392,7 +395,6 @@ srsenb::sched_interface::ant_info_ded_t make_ant_info_ded(const asn1::rrc::ant_i
|
|
|
|
void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s& asn1_type)
|
|
|
|
void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s& asn1_type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (asn1_type.pucch_cfg_ded_present) {
|
|
|
|
if (asn1_type.pucch_cfg_ded_present) {
|
|
|
|
|
|
|
|
|
|
|
|
if (asn1_type.pucch_cfg_ded.tdd_ack_nack_feedback_mode_present) {
|
|
|
|
if (asn1_type.pucch_cfg_ded.tdd_ack_nack_feedback_mode_present) {
|
|
|
|
cfg->ul_cfg.pucch.tdd_ack_multiplex = asn1_type.pucch_cfg_ded.tdd_ack_nack_feedback_mode ==
|
|
|
|
cfg->ul_cfg.pucch.tdd_ack_multiplex = asn1_type.pucch_cfg_ded.tdd_ack_nack_feedback_mode ==
|
|
|
|
asn1::rrc::pucch_cfg_ded_s::tdd_ack_nack_feedback_mode_e_::mux;
|
|
|
|
asn1::rrc::pucch_cfg_ded_s::tdd_ack_nack_feedback_mode_e_::mux;
|
|
|
@ -405,7 +407,6 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
|
|
|
|
auto* pucch_cfg_ded = asn1_type.pucch_cfg_ded_v1020.get();
|
|
|
|
auto* pucch_cfg_ded = asn1_type.pucch_cfg_ded_v1020.get();
|
|
|
|
|
|
|
|
|
|
|
|
if (pucch_cfg_ded->pucch_format_r10_present) {
|
|
|
|
if (pucch_cfg_ded->pucch_format_r10_present) {
|
|
|
|
|
|
|
|
|
|
|
|
typedef asn1::rrc::pucch_cfg_ded_v1020_s::pucch_format_r10_c_ pucch_format_r10_t;
|
|
|
|
typedef asn1::rrc::pucch_cfg_ded_v1020_s::pucch_format_r10_c_ pucch_format_r10_t;
|
|
|
|
auto* pucch_format_r10 = &pucch_cfg_ded->pucch_format_r10;
|
|
|
|
auto* pucch_format_r10 = &pucch_cfg_ded->pucch_format_r10;
|
|
|
|
|
|
|
|
|
|
|
@ -425,7 +426,6 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (pucch_format_r10->type() == asn1::rrc::pucch_cfg_ded_v1020_s::pucch_format_r10_c_::types::ch_sel_r10) {
|
|
|
|
} else if (pucch_format_r10->type() == asn1::rrc::pucch_cfg_ded_v1020_s::pucch_format_r10_c_::types::ch_sel_r10) {
|
|
|
|
|
|
|
|
|
|
|
|
typedef pucch_format_r10_t::ch_sel_r10_s_ ch_sel_r10_t;
|
|
|
|
typedef pucch_format_r10_t::ch_sel_r10_s_ ch_sel_r10_t;
|
|
|
|
auto* ch_sel_r10 = &pucch_format_r10->ch_sel_r10();
|
|
|
|
auto* ch_sel_r10 = &pucch_format_r10->ch_sel_r10();
|
|
|
|
|
|
|
|
|
|
|
@ -484,9 +484,7 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (asn1_type.cqi_report_cfg_present) {
|
|
|
|
if (asn1_type.cqi_report_cfg_present) {
|
|
|
|
|
|
|
|
|
|
|
|
if (asn1_type.cqi_report_cfg.cqi_report_periodic_present) {
|
|
|
|
if (asn1_type.cqi_report_cfg.cqi_report_periodic_present) {
|
|
|
|
|
|
|
|
|
|
|
|
cfg->dl_cfg.cqi_report.periodic_configured =
|
|
|
|
cfg->dl_cfg.cqi_report.periodic_configured =
|
|
|
|
asn1_type.cqi_report_cfg.cqi_report_periodic.type() == asn1::rrc::setup_e::setup;
|
|
|
|
asn1_type.cqi_report_cfg.cqi_report_periodic.type() == asn1::rrc::setup_e::setup;
|
|
|
|
if (cfg->dl_cfg.cqi_report.periodic_configured) {
|
|
|
|
if (cfg->dl_cfg.cqi_report.periodic_configured) {
|
|
|
@ -514,7 +512,6 @@ void set_phy_cfg_t_dedicated_cfg(phy_cfg_t* cfg, const asn1::rrc::phys_cfg_ded_s
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (asn1_type.cqi_report_cfg.cqi_report_mode_aperiodic_present) {
|
|
|
|
if (asn1_type.cqi_report_cfg.cqi_report_mode_aperiodic_present) {
|
|
|
|
|
|
|
|
|
|
|
|
cfg->dl_cfg.cqi_report.aperiodic_configured = true;
|
|
|
|
cfg->dl_cfg.cqi_report.aperiodic_configured = true;
|
|
|
|
cfg->dl_cfg.cqi_report.aperiodic_mode = make_aperiodic_mode(asn1_type.cqi_report_cfg.cqi_report_mode_aperiodic);
|
|
|
|
cfg->dl_cfg.cqi_report.aperiodic_mode = make_aperiodic_mode(asn1_type.cqi_report_cfg.cqi_report_mode_aperiodic);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -668,7 +665,6 @@ void set_phy_cfg_t_common_pwr_ctrl(phy_cfg_t* cfg, const asn1::rrc::ul_pwr_ctrl_
|
|
|
|
void set_phy_cfg_t_scell_config(phy_cfg_t* cfg, const asn1::rrc::scell_to_add_mod_r10_s& asn1_type)
|
|
|
|
void set_phy_cfg_t_scell_config(phy_cfg_t* cfg, const asn1::rrc::scell_to_add_mod_r10_s& asn1_type)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (asn1_type.rr_cfg_common_scell_r10_present) {
|
|
|
|
if (asn1_type.rr_cfg_common_scell_r10_present) {
|
|
|
|
|
|
|
|
|
|
|
|
// Enable always CSI request extra bit
|
|
|
|
// Enable always CSI request extra bit
|
|
|
|
cfg->dl_cfg.dci.multiple_csi_request_enabled = true;
|
|
|
|
cfg->dl_cfg.dci.multiple_csi_request_enabled = true;
|
|
|
|
|
|
|
|
|
|
|
@ -713,7 +709,6 @@ void set_phy_cfg_t_scell_config(phy_cfg_t* cfg, const asn1::rrc::scell_to_add_mo
|
|
|
|
|
|
|
|
|
|
|
|
// Parse nonUL Configuration
|
|
|
|
// Parse nonUL Configuration
|
|
|
|
if (phys_cfg_ded_scell_r10->non_ul_cfg_r10_present) {
|
|
|
|
if (phys_cfg_ded_scell_r10->non_ul_cfg_r10_present) {
|
|
|
|
|
|
|
|
|
|
|
|
auto* non_ul_cfg = &phys_cfg_ded_scell_r10->non_ul_cfg_r10;
|
|
|
|
auto* non_ul_cfg = &phys_cfg_ded_scell_r10->non_ul_cfg_r10;
|
|
|
|
|
|
|
|
|
|
|
|
// Parse Transmission mode
|
|
|
|
// Parse Transmission mode
|
|
|
|