diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c index d3c86d62a0..791c46f14d 100755 --- a/openair2/RRC/NR/MESSAGES/asn1_msg.c +++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c @@ -1746,6 +1746,18 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, NR_ServingCellConfigCommon_t *scc = carrier->servingcellconfigcommon; + // Config CSI-RS + NR_CSI_MeasConfig_t *csi_MeasConfig; + if(!SpCellConfig->spCellConfigDedicated->csi_MeasConfig) { + csi_MeasConfig = calloc(1,sizeof(*csi_MeasConfig)); + SpCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup = csi_MeasConfig; + } + else + csi_MeasConfig = SpCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup; + + int curr_bwp = NRRIV2BW(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth,MAX_BWP_SIZE); + config_csirs(scc, csi_MeasConfig, uid, carrier->pdsch_AntennaPorts, curr_bwp, carrier->do_CSIRS); + // Set DL MCS table NR_BWP_DownlinkDedicated_t *bwp_Dedicated = SpCellConfig->spCellConfigDedicated->initialDownlinkBWP; set_dl_mcs_table(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing, @@ -1758,14 +1770,9 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig, set_dl_mcs_table(scs, uecap, bwp->bwp_Dedicated, carrier->servingcellconfigcommon); } } - - // Config CSI-RS - NR_CSI_MeasConfig_t *csi_MeasConfig = calloc(1,sizeof(*csi_MeasConfig)); - SpCellConfig->spCellConfigDedicated->csi_MeasConfig->choice.setup = csi_MeasConfig; - int curr_bwp = NRRIV2BW(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth,MAX_BWP_SIZE); - config_csirs(scc, csi_MeasConfig, uid, carrier->pdsch_AntennaPorts, curr_bwp, carrier->do_CSIRS); } + void fill_initial_cellGroupConfig(int uid, NR_CellGroupConfig_t *cellGroupConfig, NR_ServingCellConfigCommon_t *scc, diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c index fe18fc2607..2dd47a80f8 100644 --- a/openair2/RRC/NR/nr_rrc_config.c +++ b/openair2/RRC/NR/nr_rrc_config.c @@ -34,50 +34,6 @@ const uint8_t slotsperframe[5] = {10, 20, 40, 80, 160}; -void prepare_sim_uecap(NR_UE_NR_Capability_t *cap, - NR_ServingCellConfigCommon_t *scc, - int numerology, - int rbsize, - int mcs_table) { - - int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; - NR_BandNR_t *nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t)); - nr_bandnr->bandNR = band; - ASN_SEQUENCE_ADD(&cap->rf_Parameters.supportedBandListNR.list, - nr_bandnr); - if (mcs_table == 1) { - int bw = get_supported_band_index(numerology, band, rbsize); - if (band>256) { - NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[0]; - bandNRinfo->pdsch_256QAM_FR2 = CALLOC(1,sizeof(*bandNRinfo->pdsch_256QAM_FR2)); - *bandNRinfo->pdsch_256QAM_FR2 = NR_BandNR__pdsch_256QAM_FR2_supported; - } - else{ - cap->phy_Parameters.phy_ParametersFR1 = CALLOC(1,sizeof(*cap->phy_Parameters.phy_ParametersFR1)); - NR_Phy_ParametersFR1_t *phy_fr1 = cap->phy_Parameters.phy_ParametersFR1; - phy_fr1->pdsch_256QAM_FR1 = CALLOC(1,sizeof(*phy_fr1->pdsch_256QAM_FR1)); - *phy_fr1->pdsch_256QAM_FR1 = NR_Phy_ParametersFR1__pdsch_256QAM_FR1_supported; - } - cap->featureSets = CALLOC(1,sizeof(*cap->featureSets)); - NR_FeatureSets_t *fs=cap->featureSets; - fs->featureSetsDownlinkPerCC = CALLOC(1,sizeof(*fs->featureSetsDownlinkPerCC)); - NR_FeatureSetDownlinkPerCC_t *fs_cc = CALLOC(1,sizeof(NR_FeatureSetDownlinkPerCC_t)); - fs_cc->supportedSubcarrierSpacingDL = numerology; - if(band>256) { - fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr2; - fs_cc->supportedBandwidthDL.choice.fr2 = bw; - } - else{ - fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr1; - fs_cc->supportedBandwidthDL.choice.fr1 = bw; - } - fs_cc->supportedModulationOrderDL = CALLOC(1,sizeof(*fs_cc->supportedModulationOrderDL)); - *fs_cc->supportedModulationOrderDL = NR_ModulationOrder_qam256; - ASN_SEQUENCE_ADD(&fs->featureSetsDownlinkPerCC->list, - fs_cc); - } -} - void set_csirs_periodicity(NR_NZP_CSI_RS_Resource_t *nzpcsi0, int uid, int nb_slots_per_period) { nzpcsi0->periodicityAndOffset = calloc(1,sizeof(*nzpcsi0->periodicityAndOffset)); @@ -214,6 +170,49 @@ void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon, csi_MeasConfig->nzp_CSI_RS_ResourceToReleaseList = NULL; } +void prepare_sim_uecap(NR_UE_NR_Capability_t *cap, + NR_ServingCellConfigCommon_t *scc, + int numerology, + int rbsize, + int mcs_table) { + + int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; + NR_BandNR_t *nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t)); + nr_bandnr->bandNR = band; + ASN_SEQUENCE_ADD(&cap->rf_Parameters.supportedBandListNR.list, + nr_bandnr); + if (mcs_table == 1) { + int bw = get_supported_band_index(numerology, band, rbsize); + if (band>256) { + NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[0]; + bandNRinfo->pdsch_256QAM_FR2 = CALLOC(1,sizeof(*bandNRinfo->pdsch_256QAM_FR2)); + *bandNRinfo->pdsch_256QAM_FR2 = NR_BandNR__pdsch_256QAM_FR2_supported; + } + else{ + cap->phy_Parameters.phy_ParametersFR1 = CALLOC(1,sizeof(*cap->phy_Parameters.phy_ParametersFR1)); + NR_Phy_ParametersFR1_t *phy_fr1 = cap->phy_Parameters.phy_ParametersFR1; + phy_fr1->pdsch_256QAM_FR1 = CALLOC(1,sizeof(*phy_fr1->pdsch_256QAM_FR1)); + *phy_fr1->pdsch_256QAM_FR1 = NR_Phy_ParametersFR1__pdsch_256QAM_FR1_supported; + } + cap->featureSets = CALLOC(1,sizeof(*cap->featureSets)); + NR_FeatureSets_t *fs=cap->featureSets; + fs->featureSetsDownlinkPerCC = CALLOC(1,sizeof(*fs->featureSetsDownlinkPerCC)); + NR_FeatureSetDownlinkPerCC_t *fs_cc = CALLOC(1,sizeof(NR_FeatureSetDownlinkPerCC_t)); + fs_cc->supportedSubcarrierSpacingDL = numerology; + if(band>256) { + fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr2; + fs_cc->supportedBandwidthDL.choice.fr2 = bw; + } + else{ + fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr1; + fs_cc->supportedBandwidthDL.choice.fr1 = bw; + } + fs_cc->supportedModulationOrderDL = CALLOC(1,sizeof(*fs_cc->supportedModulationOrderDL)); + *fs_cc->supportedModulationOrderDL = NR_ModulationOrder_qam256; + ASN_SEQUENCE_ADD(&fs->featureSetsDownlinkPerCC->list, fs_cc); + } +} + void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc){ lte_frame_type_t frame_type = get_frame_type(*scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0], *scc->ssbSubcarrierSpacing); diff --git a/openair2/RRC/NR/nr_rrc_config.h b/openair2/RRC/NR/nr_rrc_config.h index b9c545aa65..7a0fe892fd 100644 --- a/openair2/RRC/NR/nr_rrc_config.h +++ b/openair2/RRC/NR/nr_rrc_config.h @@ -113,6 +113,12 @@ typedef struct physicalcellgroup_s{ void nr_rrc_config_dl_tda(NR_ServingCellConfigCommon_t *scc); void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay); +void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon, + NR_CSI_MeasConfig_t *csi_MeasConfig, + int uid, + int num_dl_antenna_ports, + int curr_bwp, + int do_csirs); void set_dl_mcs_table(int scs, NR_UE_NR_Capability_t *cap, NR_BWP_DownlinkDedicated_t *bwp_Dedicated, NR_ServingCellConfigCommon_t *scc); @@ -121,12 +127,6 @@ void prepare_sim_uecap(NR_UE_NR_Capability_t *cap, int numerology, int rbsize, int mcs_table); -void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon, - NR_CSI_MeasConfig_t *csi_MeasConfig, - int uid, - int num_dl_antenna_ports, - int curr_bwp, - int do_csirs); #endif