Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG-RAN
Commits
037e37ea
Commit
037e37ea
authored
Aug 03, 2018
by
WEI-TAI CHEN
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
do_SERVINGCELLCONFIGCOMMON will be reuse for fill common config
parent
02a602fa
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
382 additions
and
187 deletions
+382
-187
openair2/COMMON/rrc_messages_types.h
openair2/COMMON/rrc_messages_types.h
+0
-1
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+182
-173
openair2/RRC/NR/MESSAGES/asn1_msg.h
openair2/RRC/NR/MESSAGES/asn1_msg.h
+3
-2
openair2/RRC/NR/nr_rrc_common.c
openair2/RRC/NR/nr_rrc_common.c
+143
-9
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+10
-0
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+7
-0
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+37
-2
No files found.
openair2/COMMON/rrc_messages_types.h
View file @
037e37ea
...
...
@@ -405,7 +405,6 @@ typedef struct NRRrcConfigurationReq_s {
long
PDCCH_TCI_StateId
[
MAX_NUM_CCs
];
BOOLEAN_t
tci_PresentInDCI
[
MAX_NUM_CCs
];
uint32_t
PDCCH_DMRS_ScramblingID
[
MAX_NUM_CCs
];
uint8_t
frequencyDomainResources_buf
[
6
];
//NR PDCCH-ConfigCommon commonSearchSpaces
long
SearchSpaceId
[
MAX_NUM_CCs
];
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
037e37ea
...
...
@@ -281,48 +281,168 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
}
void
do_SERVINGCELLCONFIGCOMMON
(
uint8_t
Mod_id
,
int
CC_id
#if defined(ENABLE_ITTI)
,
gNB_RrcConfigurationReq
*
configuration
#endif
)
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
;
(
*
servingcellconfigcommon
)
=
CALLOC
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
physCellId
=
CALLOC
(
1
,
sizeof
(
NR_PhysCellId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_DownlinkConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
=
CALLOC
(
1
,
sizeof
(
struct
NR_FrequencyInfoDL
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
=
CALLOC
(
1
,
sizeof
(
struct
NR_BWP_DownlinkCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_UplinkConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
=
CALLOC
(
1
,
sizeof
(
struct
NR_FrequencyInfoUL
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
=
CALLOC
(
1
,
sizeof
(
struct
NR_BWP_UplinkCommon
));
//(*servingcellconfigcommon)->supplementaryUplinkConfig = CALLOC(1,sizeof(struct NR_UplinkConfigCommon));
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__ssb_PositionsInBurst
));
(
*
servingcellconfigcommon
)
->
ssb_periodicityServingCell
=
CALLOC
(
1
,
sizeof
(
long
));
//(*servingcellconfigcommon)->lte_CRS_ToMatchAround = CALLOC(1,sizeof(struct NR_SetupRelease_RateMatchPatternLTE_CRS));
(
*
servingcellconfigcommon
)
->
rateMatchPatternToAddModList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__rateMatchPatternToAddModList
));
(
*
servingcellconfigcommon
)
->
rateMatchPatternToReleaseList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__rateMatchPatternToReleaseList
));
(
*
servingcellconfigcommon
)
->
subcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
(
*
servingcellconfigcommon
)
->
tdd_UL_DL_ConfigurationCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_TDD_UL_DL_ConfigCommon
));
NR_ServingCellConfigCommon_t
**
servingcellconfigcommon
=
&
RC
.
nrrrc
[
Mod_id
]
->
carrier
[
CC_id
].
servingcellconfigcommon
;
NR_FreqBandIndicatorNR_t
*
dl_frequencyBandList
;
struct
NR_SCS_SpecificCarrier
*
dl_scs_SpecificCarrierList
;
NR_TCI_StateId_t
*
TCI_StateId
;
struct
NR_ControlResourceSet
*
bwp_dl_controlresourceset
;
NR_SearchSpace_t
*
bwp_dl_searchspace
;
struct
NR_PDSCH_TimeDomainResourceAllocation
*
bwp_dl_timedomainresourceallocation
;
NR_FreqBandIndicatorNR_t
*
ul_frequencyBandList
;
struct
NR_SCS_SpecificCarrier
*
ul_scs_SpecificCarrierList
;
struct
NR_PUSCH_TimeDomainResourceAllocation
*
pusch_configcommontimedomainresourceallocation
;
struct
NR_RateMatchPattern
*
ratematchpattern
;
NR_RateMatchPatternId_t
*
ratematchpatternid
;
if
(
initial_flag
==
1
){
(
*
servingcellconfigcommon
)
=
CALLOC
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
physCellId
=
CALLOC
(
1
,
sizeof
(
NR_PhysCellId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_DownlinkConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
=
CALLOC
(
1
,
sizeof
(
struct
NR_FrequencyInfoDL
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
=
CALLOC
(
1
,
sizeof
(
struct
NR_BWP_DownlinkCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_UplinkConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
=
CALLOC
(
1
,
sizeof
(
struct
NR_FrequencyInfoUL
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
=
CALLOC
(
1
,
sizeof
(
struct
NR_BWP_UplinkCommon
));
//(*servingcellconfigcommon)->supplementaryUplinkConfig = CALLOC(1,sizeof(struct NR_UplinkConfigCommon));
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__ssb_PositionsInBurst
));
(
*
servingcellconfigcommon
)
->
ssb_periodicityServingCell
=
CALLOC
(
1
,
sizeof
(
long
));
//(*servingcellconfigcommon)->lte_CRS_ToMatchAround = CALLOC(1,sizeof(struct NR_SetupRelease_RateMatchPatternLTE_CRS));
(
*
servingcellconfigcommon
)
->
rateMatchPatternToAddModList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__rateMatchPatternToAddModList
));
(
*
servingcellconfigcommon
)
->
rateMatchPatternToReleaseList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ServingCellConfigCommon__rateMatchPatternToReleaseList
));
(
*
servingcellconfigcommon
)
->
subcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
(
*
servingcellconfigcommon
)
->
tdd_UL_DL_ConfigurationCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_TDD_UL_DL_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
=
CALLOC
(
1
,
sizeof
(
NR_ARFCN_ValueNR_t
));
dl_frequencyBandList
=
CALLOC
(
1
,
sizeof
(
NR_FreqBandIndicatorNR_t
));
dl_scs_SpecificCarrierList
=
CALLOC
(
1
,
sizeof
(
struct
NR_SCS_SpecificCarrier
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
cyclicPrefix
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PDCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
controlResourceSetZero
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpace
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDCCH_ConfigCommon__commonSearchSpace
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
pagingSearchSpace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PDSCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_TimeDomainResourceAllocationList
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyBandList
=
CALLOC
(
1
,
sizeof
(
struct
NR_MultiFrequencyBandListNR
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
absoluteFrequencyPointA
=
CALLOC
(
1
,
sizeof
(
NR_ARFCN_ValueNR_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
additionalSpectrumEmission
=
CALLOC
(
1
,
sizeof
(
NR_AdditionalSpectrumEmission_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
p_Max
=
CALLOC
(
1
,
sizeof
(
NR_P_Max_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyShift7p5khz
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
cyclicPrefix
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
NR_SetupRelease_RACH_ConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
groupBconfigured
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon__groupBconfigured
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB
=
CALLOC
(
1
,
sizeof
(
NR_RSRP_Range_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB_SUL
=
CALLOC
(
1
,
sizeof
(
NR_RSRP_Range_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg1_SubcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg3_transformPrecoding
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
NR_SetupRelease_PUSCH_ConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
groupHoppingEnabledTransformPrecoding
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_TimeDomainResourceAllocationList
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
msg3_DeltaPreamble
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
p0_NominalWithGrant
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PUCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
=
CALLOC
(
1
,
sizeof
(
BIT_STRING_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
p0_nominal
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
hoppingId
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
=
MALLOC
(
1
);
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
=
MALLOC
(
1
);
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
=
MALLOC
(
8
);
bwp_dl_controlresourceset
=
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
;
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet__cce_REG_MappingType__interleaved
));
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
=
MALLOC
(
6
);
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
->
shiftIndex
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_controlresourceset
->
tci_StatesPDCCH_ToAddList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet__tci_StatesPDCCH_ToAddList
));
bwp_dl_controlresourceset
->
tci_PresentInDCI
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_controlresourceset
->
pdcch_DMRS_ScramblingID
=
CALLOC
(
1
,
sizeof
(
long
));
TCI_StateId
=
CALLOC
(
1
,
sizeof
(
NR_TCI_StateId_t
));
bwp_dl_searchspace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpace_t
));
bwp_dl_searchspace
->
controlResourceSetId
=
CALLOC
(
1
,
sizeof
(
NR_ControlResourceSetId_t
));
bwp_dl_searchspace
->
monitoringSlotPeriodicityAndOffset
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__monitoringSlotPeriodicityAndOffset
));
bwp_dl_searchspace
->
duration
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
=
CALLOC
(
1
,
sizeof
(
BIT_STRING_t
));
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
buf
=
MALLOC
(
2
);
bwp_dl_searchspace
->
nrofCandidates
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__nrofCandidates
));
bwp_dl_searchspace
->
searchSpaceType
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common__dci_Format2_0
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel1
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel2
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel4
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel8
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel16
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common__dci_Format2_3
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
->
monitoringPeriodicity
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
ue_Specific
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__ue_Specific
));
bwp_dl_timedomainresourceallocation
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_TimeDomainResourceAllocation
));
bwp_dl_timedomainresourceallocation
->
k0
=
CALLOC
(
1
,
sizeof
(
long
));
ul_frequencyBandList
=
CALLOC
(
1
,
sizeof
(
NR_FreqBandIndicatorNR_t
));
ul_scs_SpecificCarrierList
=
CALLOC
(
1
,
sizeof
(
struct
NR_SCS_SpecificCarrier
));
pusch_configcommontimedomainresourceallocation
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_TimeDomainResourceAllocation
));
pusch_configcommontimedomainresourceallocation
->
k2
=
CALLOC
(
1
,
sizeof
(
long
));
ratematchpattern
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern
));
ratematchpattern
->
patternType
.
choice
.
bitmaps
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern__patternType__bitmaps
));
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
buf
=
MALLOC
(
35
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
buf
=
MALLOC
(
2
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
buf
=
MALLOC
(
4
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern
));
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n2
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n4
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n5
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n8
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
buf
=
MALLOC
(
2
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
buf
=
MALLOC
(
3
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n40
.
buf
=
MALLOC
(
5
);
ratematchpattern
->
subcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
ratematchpatternid
=
CALLOC
(
1
,
sizeof
(
NR_RateMatchPatternId_t
));
}
else
{
bwp_dl_controlresourceset
=
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
;
}
//------------------------------------Start Fill ServingCellConfigCommon------------------------------------//
//physCellId
*
((
*
servingcellconfigcommon
)
->
physCellId
)
=
configuration
->
Nid_cell
[
CC_id
];
//NR_DownlinkConfigCommon
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
=
CALLOC
(
1
,
sizeof
(
NR_ARFCN_ValueNR_t
));
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencySSB
)
=
configuration
->
absoluteFrequencySSB
[
CC_id
];
NR_FreqBandIndicatorNR_t
*
dl_frequencyBandList
;
dl_frequencyBandList
=
CALLOC
(
1
,
sizeof
(
NR_FreqBandIndicatorNR_t
));
*
(
dl_frequencyBandList
)
=
configuration
->
DL_FreqBandIndicatorNR
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
,
&
dl_frequencyBandList
);
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
=
configuration
->
DL_absoluteFrequencyPointA
[
CC_id
];
struct
NR_SCS_SpecificCarrier
*
dl_scs_SpecificCarrierList
;
dl_scs_SpecificCarrierList
=
CALLOC
(
1
,
sizeof
(
struct
NR_SCS_SpecificCarrier
));
dl_scs_SpecificCarrierList
->
offsetToCarrier
=
configuration
->
DL_offsetToCarrier
[
CC_id
];
dl_scs_SpecificCarrierList
->
subcarrierSpacing
=
configuration
->
DL_SCS_SubcarrierSpacing
[
CC_id
];
dl_scs_SpecificCarrierList
->
carrierBandwidth
=
configuration
->
DL_carrierBandwidth
[
CC_id
];
...
...
@@ -334,44 +454,35 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
subcarrierSpacing
=
configuration
->
DL_BWP_SubcarrierSpacing
[
CC_id
];
if
(
configuration
->
DL_BWP_prefix_type
[
CC_id
]){
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
cyclicPrefix
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
cyclicPrefix
=
NR_BWP__cyclicPrefix_extended
;
}
//initialDownlinkBWP ----- pdcch_ConfigCommon
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PDCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
present
=
NR_SetupRelease_PDCCH_ConfigCommon_PR_setup
;
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
present
=
NR_SetupRelease_PDCCH_ConfigCommon_PR_setup
;
//Fill initialDownlinkBWP -> pdcch_ConfigCommon -> ControlResourceSet list //
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
controlResourceSetZero
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
controlResourceSetZero
)
=
configuration
->
controlResourceSetZero
[
CC_id
];
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceZero
)
=
configuration
->
searchSpaceZero
[
CC_id
];
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet
));
struct
NR_ControlResourceSet
*
bwp_dl_controlresourceset
=
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonControlResourceSet
;
bwp_dl_controlresourceset
->
controlResourceSetId
=
configuration
->
PDCCH_common_controlResourceSetId
[
CC_id
];
bwp_dl_controlresourceset
->
controlResourceSetId
=
configuration
->
PDCCH_common_controlResourceSetId
[
CC_id
];
//BIT STRING (SIZE (45))
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
=
MALLOC
(
6
);
bwp_dl_controlresourceset
->
frequencyDomainResources
.
size
=
6
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
bits_unused
=
3
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
0
]
=
0x1f
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
1
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
2
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
3
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
4
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
5
]
=
0xff
;
bwp_dl_controlresourceset
->
duration
=
configuration
->
PDCCH_common_ControlResourceSet_duration
[
CC_id
];
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
present
=
configuration
->
PDCCH_cce_REG_MappingType
[
CC_id
];
bwp_dl_controlresourceset
->
frequencyDomainResources
.
size
=
6
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
bits_unused
=
3
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
0
]
=
0x1f
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
1
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
2
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
3
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
4
]
=
0xff
;
bwp_dl_controlresourceset
->
frequencyDomainResources
.
buf
[
5
]
=
0xff
;
bwp_dl_controlresourceset
->
duration
=
configuration
->
PDCCH_common_ControlResourceSet_duration
[
CC_id
];
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
present
=
configuration
->
PDCCH_cce_REG_MappingType
[
CC_id
];
if
(
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
present
==
NR_ControlResourceSet__cce_REG_MappingType_PR_interleaved
){
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet__cce_REG_MappingType__interleaved
));
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
->
reg_BundleSize
=
configuration
->
PDCCH_reg_BundleSize
[
CC_id
];
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
->
interleaverSize
=
configuration
->
PDCCH_interleaverSize
[
CC_id
];
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
->
shiftIndex
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
interleaved
->
shiftIndex
)
=
configuration
->
PDCCH_shiftIndex
[
CC_id
];
}
else
if
(
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
present
==
NR_ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved
){
bwp_dl_controlresourceset
->
cce_REG_MappingType
.
choice
.
nonInterleaved
=
0
;
...
...
@@ -379,31 +490,19 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
bwp_dl_controlresourceset
->
precoderGranularity
=
configuration
->
PDCCH_precoderGranularity
[
CC_id
];
bwp_dl_controlresourceset
->
tci_StatesPDCCH_ToAddList
=
CALLOC
(
1
,
sizeof
(
struct
NR_ControlResourceSet__tci_StatesPDCCH_ToAddList
));
NR_TCI_StateId_t
*
TCI_StateId
;
TCI_StateId
=
CALLOC
(
1
,
sizeof
(
NR_TCI_StateId_t
));
*
(
TCI_StateId
)
=
configuration
->
PDCCH_TCI_StateId
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
bwp_dl_controlresourceset
->
tci_StatesPDCCH_ToAddList
->
list
,
&
TCI_StateId
);
if
(
configuration
->
tci_PresentInDCI
[
CC_id
]){
bwp_dl_controlresourceset
->
tci_PresentInDCI
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_controlresourceset
->
tci_PresentInDCI
=
NR_ControlResourceSet__tci_PresentInDCI_enabled
;
}
bwp_dl_controlresourceset
->
pdcch_DMRS_ScramblingID
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_controlresourceset
->
pdcch_DMRS_ScramblingID
)
=
configuration
->
PDCCH_DMRS_ScramblingID
[
CC_id
];;
//Fill downlinkConfigCommon -> initialDownlinkBWP -> pdcch_ConfigCommon -> SearchSpace list //
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpace
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDCCH_ConfigCommon__commonSearchSpace
));
NR_SearchSpace_t
*
bwp_dl_searchspace
;
bwp_dl_searchspace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpace_t
));
bwp_dl_searchspace
->
searchSpaceId
=
configuration
->
SearchSpaceId
[
CC_id
];
bwp_dl_searchspace
->
controlResourceSetId
=
CALLOC
(
1
,
sizeof
(
NR_ControlResourceSetId_t
));
*
(
bwp_dl_searchspace
->
controlResourceSetId
)
=
configuration
->
commonSearchSpaces_controlResourceSetId
[
CC_id
];
bwp_dl_searchspace
->
searchSpaceId
=
configuration
->
SearchSpaceId
[
CC_id
];
*
(
bwp_dl_searchspace
->
controlResourceSetId
)
=
configuration
->
commonSearchSpaces_controlResourceSetId
[
CC_id
];
bwp_dl_searchspace
->
monitoringSlotPeriodicityAndOffset
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__monitoringSlotPeriodicityAndOffset
));
bwp_dl_searchspace
->
monitoringSlotPeriodicityAndOffset
->
present
=
configuration
->
SearchSpace_monitoringSlotPeriodicityAndOffset_choice
[
CC_id
];
if
(
bwp_dl_searchspace
->
monitoringSlotPeriodicityAndOffset
->
present
==
NR_SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1
){
...
...
@@ -438,74 +537,44 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
bwp_dl_searchspace
->
monitoringSlotPeriodicityAndOffset
->
choice
.
sl2560
=
configuration
->
SearchSpace_monitoringSlotPeriodicityAndOffset_value
[
CC_id
];
}
bwp_dl_searchspace
->
duration
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_searchspace
->
duration
)
=
configuration
->
SearchSpace_duration
[
CC_id
];
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
=
CALLOC
(
1
,
sizeof
(
BIT_STRING_t
));
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
buf
=
MALLOC
(
2
);
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
size
=
2
;
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
bits_unused
=
2
;
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
buf
[
0
]
=
0x3f
;
bwp_dl_searchspace
->
monitoringSymbolsWithinSlot
->
buf
[
1
]
=
0xff
;
bwp_dl_searchspace
->
nrofCandidates
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__nrofCandidates
));
bwp_dl_searchspace
->
nrofCandidates
->
aggregationLevel1
=
configuration
->
SearchSpace_nrofCandidates_aggregationLevel1
[
CC_id
];
bwp_dl_searchspace
->
nrofCandidates
->
aggregationLevel2
=
configuration
->
SearchSpace_nrofCandidates_aggregationLevel2
[
CC_id
];
bwp_dl_searchspace
->
nrofCandidates
->
aggregationLevel4
=
configuration
->
SearchSpace_nrofCandidates_aggregationLevel4
[
CC_id
];
bwp_dl_searchspace
->
nrofCandidates
->
aggregationLevel8
=
configuration
->
SearchSpace_nrofCandidates_aggregationLevel8
[
CC_id
];
bwp_dl_searchspace
->
nrofCandidates
->
aggregationLevel16
=
configuration
->
SearchSpace_nrofCandidates_aggregationLevel16
[
CC_id
];
bwp_dl_searchspace
->
searchSpaceType
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType
));
bwp_dl_searchspace
->
searchSpaceType
->
present
=
configuration
->
SearchSpace_searchSpaceType
[
CC_id
];
if
(
bwp_dl_searchspace
->
searchSpaceType
->
present
==
NR_SearchSpace__searchSpaceType_PR_common
){
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common__dci_Format2_0
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel1
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel2
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel4
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel8
=
CALLOC
(
1
,
sizeof
(
long
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel16
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel1
)
=
configuration
->
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel1
[
CC_id
];
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel2
)
=
configuration
->
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel2
[
CC_id
];
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel4
)
=
configuration
->
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel4
[
CC_id
];
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel8
)
=
configuration
->
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel8
[
CC_id
];
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_0
->
nrofCandidates_SFI
.
aggregationLevel16
)
=
configuration
->
Common_dci_Format2_0_nrofCandidates_SFI_aggregationLevel16
[
CC_id
];
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__common__dci_Format2_3
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
->
monitoringPeriodicity
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
->
monitoringPeriodicity
)
=
configuration
->
Common_dci_Format2_3_monitoringPeriodicity
[
CC_id
];
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
common
->
dci_Format2_3
->
nrofPDCCH_Candidates
=
configuration
->
Common_dci_Format2_3_nrofPDCCH_Candidates
[
CC_id
];
}
else
if
(
bwp_dl_searchspace
->
searchSpaceType
->
present
==
NR_SearchSpace__searchSpaceType_PR_ue_Specific
){
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
ue_Specific
=
CALLOC
(
1
,
sizeof
(
struct
NR_SearchSpace__searchSpaceType__ue_Specific
));
bwp_dl_searchspace
->
searchSpaceType
->
choice
.
ue_Specific
->
dci_Formats
=
configuration
->
ue_Specific__dci_Formats
[
CC_id
];
}
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
commonSearchSpace
->
list
,
&
bwp_dl_searchspace
);
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
pagingSearchSpace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
=
CALLOC
(
1
,
sizeof
(
NR_SearchSpaceId_t
));
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceSIB1
)
=
configuration
->
searchSpaceSIB1
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
searchSpaceOtherSystemInformation
)
=
configuration
->
searchSpaceOtherSystemInformation
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
pagingSearchSpace
)
=
configuration
->
pagingSearchSpace
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdcch_ConfigCommon
->
choice
.
setup
->
ra_SearchSpace
)
=
configuration
->
ra_SearchSpace
[
CC_id
];
//initialDownlinkBWP ----- pdsch_ConfigCommon
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PDSCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
->
present
=
NR_SetupRelease_PDSCH_ConfigCommon_PR_setup
;
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
downlinkConfigCommon
->
initialDownlinkBWP
->
pdsch_ConfigCommon
->
choice
.
setup
->
pdsch_TimeDomainAllocationList
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_TimeDomainResourceAllocationList
));
struct
NR_PDSCH_TimeDomainResourceAllocation
*
bwp_dl_timedomainresourceallocation
;
bwp_dl_timedomainresourceallocation
=
CALLOC
(
1
,
sizeof
(
struct
NR_PDSCH_TimeDomainResourceAllocation
));
bwp_dl_timedomainresourceallocation
->
k0
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
bwp_dl_timedomainresourceallocation
->
k0
)
=
configuration
->
PDSCH_TimeDomainResourceAllocation_k0
[
CC_id
];
bwp_dl_timedomainresourceallocation
->
mappingType
=
configuration
->
PDSCH_TimeDomainResourceAllocation_mappingType
[
CC_id
];
bwp_dl_timedomainresourceallocation
->
startSymbolAndLength
=
configuration
->
PDSCH_TimeDomainResourceAllocation_startSymbolAndLength
[
CC_id
];
...
...
@@ -514,27 +583,16 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
//uplinkConfigCommon
//uplinkConfigCommon frequencyInfoUL //
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyBandList
=
CALLOC
(
1
,
sizeof
(
struct
NR_MultiFrequencyBandListNR
));
NR_FreqBandIndicatorNR_t
*
ul_frequencyBandList
;
ul_frequencyBandList
=
CALLOC
(
1
,
sizeof
(
NR_FreqBandIndicatorNR_t
));
*
(
ul_frequencyBandList
)
=
configuration
->
UL_FreqBandIndicatorNR
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyBandList
->
list
,
&
ul_frequencyBandList
);
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
absoluteFrequencyPointA
=
CALLOC
(
1
,
sizeof
(
NR_ARFCN_ValueNR_t
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
absoluteFrequencyPointA
)
=
configuration
->
UL_absoluteFrequencyPointA
[
CC_id
];
struct
NR_SCS_SpecificCarrier
*
ul_scs_SpecificCarrierList
;
ul_scs_SpecificCarrierList
=
CALLOC
(
1
,
sizeof
(
struct
NR_SCS_SpecificCarrier
));
ul_scs_SpecificCarrierList
->
offsetToCarrier
=
configuration
->
UL_offsetToCarrier
[
CC_id
];
ul_scs_SpecificCarrierList
->
subcarrierSpacing
=
configuration
->
UL_SCS_SubcarrierSpacing
[
CC_id
];
ul_scs_SpecificCarrierList
->
carrierBandwidth
=
configuration
->
UL_carrierBandwidth
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
scs_SpecificCarrierList
.
list
,
&
ul_scs_SpecificCarrierList
);
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
additionalSpectrumEmission
=
CALLOC
(
1
,
sizeof
(
NR_AdditionalSpectrumEmission_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
p_Max
=
CALLOC
(
1
,
sizeof
(
NR_P_Max_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyShift7p5khz
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
additionalSpectrumEmission
)
=
configuration
->
UL_additionalSpectrumEmission
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
p_Max
)
=
configuration
->
UL_p_Max
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
frequencyInfoUL
->
frequencyShift7p5khz
)
=
configuration
->
UL_frequencyShift7p5khz
[
CC_id
];
...
...
@@ -545,19 +603,14 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
subcarrierSpacing
=
configuration
->
UL_BWP_SubcarrierSpacing
[
CC_id
];
if
(
configuration
->
UL_BWP_prefix_type
[
CC_id
]){
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
cyclicPrefix
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
cyclicPrefix
=
NR_BWP__cyclicPrefix_extended
;
}
//Fill initialUplinkBWP -> BWP-UplinkCommon -> rach_ConfigCommon//
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
NR_SetupRelease_RACH_ConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
present
=
NR_SetupRelease_RACH_ConfigCommon_PR_setup
;
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
)
=
configuration
->
rach_totalNumberOfRA_Preambles
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
totalNumberOfRA_Preambles
)
=
configuration
->
rach_totalNumberOfRA_Preambles
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
->
present
=
configuration
->
rach_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_choice
[
CC_id
];
if
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
ssb_perRACH_OccasionAndCB_PreamblesPerSSB
->
present
==
NR_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneEighth
){
...
...
@@ -579,16 +632,13 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
}
if
(
configuration
->
rach_groupBconfigured
[
CC_id
]){
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
groupBconfigured
=
CALLOC
(
1
,
sizeof
(
struct
NR_RACH_ConfigCommon__groupBconfigured
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
groupBconfigured
->
ra_Msg3SizeGroupA
=
configuration
->
rach_ra_Msg3SizeGroupA
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
groupBconfigured
->
messagePowerOffsetGroupB
=
configuration
->
rach_messagePowerOffsetGroupB
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
groupBconfigured
->
numberOfRA_PreamblesGroupA
=
configuration
->
rach_numberOfRA_PreamblesGroupA
[
CC_id
];
}
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
ra_ContentionResolutionTimer
=
configuration
->
rach_ra_ContentionResolutionTimer
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB
=
CALLOC
(
1
,
sizeof
(
NR_RSRP_Range_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB_SUL
=
CALLOC
(
1
,
sizeof
(
NR_RSRP_Range_t
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB
)
=
configuration
->
rsrp_ThresholdSSB
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rsrp_ThresholdSSB_SUL
)
=
configuration
->
rsrp_ThresholdSSB_SUL
[
CC_id
];
...
...
@@ -599,12 +649,10 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
prach_RootSequenceIndex
.
choice
.
l139
=
configuration
->
prach_RootSequenceIndex_l139
[
CC_id
];
}
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg1_SubcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg1_SubcarrierSpacing
=
configuration
->
prach_msg1_SubcarrierSpacing
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg1_SubcarrierSpacing
)
=
configuration
->
prach_msg1_SubcarrierSpacing
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
restrictedSetConfig
=
configuration
->
restrictedSetConfig
[
CC_id
];
if
(
configuration
->
msg3_transformPrecoding
[
CC_id
]){
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg3_transformPrecoding
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
msg3_transformPrecoding
)
=
NR_RACH_ConfigCommon__msg3_transformPrecoding_enabled
;
}
...
...
@@ -619,50 +667,27 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
ra_ResponseWindow
=
configuration
->
ra_ResponseWindow
[
CC_id
];
//Fill initialUplinkBWP -> BWP-UplinkCommon -> pusch_ConfigCommon//
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
NR_SetupRelease_PUSCH_ConfigCommon_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
present
=
NR_SetupRelease_PUSCH_ConfigCommon_PR_setup
;
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_ConfigCommon
));
if
(
configuration
->
groupHoppingEnabledTransformPrecoding
[
CC_id
]){
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
groupHoppingEnabledTransformPrecoding
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
groupHoppingEnabledTransformPrecoding
=
NR_PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding_enabled
;
}
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_TimeDomainResourceAllocationList
));
struct
NR_PUSCH_TimeDomainResourceAllocation
*
pusch_configcommontimedomainresourceallocation
;
pusch_configcommontimedomainresourceallocation
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUSCH_TimeDomainResourceAllocation
));
pusch_configcommontimedomainresourceallocation
->
k2
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
pusch_configcommontimedomainresourceallocation
->
k2
)
=
configuration
->
PUSCH_TimeDomainResourceAllocation_k2
[
CC_id
];
pusch_configcommontimedomainresourceallocation
->
mappingType
=
configuration
->
PUSCH_TimeDomainResourceAllocation_mappingType
[
CC_id
];
*
(
pusch_configcommontimedomainresourceallocation
->
k2
)
=
configuration
->
PUSCH_TimeDomainResourceAllocation_k2
[
CC_id
];
pusch_configcommontimedomainresourceallocation
->
mappingType
=
configuration
->
PUSCH_TimeDomainResourceAllocation_mappingType
[
CC_id
];
pusch_configcommontimedomainresourceallocation
->
startSymbolAndLength
=
configuration
->
PUSCH_TimeDomainResourceAllocation_startSymbolAndLength
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
pusch_TimeDomainAllocationList
->
list
,
&
pusch_configcommontimedomainresourceallocation
);
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
msg3_DeltaPreamble
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
msg3_DeltaPreamble
)
=
configuration
->
msg3_DeltaPreamble
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
p0_NominalWithGrant
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
->
choice
.
setup
->
p0_NominalWithGrant
)
=
configuration
->
p0_NominalWithGrant
[
CC_id
];
//Fill initialUplinkBWP -> BWP-UplinkCommon -> pucch_ConfigCommon//
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
=
CALLOC
(
1
,
sizeof
(
struct
NR_SetupRelease_PUCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
present
=
NR_SetupRelease_PUCCH_ConfigCommon_PR_setup
;
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
=
CALLOC
(
1
,
sizeof
(
struct
NR_PUCCH_ConfigCommon
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
=
CALLOC
(
1
,
sizeof
(
BIT_STRING_t
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
p0_nominal
=
CALLOC
(
1
,
sizeof
(
long
));
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_GroupHopping
=
configuration
->
pucch_GroupHopping
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_GroupHopping
=
configuration
->
pucch_GroupHopping
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
p0_nominal
)
=
configuration
->
p0_nominal
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
pucch_ResourceCommon
)
=
configuration
->
pucch_ResourceCommon
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
hoppingId
=
CALLOC
(
1
,
sizeof
(
long
));
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
hoppingId
)
=
configuration
->
hoppingId
[
CC_id
];
*
((
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
->
choice
.
setup
->
hoppingId
)
=
configuration
->
hoppingId
[
CC_id
];
(
*
servingcellconfigcommon
)
->
uplinkConfigCommon
->
timeAlignmentTimerCommon
=
configuration
->
UL_timeAlignmentTimerCommon
[
CC_id
];
...
...
@@ -670,17 +695,14 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
present
=
configuration
->
ServingCellConfigCommon_ssb_PositionsInBurst_PR
[
CC_id
];
if
((
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
present
==
NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_shortBitmap
){
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
=
MALLOC
(
1
);
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
size
=
1
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
bits_unused
=
4
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
[
0
]
=
0x0f
;
}
else
if
((
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
present
==
NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap
){
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
=
MALLOC
(
1
);
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
size
=
1
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
bits_unused
=
0
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
]
=
0xff
;
}
else
if
((
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
present
==
NR_ServingCellConfigCommon__ssb_PositionsInBurst_PR_longBitmap
){
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
=
MALLOC
(
8
);
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
size
=
8
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
bits_unused
=
0
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
0
]
=
0xff
;
...
...
@@ -690,7 +712,7 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
4
]
=
0xff
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
5
]
=
0xff
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
6
]
=
0xff
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
7
]
=
0xff
;
(
*
servingcellconfigcommon
)
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
7
]
=
0xff
;
}
//ssb_periodicityServingCell
...
...
@@ -701,30 +723,27 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
//lte_CRS_ToMatchAround
//rateMatchPatternToAddModList
struct
NR_RateMatchPattern
*
ratematchpattern
;
ratematchpattern
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern
));
ratematchpattern
->
rateMatchPatternId
=
configuration
->
rateMatchPatternId
[
CC_id
];
ratematchpattern
->
patternType
.
present
=
configuration
->
RateMatchPattern_patternType
[
CC_id
];
if
(
ratematchpattern
->
patternType
.
present
==
NR_RateMatchPattern__patternType_PR_bitmaps
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern__patternType__bitmaps
));
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
buf
=
MALLOC
(
35
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
size
=
35
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
bits_unused
=
5
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
buf
[
0
]
=
0x07
;
for
(
int
i
=
1
;
i
<=
34
;
i
++
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
resourceBlocks
.
buf
[
i
]
=
0xff
;
}
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
present
=
configuration
->
symbolsInResourceBlock
[
CC_id
];
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
present
==
NR_RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_oneSlot
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
buf
=
MALLOC
(
2
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
size
=
2
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
bits_unused
=
2
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
buf
[
0
]
=
0x3f
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
oneSlot
.
buf
[
1
]
=
0xff
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
present
==
NR_RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_twoSlots
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
buf
=
MALLOC
(
4
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
size
=
4
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
bits_unused
=
4
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
buf
[
0
]
=
0x0f
;
...
...
@@ -733,43 +752,36 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
symbolsInResourceBlock
.
choice
.
twoSlots
.
buf
[
3
]
=
0xff
;
}
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
=
CALLOC
(
1
,
sizeof
(
struct
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern
));
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
=
configuration
->
periodicityAndPattern
[
CC_id
];
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n2
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n2
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n2
.
size
=
1
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n2
.
bits_unused
=
6
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n2
.
buf
[
0
]
=
0x03
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n4
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n4
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n4
.
size
=
1
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n4
.
bits_unused
=
4
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n4
.
buf
[
0
]
=
0x0f
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n5
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n5
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n5
.
size
=
1
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n5
.
bits_unused
=
3
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n5
.
buf
[
0
]
=
0x1f
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n8
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n8
.
buf
=
MALLOC
(
1
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n8
.
size
=
1
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n8
.
bits_unused
=
0
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n8
.
buf
[
0
]
=
0xff
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n10
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
buf
=
MALLOC
(
2
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
size
=
2
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
bits_unused
=
6
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
buf
[
0
]
=
0x03
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n10
.
buf
[
1
]
=
0xff
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n20
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
buf
=
MALLOC
(
3
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
size
=
3
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
bits_unused
=
4
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
buf
[
0
]
=
0x0f
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
buf
[
1
]
=
0xff
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n20
.
buf
[
2
]
=
0xff
;
}
else
if
(
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
present
==
NR_RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n40
){
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n40
.
buf
=
MALLOC
(
5
);
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n40
.
size
=
5
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n40
.
bits_unused
=
0
;
ratematchpattern
->
patternType
.
choice
.
bitmaps
->
periodicityAndPattern
->
choice
.
n40
.
buf
[
0
]
=
0xff
;
...
...
@@ -783,15 +795,12 @@ void do_SERVINGCELLCONFIGCOMMON(uint8_t Mod_id,
ratematchpattern
->
patternType
.
choice
.
controlResourceSet
=
configuration
->
RateMatchPattern_controlResourceSet
[
CC_id
];
}
ratematchpattern
->
subcarrierSpacing
=
CALLOC
(
1
,
sizeof
(
NR_SubcarrierSpacing_t
));
*
(
ratematchpattern
->
subcarrierSpacing
)
=
configuration
->
RateMatchPattern_subcarrierSpacing
[
CC_id
];
ratematchpattern
->
mode
=
configuration
->
RateMatchPattern_mode
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
rateMatchPatternToAddModList
->
list
,
&
ratematchpattern
);
//rateMatchPatternToReleaseList
NR_RateMatchPatternId_t
*
ratematchpatternid
;
ratematchpatternid
=
CALLOC
(
1
,
sizeof
(
NR_RateMatchPatternId_t
));
*
(
ratematchpatternid
)
=
configuration
->
rateMatchPatternId
[
CC_id
];
ASN_SEQUENCE_ADD
(
&
(
*
servingcellconfigcommon
)
->
rateMatchPatternToReleaseList
->
list
,
&
ratematchpatternid
);
...
...
openair2/RRC/NR/MESSAGES/asn1_msg.h
View file @
037e37ea
...
...
@@ -80,10 +80,11 @@ uint8_t do_MIB_NR(rrc_gNB_carrier_data_t *carrier,
uint8_t
do_SIB1_NR
(
rrc_gNB_carrier_data_t
*
carrier
,
int
Mod_id
,
int
CC_id
,
gNB_RrcConfigurationReq
*
configuration
);
void
do_SERVINGCELLCONFIGCOMMON
(
uint8_t
Mod_id
,
int
CC_id
int
CC_id
,
#if defined(ENABLE_ITTI)
,
gNB_RrcConfigurationReq
*
configuration
gNB_RrcConfigurationReq
*
configuration
,
#endif
int
initial_flag
);
...
...
openair2/RRC/NR/nr_rrc_common.c
View file @
037e37ea
...
...
@@ -81,18 +81,152 @@ int rrc_init_nr_global_param(void){
}
//-----------------------------------------------------------------------------
void
rrc_config_nr_buffer
(
NR_SRB_INFO
*
Srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
)
//-----------------------------------------------------------------------------
{
void
rrc_config_nr_buffer
(
NR_SRB_INFO
*
Srb_info
,
uint8_t
Lchan_type
,
uint8_t
Role
){
Srb_info
->
Rx_buffer
.
payload_size
=
0
;
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
openair2/RRC/NR/nr_rrc_defs.h
View file @
037e37ea
...
...
@@ -338,6 +338,16 @@ typedef struct gNB_RRC_UE_s {
uint32_t
ue_reestablishment_timer
;
uint32_t
ue_reestablishment_timer_thres
;
uint8_t
e_rab_release_command_flag
;
//------------------------------------------------------------------------------//
NR_CellGroupId_t
cellGroupId
;
struct
NR_SpCellConfig
*
spCellConfig
;
struct
NR_CellGroupConfig__sCellToAddModList
*
sCellconfig
;
struct
NR_CellGroupConfig__sCellToReleaseList
*
sCellconfigRelease
;
struct
NR_CellGroupConfig__rlc_BearerToAddModList
*
rlc_BearerBonfig
;
struct
NR_CellGroupConfig__rlc_BearerToReleaseList
*
rlc_BearerRelease
;
struct
NR_MAC_CellGroupConfig
*
mac_CellGroupConfig
;
struct
NR_PhysicalCellGroupConfig
*
physicalCellGroupConfig
;
}
gNB_RRC_UE_t
;
typedef
uid_t
ue_uid_t
;
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
037e37ea
...
...
@@ -58,6 +58,13 @@ 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. */
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
037e37ea
...
...
@@ -144,6 +144,40 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
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;
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;
*/
gNB_RrcConfigurationReq
*
common_configuration
;
common_configuration
=
CALLOC
(
1
,
sizeof
(
gNB_RrcConfigurationReq
));
//Fill config
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
);
/*
memcpy( (*spCellConfig)->reconfigurationWithSync->spCellConfigCommon ,
RC.nrrrc[ctxt_pP->module_id]->carrier[0].servingcellconfigcommon,
sizeof(struct NR_ServingCellConfigCommon));
*/
}
...
...
@@ -184,10 +218,11 @@ static void init_NR_SI(const protocol_ctxt_t* const ctxt_pP,
);
do_SERVINGCELLCONFIGCOMMON
(
ctxt_pP
->
module_id
,
CC_id
CC_id
,
#if defined(ENABLE_ITTI)
,
configuration
configuration
,
#endif
1
);
LOG_I
(
NR_RRC
,
"Done init_NR_SI
\n
"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment