From a6c95ca2dab53a118156075b59bf3c657d088409 Mon Sep 17 00:00:00 2001 From: WEI-TAI CHEN Date: Sat, 4 Aug 2018 07:00:31 -0700 Subject: [PATCH] Define new structure for fill cellgroupconfig --- cmake_targets/CMakeLists.txt | 1 + openair2/RRC/NR/MESSAGES/asn1_msg.c | 15 +-- openair2/RRC/NR/nr_rrc_common.c | 141 +---------------------- openair2/RRC/NR/nr_rrc_config.c | 170 ++++++++++++++++++++++++++++ openair2/RRC/NR/nr_rrc_config.h | 130 +++++++++++++++++++++ openair2/RRC/NR/nr_rrc_proto.h | 7 -- openair2/RRC/NR/rrc_gNB.c | 61 ++++++---- 7 files changed, 350 insertions(+), 175 deletions(-) create mode 100644 openair2/RRC/NR/nr_rrc_config.c create mode 100644 openair2/RRC/NR/nr_rrc_config.h diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 15a919626d..e449875148 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -1399,6 +1399,7 @@ set(L2_SRC ${NR_RRC_DIR}/rrc_gNB.c ${NR_RRC_DIR}/nr_rrc_common.c ${NR_RRC_DIR}/L2_nr_interface.c + ${NR_RRC_DIR}/nr_rrc_config.c ) set(L2_SRC_UE diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c index 6e99f579c8..5038ecbd1a 100644 --- a/openair2/RRC/NR/MESSAGES/asn1_msg.c +++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c @@ -280,13 +280,13 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier, return((enc_rval.encoded+7)/8); } -void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id, - int CC_id, - #if defined(ENABLE_ITTI) - gNB_RrcConfigurationReq *configuration, - #endif - int initial_flag - ) +void fill_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id, + int CC_id, + #if defined(ENABLE_ITTI) + gNB_RrcConfigurationReq *configuration, + #endif + int initial_flag + ) { NR_ServingCellConfigCommon_t **servingcellconfigcommon = &RC.nrrrc[Mod_id]->carrier[CC_id].servingcellconfigcommon; NR_FreqBandIndicatorNR_t *dl_frequencyBandList; @@ -819,3 +819,4 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id, (*servingcellconfigcommon)->ss_PBCH_BlockPower = configuration->ServingCellConfigCommon_ss_PBCH_BlockPower[CC_id]; } + diff --git a/openair2/RRC/NR/nr_rrc_common.c b/openair2/RRC/NR/nr_rrc_common.c index c79dcd7816..e31e76b375 100644 --- a/openair2/RRC/NR/nr_rrc_common.c +++ b/openair2/RRC/NR/nr_rrc_common.c @@ -90,143 +90,4 @@ void rrc_config_nr_buffer(NR_SRB_INFO* Srb_info, Srb_info->Tx_buffer.payload_size = 0; } -//----------------------------------------------------------------------------- - -void rrc_config_servingcellconfigcommon(uint8_t Mod_id, - int CC_id - #if defined(ENABLE_ITTI) - ,gNB_RrcConfigurationReq *common_configuration - #endif - ){ - - common_configuration->MIB_subCarrierSpacingCommon[CC_id] = 0; - common_configuration->MIB_ssb_SubcarrierOffset[CC_id] = 0; - common_configuration->MIB_dmrs_TypeA_Position[CC_id] = 0; - common_configuration->pdcch_ConfigSIB1[CC_id] = 0; - common_configuration->absoluteFrequencySSB[CC_id] = 0; - common_configuration->DL_FreqBandIndicatorNR[CC_id] = 0; - common_configuration->DL_absoluteFrequencyPointA[CC_id] = 0; - common_configuration->DL_offsetToCarrier[CC_id] = 0; - common_configuration->DL_SCS_SubcarrierSpacing[CC_id] = 0; - common_configuration->DL_carrierBandwidth[CC_id] = 0; - common_configuration->DL_locationAndBandwidth[CC_id] = 0; - common_configuration->DL_BWP_SubcarrierSpacing[CC_id] = 0; - common_configuration->DL_BWP_prefix_type[CC_id] = 0; - common_configuration->UL_FreqBandIndicatorNR[CC_id] = 0; - common_configuration->UL_absoluteFrequencyPointA[CC_id] = 0; - common_configuration->UL_additionalSpectrumEmission[CC_id] = 0; - common_configuration->UL_p_Max[CC_id] = 0; - common_configuration->UL_frequencyShift7p5khz[CC_id] = 0; - common_configuration->UL_offsetToCarrier[CC_id] = 0; - common_configuration->UL_SCS_SubcarrierSpacing[CC_id] = 0; - common_configuration->UL_carrierBandwidth[CC_id] = 0; - common_configuration->UL_locationAndBandwidth[CC_id] = 0; - common_configuration->UL_BWP_SubcarrierSpacing[CC_id] = 0; - common_configuration->UL_BWP_prefix_type[CC_id] = 0; - common_configuration->UL_timeAlignmentTimerCommon[CC_id] = 0; - common_configuration->ServingCellConfigCommon_ssb_PositionsInBurst_PR[CC_id] = 0; - common_configuration->ServingCellConfigCommon_ssb_periodicityServingCell[CC_id] = 0; - common_configuration->ServingCellConfigCommon_dmrs_TypeA_Position[CC_id] = 0; - common_configuration->NIA_SubcarrierSpacing[CC_id] = 0; - common_configuration->ServingCellConfigCommon_ss_PBCH_BlockPower[CC_id] = 0; - common_configuration->referenceSubcarrierSpacing[CC_id] = 0; - common_configuration->dl_UL_TransmissionPeriodicity[CC_id] = 0; - common_configuration->nrofDownlinkSlots[CC_id] = 0; - common_configuration->nrofDownlinkSymbols[CC_id] = 0; - common_configuration->nrofUplinkSlots[CC_id] = 0; - common_configuration->nrofUplinkSymbols[CC_id] = 0; - common_configuration->rach_totalNumberOfRA_Preambles[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight[CC_id] = 0; - common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen[CC_id] = 0; - common_configuration->rach_groupBconfigured[CC_id] = 0; - common_configuration->rach_ra_Msg3SizeGroupA[CC_id] = 0; - common_configuration->rach_messagePowerOffsetGroupB[CC_id] = 0; - common_configuration->rach_numberOfRA_PreamblesGroupA[CC_id] = 0; - common_configuration->rach_ra_ContentionResolutionTimer[CC_id] = 0; - common_configuration->rsrp_ThresholdSSB[CC_id] = 0; - common_configuration->rsrp_ThresholdSSB_SUL[CC_id] = 0; - common_configuration->prach_RootSequenceIndex_choice[CC_id] = 0; - common_configuration->prach_RootSequenceIndex_l839[CC_id] = 0; - common_configuration->prach_RootSequenceIndex_l139[CC_id] = 0; - common_configuration->prach_msg1_SubcarrierSpacing[CC_id] = 0; - common_configuration->restrictedSetConfig[CC_id] = 0; - common_configuration->msg3_transformPrecoding[CC_id] = 0; - common_configuration->prach_ConfigurationIndex[CC_id] = 0; - common_configuration->prach_msg1_FDM[CC_id] = 0; - common_configuration->prach_msg1_FrequencyStart[CC_id] = 0; - common_configuration->zeroCorrelationZoneConfig[CC_id] = 0; - common_configuration->preambleReceivedTargetPower[CC_id] = 0; - common_configuration->preambleTransMax[CC_id] = 0; - common_configuration->powerRampingStep[CC_id] = 0; - common_configuration->ra_ResponseWindow[CC_id] = 0; - common_configuration->groupHoppingEnabledTransformPrecoding[CC_id] = 0; - common_configuration->msg3_DeltaPreamble[CC_id] = 0; - common_configuration->p0_NominalWithGrant[CC_id] = 0; - common_configuration->PUSCH_TimeDomainResourceAllocation_k2[CC_id] = 0; - common_configuration->PUSCH_TimeDomainResourceAllocation_mappingType[CC_id] = 0; - common_configuration->PUSCH_TimeDomainResourceAllocation_startSymbolAndLength[CC_id] = 0; - common_configuration->pucch_ResourceCommon[CC_id] = 0; - common_configuration->pucch_GroupHopping[CC_id] = 0; - common_configuration->hoppingId[CC_id] = 0; - common_configuration->p0_nominal[CC_id] = 0; - common_configuration->PDSCH_TimeDomainResourceAllocation_k0[CC_id] = 0; - common_configuration->PDSCH_TimeDomainResourceAllocation_mappingType[CC_id] = 0; - common_configuration->PDSCH_TimeDomainResourceAllocation_startSymbolAndLength[CC_id] = 0; - common_configuration->rateMatchPatternId[CC_id] = 0; - common_configuration->RateMatchPattern_patternType[CC_id] = 0; - common_configuration->symbolsInResourceBlock[CC_id] = 0; - common_configuration->periodicityAndPattern[CC_id] = 0; - common_configuration->RateMatchPattern_controlResourceSet[CC_id] = 0; - common_configuration->RateMatchPattern_subcarrierSpacing[CC_id] = 0; - common_configuration->RateMatchPattern_mode[CC_id] = 0; - common_configuration->controlResourceSetZero[CC_id] = 0; - common_configuration->searchSpaceZero[CC_id] = 0; - common_configuration->searchSpaceSIB1[CC_id] = 0; - common_configuration->searchSpaceOtherSystemInformation[CC_id] = 0; - common_configuration->pagingSearchSpace[CC_id] = 0; - common_configuration->ra_SearchSpace[CC_id] = 0; - common_configuration->PDCCH_common_controlResourceSetId[CC_id] = 0; - common_configuration->PDCCH_common_ControlResourceSet_duration[CC_id] = 0; - common_configuration->PDCCH_cce_REG_MappingType[CC_id] = 0; - common_configuration->PDCCH_reg_BundleSize[CC_id] = 0; - common_configuration->PDCCH_interleaverSize[CC_id] = 0; - common_configuration->PDCCH_shiftIndex[CC_id] = 0; - common_configuration->PDCCH_precoderGranularity[CC_id] = 0; - common_configuration->PDCCH_TCI_StateId[CC_id] = 0; - common_configuration->tci_PresentInDCI[CC_id] = 0; - common_configuration->PDCCH_DMRS_ScramblingID[CC_id] = 0; - common_configuration->SearchSpaceId[CC_id] = 0; - common_configuration->commonSearchSpaces_controlResourceSetId[CC_id] = 0; - common_configuration->SearchSpace_monitoringSlotPeriodicityAndOffset_choice[CC_id] = 0; - common_configuration->SearchSpace_monitoringSlotPeriodicityAndOffset_value[CC_id] = 0; - common_configuration->SearchSpace_duration[CC_id] = 0; - common_configuration->SearchSpace_nrofCandidates_aggregationLevel1[CC_id] = 0; - common_configuration->SearchSpace_nrofCandidates_aggregationLevel2[CC_id] = 0; - common_configuration->SearchSpace_nrofCandidates_aggregationLevel4[CC_id] = 0; - common_configuration->SearchSpace_nrofCandidates_aggregationLevel8[CC_id] = 0; - common_configuration->SearchSpace_nrofCandidates_aggregationLevel16[CC_id] = 0; - common_configuration->SearchSpace_searchSpaceType[CC_id] = 0; - common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1[CC_id] = 0; - common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2[CC_id] = 0; - common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4[CC_id] = 0; - common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8[CC_id] = 0; - common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16[CC_id] = 0; - common_configuration->Common_dci_Format2_3_monitoringPeriodicity[CC_id] = 0; - common_configuration->Common_dci_Format2_3_nrofPDCCH_Candidates[CC_id] = 0; - common_configuration->ue_Specific__dci_Formats[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_carrierFreqDL[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_carrierBandwidthDL[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_nrofCRS_Ports[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_v_Shift[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_radioframeAllocationPeriod[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_radioframeAllocationOffset[CC_id] = 0; - common_configuration->RateMatchPatternLTE_CRS_subframeAllocation_choice[CC_id] = 0; - -} \ No newline at end of file +//----------------------------------------------------------------------------- \ No newline at end of file diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c new file mode 100644 index 0000000000..ee5fce21ad --- /dev/null +++ b/openair2/RRC/NR/nr_rrc_config.c @@ -0,0 +1,170 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file nr_rrc_config.c + * \brief rrc config for gNB + * \author Raymond Knopp, WEI-TAI CHEN + * \date 2018 + * \version 1.0 + * \company Eurecom, NTUST + * \email: raymond.knopp@eurecom.fr, kroempa@gmail.com + */ + +#include "nr_rrc_config.h" + +void rrc_config_servingcellconfigcommon(uint8_t Mod_id, + int CC_id + #if defined(ENABLE_ITTI) + ,gNB_RrcConfigurationReq *common_configuration + #endif + ){ + + common_configuration->MIB_subCarrierSpacingCommon[CC_id] = 0; + common_configuration->MIB_ssb_SubcarrierOffset[CC_id] = 0; + common_configuration->MIB_dmrs_TypeA_Position[CC_id] = 0; + common_configuration->pdcch_ConfigSIB1[CC_id] = 0; + common_configuration->absoluteFrequencySSB[CC_id] = 0; + common_configuration->DL_FreqBandIndicatorNR[CC_id] = 0; + common_configuration->DL_absoluteFrequencyPointA[CC_id] = 0; + common_configuration->DL_offsetToCarrier[CC_id] = 0; + common_configuration->DL_SCS_SubcarrierSpacing[CC_id] = 0; + common_configuration->DL_carrierBandwidth[CC_id] = 0; + common_configuration->DL_locationAndBandwidth[CC_id] = 0; + common_configuration->DL_BWP_SubcarrierSpacing[CC_id] = 0; + common_configuration->DL_BWP_prefix_type[CC_id] = 0; + common_configuration->UL_FreqBandIndicatorNR[CC_id] = 0; + common_configuration->UL_absoluteFrequencyPointA[CC_id] = 0; + common_configuration->UL_additionalSpectrumEmission[CC_id] = 0; + common_configuration->UL_p_Max[CC_id] = 0; + common_configuration->UL_frequencyShift7p5khz[CC_id] = 0; + common_configuration->UL_offsetToCarrier[CC_id] = 0; + common_configuration->UL_SCS_SubcarrierSpacing[CC_id] = 0; + common_configuration->UL_carrierBandwidth[CC_id] = 0; + common_configuration->UL_locationAndBandwidth[CC_id] = 0; + common_configuration->UL_BWP_SubcarrierSpacing[CC_id] = 0; + common_configuration->UL_BWP_prefix_type[CC_id] = 0; + common_configuration->UL_timeAlignmentTimerCommon[CC_id] = 0; + common_configuration->ServingCellConfigCommon_ssb_PositionsInBurst_PR[CC_id] = 0; + common_configuration->ServingCellConfigCommon_ssb_periodicityServingCell[CC_id] = 0; + common_configuration->ServingCellConfigCommon_dmrs_TypeA_Position[CC_id] = 0; + common_configuration->NIA_SubcarrierSpacing[CC_id] = 0; + common_configuration->ServingCellConfigCommon_ss_PBCH_BlockPower[CC_id] = 0; + common_configuration->referenceSubcarrierSpacing[CC_id] = 0; + common_configuration->dl_UL_TransmissionPeriodicity[CC_id] = 0; + common_configuration->nrofDownlinkSlots[CC_id] = 0; + common_configuration->nrofDownlinkSymbols[CC_id] = 0; + common_configuration->nrofUplinkSlots[CC_id] = 0; + common_configuration->nrofUplinkSymbols[CC_id] = 0; + common_configuration->rach_totalNumberOfRA_Preambles[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneEighth[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneFourth[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_oneHalf[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_one[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_two[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_four[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_eight[CC_id] = 0; + common_configuration->rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_sixteen[CC_id] = 0; + common_configuration->rach_groupBconfigured[CC_id] = 0; + common_configuration->rach_ra_Msg3SizeGroupA[CC_id] = 0; + common_configuration->rach_messagePowerOffsetGroupB[CC_id] = 0; + common_configuration->rach_numberOfRA_PreamblesGroupA[CC_id] = 0; + common_configuration->rach_ra_ContentionResolutionTimer[CC_id] = 0; + common_configuration->rsrp_ThresholdSSB[CC_id] = 0; + common_configuration->rsrp_ThresholdSSB_SUL[CC_id] = 0; + common_configuration->prach_RootSequenceIndex_choice[CC_id] = 0; + common_configuration->prach_RootSequenceIndex_l839[CC_id] = 0; + common_configuration->prach_RootSequenceIndex_l139[CC_id] = 0; + common_configuration->prach_msg1_SubcarrierSpacing[CC_id] = 0; + common_configuration->restrictedSetConfig[CC_id] = 0; + common_configuration->msg3_transformPrecoding[CC_id] = 0; + common_configuration->prach_ConfigurationIndex[CC_id] = 0; + common_configuration->prach_msg1_FDM[CC_id] = 0; + common_configuration->prach_msg1_FrequencyStart[CC_id] = 0; + common_configuration->zeroCorrelationZoneConfig[CC_id] = 0; + common_configuration->preambleReceivedTargetPower[CC_id] = 0; + common_configuration->preambleTransMax[CC_id] = 0; + common_configuration->powerRampingStep[CC_id] = 0; + common_configuration->ra_ResponseWindow[CC_id] = 0; + common_configuration->groupHoppingEnabledTransformPrecoding[CC_id] = 0; + common_configuration->msg3_DeltaPreamble[CC_id] = 0; + common_configuration->p0_NominalWithGrant[CC_id] = 0; + common_configuration->PUSCH_TimeDomainResourceAllocation_k2[CC_id] = 0; + common_configuration->PUSCH_TimeDomainResourceAllocation_mappingType[CC_id] = 0; + common_configuration->PUSCH_TimeDomainResourceAllocation_startSymbolAndLength[CC_id] = 0; + common_configuration->pucch_ResourceCommon[CC_id] = 0; + common_configuration->pucch_GroupHopping[CC_id] = 0; + common_configuration->hoppingId[CC_id] = 0; + common_configuration->p0_nominal[CC_id] = 0; + common_configuration->PDSCH_TimeDomainResourceAllocation_k0[CC_id] = 0; + common_configuration->PDSCH_TimeDomainResourceAllocation_mappingType[CC_id] = 0; + common_configuration->PDSCH_TimeDomainResourceAllocation_startSymbolAndLength[CC_id] = 0; + common_configuration->rateMatchPatternId[CC_id] = 0; + common_configuration->RateMatchPattern_patternType[CC_id] = 0; + common_configuration->symbolsInResourceBlock[CC_id] = 0; + common_configuration->periodicityAndPattern[CC_id] = 0; + common_configuration->RateMatchPattern_controlResourceSet[CC_id] = 0; + common_configuration->RateMatchPattern_subcarrierSpacing[CC_id] = 0; + common_configuration->RateMatchPattern_mode[CC_id] = 0; + common_configuration->controlResourceSetZero[CC_id] = 0; + common_configuration->searchSpaceZero[CC_id] = 0; + common_configuration->searchSpaceSIB1[CC_id] = 0; + common_configuration->searchSpaceOtherSystemInformation[CC_id] = 0; + common_configuration->pagingSearchSpace[CC_id] = 0; + common_configuration->ra_SearchSpace[CC_id] = 0; + common_configuration->PDCCH_common_controlResourceSetId[CC_id] = 0; + common_configuration->PDCCH_common_ControlResourceSet_duration[CC_id] = 0; + common_configuration->PDCCH_cce_REG_MappingType[CC_id] = 0; + common_configuration->PDCCH_reg_BundleSize[CC_id] = 0; + common_configuration->PDCCH_interleaverSize[CC_id] = 0; + common_configuration->PDCCH_shiftIndex[CC_id] = 0; + common_configuration->PDCCH_precoderGranularity[CC_id] = 0; + common_configuration->PDCCH_TCI_StateId[CC_id] = 0; + common_configuration->tci_PresentInDCI[CC_id] = 0; + common_configuration->PDCCH_DMRS_ScramblingID[CC_id] = 0; + common_configuration->SearchSpaceId[CC_id] = 0; + common_configuration->commonSearchSpaces_controlResourceSetId[CC_id] = 0; + common_configuration->SearchSpace_monitoringSlotPeriodicityAndOffset_choice[CC_id] = 0; + common_configuration->SearchSpace_monitoringSlotPeriodicityAndOffset_value[CC_id] = 0; + common_configuration->SearchSpace_duration[CC_id] = 0; + common_configuration->SearchSpace_nrofCandidates_aggregationLevel1[CC_id] = 0; + common_configuration->SearchSpace_nrofCandidates_aggregationLevel2[CC_id] = 0; + common_configuration->SearchSpace_nrofCandidates_aggregationLevel4[CC_id] = 0; + common_configuration->SearchSpace_nrofCandidates_aggregationLevel8[CC_id] = 0; + common_configuration->SearchSpace_nrofCandidates_aggregationLevel16[CC_id] = 0; + common_configuration->SearchSpace_searchSpaceType[CC_id] = 0; + common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1[CC_id] = 0; + common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2[CC_id] = 0; + common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4[CC_id] = 0; + common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8[CC_id] = 0; + common_configuration->Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16[CC_id] = 0; + common_configuration->Common_dci_Format2_3_monitoringPeriodicity[CC_id] = 0; + common_configuration->Common_dci_Format2_3_nrofPDCCH_Candidates[CC_id] = 0; + common_configuration->ue_Specific__dci_Formats[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_carrierFreqDL[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_carrierBandwidthDL[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_nrofCRS_Ports[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_v_Shift[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_radioframeAllocationPeriod[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_radioframeAllocationOffset[CC_id] = 0; + common_configuration->RateMatchPatternLTE_CRS_subframeAllocation_choice[CC_id] = 0; +} + diff --git a/openair2/RRC/NR/nr_rrc_config.h b/openair2/RRC/NR/nr_rrc_config.h new file mode 100644 index 0000000000..a9c47c2acb --- /dev/null +++ b/openair2/RRC/NR/nr_rrc_config.h @@ -0,0 +1,130 @@ +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*! \file nr_rrc_config.c + * \brief rrc config for gNB + * \author Raymond Knopp, WEI-TAI CHEN + * \date 2018 + * \version 1.0 + * \company Eurecom, NTUST + * \email: raymond.knopp@eurecom.fr, kroempa@gmail.com + */ + +#include "nr_rrc_defs.h" + +typedef struct rlc_bearer_config_s{ + long LogicalChannelIdentity; + long servedRadioBearer_present; + long srb_Identity; + long drb_Identity; + long reestablishRLC; + long rlc_Config_present; + long ul_AM_sn_FieldLength; + long t_PollRetransmit; + long pollPDU; + long pollByte; + long maxRetxThreshold; + long dl_AM_sn_FieldLength; + long dl_AM_t_Reassembly; + long t_StatusProhibit; + long ul_UM_sn_FieldLength; + long dl_UM_sn_FieldLength; + long dl_UM_t_Reassembly; + long priority; + long prioritisedBitRate; + long bucketSizeDuration; + long allowedServingCells; + long subcarrierspacing; + long maxPUSCH_Duration; + long configuredGrantType1Allowed; + long logicalChannelGroup; + long schedulingRequestID; /* OPTIONAL */ + BOOLEAN_t logicalChannelSR_Mask; + BOOLEAN_t logicalChannelSR_DelayTimerApplied; +}rlc_bearer_config_t; + +typedef struct mac_cellgroup_s{ + long DRX_Config_PR; + long drx_onDurationTimer_PR; + long subMilliSeconds; + long milliSeconds; + long drx_InactivityTimer; + long drx_HARQ_RTT_TimerDL; + long drx_HARQ_RTT_TimerUL; + long drx_RetransmissionTimerDL; + long drx_RetransmissionTimerUL; + long drx_LongCycleStartOffset_PR; + long drx_LongCycleStartOffset; + long drx_ShortCycle; + long drx_ShortCycleTimer; + long drx_SlotOffset; + long schedulingRequestId; + long sr_ProhibitTimer; + long sr_TransMax; + long periodicBSR_Timer; + long retxBSR_Timer; + long logicalChannelSR_DelayTimer; + long tag_Id; + long timeAlignmentTimer; + long PHR_Config_PR; + long phr_PeriodicTimer; + long phr_ProhibitTimer; + long phr_Tx_PowerFactorChange; + BOOLEAN_t multiplePHR; + BOOLEAN_t phr_Type2SpCell; + BOOLEAN_t phr_Type2OtherCell; + long phr_ModeOtherCG; + BOOLEAN_t skipUplinkTxDynamic; +}mac_cellgroup_t; + +typedef struct physicalcellgroup_s{ + long harq_ACK_SpatialBundlingPUCCH; + long harq_ACK_SpatialBundlingPUSCH; + long p_NR; + long pdsch_HARQ_ACK_Codebook; + long tpc_SRS_RNTI; + long tpc_PUCCH_RNTI; + long tpc_PUSCH_RNTI; + long sp_CSI_RNTI; + long RNTI_Value; +}physicalcellgroup_t; + +void rrc_config_servingcellconfigcommon(uint8_t Mod_id, + int CC_id + #if defined(ENABLE_ITTI) + ,gNB_RrcConfigurationReq *common_configuration + #endif + ); + +void rrc_config_rlc_bearer(uint8_t Mod_id, + int CC_id, + rlc_bearer_config_t *rlc_config + ); + +void rrc_config_mac_cellgroup(uint8_t Mod_id, + int CC_id, + mac_cellgroup_t *mac_cellgroup_config + ); + +void rrc_config_physicalcellgroup(uint8_t Mod_id, + int CC_id, + physicalcellgroup_t *physicalcellgroup_config + ); diff --git a/openair2/RRC/NR/nr_rrc_proto.h b/openair2/RRC/NR/nr_rrc_proto.h index 5b0792c3e7..5d67fc7f52 100644 --- a/openair2/RRC/NR/nr_rrc_proto.h +++ b/openair2/RRC/NR/nr_rrc_proto.h @@ -58,13 +58,6 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( rrc_gNB_ue_context_t *const ue_context_pP ); -void rrc_config_servingcellconfigcommon(uint8_t Mod_id, - int CC_id - #if defined(ENABLE_ITTI) - ,gNB_RrcConfigurationReq *common_configuration - #endif - ); - #if defined(ENABLE_ITTI) /**\brief RRC eNB task. \param void *args_p Pointer on arguments to start the task. */ diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 510a409a78..f9de7cd3e8 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -42,7 +42,7 @@ #include "UTIL/LOG/log.h" #include "COMMON/mac_rrc_primitives.h" #include "RRC/NR/MESSAGES/asn1_msg.h" - +#include "nr_rrc_config.h" #include "NR_BCCH-BCH-Message.h" #include "NR_UL-DCCH-Message.h" @@ -143,42 +143,61 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge( const protocol_ctxt_t *const ctxt_pP, rrc_gNB_ue_context_t *const ue_context_pP ){ - + uint8_t size; uint8_t buffer[100]; int CC_id = ue_context_pP->ue_context.primaryCC_id; - /* - NR_CellGroupId_t cellGroupId; + OCTET_STRING_t *secondaryCellGroup; + NR_CellGroupConfig_t *cellGroupconfig; struct NR_CellGroupConfig__rlc_BearerToAddModList *rlc_BearerToAddModList; struct NR_MAC_CellGroupConfig *mac_CellGroupConfig; struct NR_PhysicalCellGroupConfig *physicalCellGroupConfig; struct NR_SpCellConfig *spCellConfig; struct NR_CellGroupConfig__sCellToAddModList *sCellToAddModList; - */ + + cellGroupconfig = CALLOC(1,sizeof(NR_CellGroupConfig_t)); + cellGroupconfig->rlc_BearerToAddModList = CALLOC(1,sizeof(struct NR_CellGroupConfig__rlc_BearerToAddModList)); + cellGroupconfig->mac_CellGroupConfig = CALLOC(1,sizeof(struct NR_MAC_CellGroupConfig)); + cellGroupconfig->physicalCellGroupConfig = CALLOC(1,sizeof(struct NR_PhysicalCellGroupConfig)); + cellGroupconfig->spCellConfig = CALLOC(1,sizeof(struct NR_SpCellConfig)); + cellGroupconfig->sCellToAddModList = CALLOC(1,sizeof(struct NR_CellGroupConfig__sCellToAddModList)); + + rlc_BearerToAddModList = cellGroupconfig->rlc_BearerToAddModList; + mac_CellGroupConfig = cellGroupconfig->mac_CellGroupConfig; + physicalCellGroupConfig = cellGroupconfig->physicalCellGroupConfig; + spCellConfig = cellGroupconfig->spCellConfig; + sCellToAddModList = cellGroupconfig->sCellToAddModList; + + //rrc_config_rlc_bearer(); + //rrc_config_mac_cellgroup(); + //rrc_config_physicalcellgroup(); + gNB_RrcConfigurationReq *common_configuration; common_configuration = CALLOC(1,sizeof(gNB_RrcConfigurationReq)); - //Fill config + //Fill servingcellconfigcommon config value rrc_config_servingcellconfigcommon(ctxt_pP->module_id, ue_context_pP->ue_context.primaryCC_id #if defined(ENABLE_ITTI) ,common_configuration #endif ); - //Fill config to structure - do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id, - ue_context_pP->ue_context.primaryCC_id, - #if defined(ENABLE_ITTI) - common_configuration, - #endif - 0 - ); + //Fill common config to structure + fill_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id, + ue_context_pP->ue_context.primaryCC_id, + #if defined(ENABLE_ITTI) + common_configuration, + #endif + 0 + ); /* memcpy( (*spCellConfig)->reconfigurationWithSync->spCellConfigCommon , RC.nrrrc[ctxt_pP->module_id]->carrier[0].servingcellconfigcommon, sizeof(struct NR_ServingCellConfigCommon)); */ + + } ///---------------------------------------------------------------------------------------------------------------/// @@ -217,13 +236,13 @@ static void init_NR_SI(const protocol_ctxt_t* const ctxt_pP, #endif ); - do_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id, - CC_id, - #if defined(ENABLE_ITTI) - configuration, - #endif - 1 - ); + fill_SERVINGCELLCONFIGCOMMON(ctxt_pP->module_id, + CC_id, + #if defined(ENABLE_ITTI) + configuration, + #endif + 1 + ); LOG_I(NR_RRC,"Done init_NR_SI\n");