add Intra‑band Non-contiguous CA band combinations to UE caps

master
Piotr Gawlowicz 2 years ago committed by Piotr
parent 6bec41fcbe
commit 3178abf37b

@ -27,6 +27,8 @@ struct rrc_args_t {
std::array<uint8_t, SRSRAN_RRC_N_BANDS> supported_bands; std::array<uint8_t, SRSRAN_RRC_N_BANDS> supported_bands;
std::vector<uint32_t> supported_bands_nr; std::vector<uint32_t> supported_bands_nr;
uint32_t nof_supported_bands; uint32_t nof_supported_bands;
uint32_t nof_lte_carriers;
uint32_t nof_nr_carriers;
bool support_ca; bool support_ca;
int mbms_service_id; int mbms_service_id;
uint32_t mbms_service_port; uint32_t mbms_service_port;

@ -1992,8 +1992,11 @@ void rrc::handle_ue_capability_enquiry(const ue_cap_enquiry_s& enquiry)
phy_layer_params_v1020.multi_cluster_pusch_within_cc_r10_present = false; phy_layer_params_v1020.multi_cluster_pusch_within_cc_r10_present = false;
phy_layer_params_v1020.non_contiguous_ul_ra_within_cc_list_r10_present = false; phy_layer_params_v1020.non_contiguous_ul_ra_within_cc_list_r10_present = false;
rf_params_v1020_s rf_params;
band_combination_params_r10_l combination_params; band_combination_params_r10_l combination_params;
if (args.support_ca) { if (args.support_ca) {
// add Intraband Contiguous or Interband Non-contiguous CA band combination
// note that nof_supported_bands=1 when all cells are in the same but non-contiguous band
for (uint32_t k = 0; k < args.nof_supported_bands; k++) { for (uint32_t k = 0; k < args.nof_supported_bands; k++) {
ca_mimo_params_dl_r10_s ca_mimo_params_dl; ca_mimo_params_dl_r10_s ca_mimo_params_dl;
ca_mimo_params_dl.ca_bw_class_dl_r10 = ca_bw_class_r10_e::f; ca_mimo_params_dl.ca_bw_class_dl_r10 = ca_bw_class_r10_e::f;
@ -2013,10 +2016,35 @@ void rrc::handle_ue_capability_enquiry(const ue_cap_enquiry_s& enquiry)
combination_params.push_back(band_params); combination_params.push_back(band_params);
} }
} }
rf_params_v1020_s rf_params;
rf_params.supported_band_combination_r10.push_back(combination_params); rf_params.supported_band_combination_r10.push_back(combination_params);
// add all 2CC, 3CC and 4CC Intraband Non-contiguous CA band combinations
for (uint32_t k = 0; k < args.nof_supported_bands; k++) {
for (uint32_t j = 2; j <= args.nof_lte_carriers; j++) {
combination_params.clear();
ca_mimo_params_dl_r10_s ca_mimo_params_dl;
ca_mimo_params_dl.ca_bw_class_dl_r10 = ca_bw_class_r10_e::a;
ca_mimo_params_dl.supported_mimo_cap_dl_r10_present = false;
ca_mimo_params_ul_r10_s ca_mimo_params_ul;
ca_mimo_params_ul.ca_bw_class_ul_r10 = ca_bw_class_r10_e::a;
ca_mimo_params_ul.supported_mimo_cap_ul_r10_present = false;
band_params_r10_s band_params;
band_params.band_eutra_r10 = args.supported_bands[k];
band_params.band_params_dl_r10_present = true;
band_params.band_params_dl_r10.push_back(ca_mimo_params_dl);
band_params.band_params_ul_r10_present = true;
band_params.band_params_ul_r10.push_back(ca_mimo_params_ul);
for (uint32_t l = 0; l < j; l++) {
combination_params.push_back(band_params);
}
rf_params.supported_band_combination_r10.push_back(combination_params);
}
}
ue_eutra_cap_v1020_ies_s cap_v1020; ue_eutra_cap_v1020_ies_s cap_v1020;
if (args.ue_category >= 6 && args.ue_category <= 8) { if (args.ue_category >= 6 && args.ue_category <= 8) {
cap_v1020.ue_category_v1020_present = true; cap_v1020.ue_category_v1020_present = true;

@ -268,6 +268,8 @@ int ue::parse_args(const all_args_t& args_)
args.stack.rrc.ue_category = (uint32_t)strtoul(args.stack.rrc.ue_category_str.c_str(), nullptr, 10); args.stack.rrc.ue_category = (uint32_t)strtoul(args.stack.rrc.ue_category_str.c_str(), nullptr, 10);
// Consider Carrier Aggregation support if more than one // Consider Carrier Aggregation support if more than one
args.stack.rrc.nof_lte_carriers = args.phy.nof_lte_carriers;
args.stack.rrc.nof_nr_carriers = args.phy.nof_nr_carriers;
args.stack.rrc.support_ca = (args.phy.nof_lte_carriers > 1); args.stack.rrc.support_ca = (args.phy.nof_lte_carriers > 1);
// Make sure fix sampling rate is set for SA mode // Make sure fix sampling rate is set for SA mode

Loading…
Cancel
Save