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
littleBu
OpenXG-RAN
Commits
7a26d756
Commit
7a26d756
authored
May 17, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
other changes required for multiple BWP CSI config
parent
075e8c6d
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
329 additions
and
338 deletions
+329
-338
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+182
-193
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+147
-145
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
7a26d756
...
@@ -1286,199 +1286,6 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1286,199 +1286,6 @@ void fill_initial_SpCellConfig(int uid,
SpCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
present
=
NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup
;
SpCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
present
=
NR_SetupRelease_PDSCH_ServingCellConfig_PR_setup
;
SpCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
choice
.
setup
=
pdsch_servingcellconfig
;
SpCellConfig
->
spCellConfigDedicated
->
pdsch_ServingCellConfig
->
choice
.
setup
=
pdsch_servingcellconfig
;
if
(
configuration
->
do_CSIRS
)
{
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
=
csi_MeasConfig
;
int
pdsch_AntennaPorts
=
configuration
->
pdsch_AntennaPorts
.
N1
*
configuration
->
pdsch_AntennaPorts
.
N2
*
configuration
->
pdsch_AntennaPorts
.
XP
;
config_csirs
(
scc
,
csi_MeasConfig
,
uid
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
,
0
);
config_csiim
(
configuration
->
do_CSIRS
,
pdsch_AntennaPorts
,
curr_bwp
,
csi_MeasConfig
,
0
);
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
NULL
;
NR_CSI_SSB_ResourceSet_t
*
ssbresset0
=
calloc
(
1
,
sizeof
(
*
ssbresset0
));
ssbresset0
->
csi_SSB_ResourceSetId
=
0
;
uint64_t
bitmap
=
0
;
switch
(
scc
->
ssb_PositionsInBurst
->
present
)
{
case
1
:
bitmap
=
((
uint64_t
)
scc
->
ssb_PositionsInBurst
->
choice
.
shortBitmap
.
buf
[
0
])
<<
56
;
break
;
case
2
:
bitmap
=
((
uint64_t
)
scc
->
ssb_PositionsInBurst
->
choice
.
mediumBitmap
.
buf
[
0
])
<<
56
;
break
;
case
3
:
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
bitmap
|=
(((
uint64_t
)
scc
->
ssb_PositionsInBurst
->
choice
.
longBitmap
.
buf
[
i
])
<<
((
7
-
i
)
*
8
));
}
break
;
default:
AssertFatal
(
1
==
0
,
"SSB bitmap size value %d undefined (allowed values 1,2,3)
\n
"
,
scc
->
ssb_PositionsInBurst
->
present
);
}
NR_SSB_Index_t
*
ssbresset
[
64
];
for
(
int
i
=
0
;
i
<
64
;
i
++
)
{
if
((
bitmap
>>
(
63
-
i
))
&
0x01
){
ssbresset
[
i
]
=
calloc
(
1
,
sizeof
(
*
ssbresset
[
i
]));
*
ssbresset
[
i
]
=
i
;
ASN_SEQUENCE_ADD
(
&
ssbresset0
->
csi_SSB_ResourceList
.
list
,
ssbresset
[
i
]);
}
}
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
->
list
,
ssbresset0
);
csi_MeasConfig
->
csi_ResourceConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ResourceConfigToAddModList
));
csi_MeasConfig
->
csi_ResourceConfigToReleaseList
=
NULL
;
NR_CSI_ResourceConfig_t
*
csires0
=
calloc
(
1
,
sizeof
(
*
csires0
));
csires0
->
csi_ResourceConfigId
=
0
;
csires0
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB
;
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
=
calloc
(
1
,
sizeof
(
*
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
));
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzp0
=
calloc
(
1
,
sizeof
(
*
nzp0
));
*
nzp0
=
0
;
ASN_SEQUENCE_ADD
(
&
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
->
list
,
nzp0
);
csires0
->
bwp_Id
=
0
;
csires0
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires0
);
NR_CSI_ResourceConfig_t
*
csires1
=
calloc
(
1
,
sizeof
(
*
csires1
));
csires1
->
csi_ResourceConfigId
=
1
;
csires1
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB
;
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
=
calloc
(
1
,
sizeof
(
*
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
));
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
));
NR_CSI_SSB_ResourceSetId_t
*
ssbres00
=
calloc
(
1
,
sizeof
(
*
ssbres00
));
*
ssbres00
=
0
;
ASN_SEQUENCE_ADD
(
&
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
->
list
,
ssbres00
);
csires1
->
bwp_Id
=
0
;
csires1
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires1
);
if
(
pdsch_AntennaPorts
>
1
)
{
NR_CSI_ResourceConfig_t
*
csires2
=
calloc
(
1
,
sizeof
(
*
csires2
));
csires2
->
csi_ResourceConfigId
=
2
;
csires2
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_csi_IM_ResourceSetList
;
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
));
NR_CSI_IM_ResourceSetId_t
*
csiim00
=
calloc
(
1
,
sizeof
(
*
csiim00
));
*
csiim00
=
0
;
ASN_SEQUENCE_ADD
(
&
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
->
list
,
csiim00
);
csires2
->
bwp_Id
=
0
;
csires2
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires2
);
}
NR_PUCCH_CSI_Resource_t
*
pucchcsires1
=
calloc
(
1
,
sizeof
(
*
pucchcsires1
));
pucchcsires1
->
uplinkBandwidthPartId
=
0
;
pucchcsires1
->
pucch_Resource
=
1
;
csi_MeasConfig
->
csi_ReportConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ReportConfigToAddModList
));
csi_MeasConfig
->
csi_ReportConfigToReleaseList
=
NULL
;
if
(
pdsch_AntennaPorts
>
1
)
{
LOG_I
(
NR_RRC
,
"Filling CSI Report Config for RI_PMI_CQI
\n
"
);
NR_CSI_ReportConfig_t
*
csirep1
=
calloc
(
1
,
sizeof
(
*
csirep1
));
csirep1
->
reportConfigId
=
0
;
csirep1
->
carrier
=
NULL
;
csirep1
->
resourcesForChannelMeasurement
=
0
;
csirep1
->
csi_IM_ResourcesForInterference
=
calloc
(
1
,
sizeof
(
*
csirep1
->
csi_IM_ResourcesForInterference
));
*
csirep1
->
csi_IM_ResourcesForInterference
=
2
;
csirep1
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep1
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep1
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportConfigType
.
choice
.
periodic
));
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
(
7
+
(
20
*
uid
))
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep1
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep1
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI
;
csirep1
->
reportQuantity
.
choice
.
cri_RI_PMI_CQI
=
(
NULL_t
)
0
;
csirep1
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
));
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
));
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI
;
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
));
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
/*calloc(1,sizeof(*csirep1->reportFreqConfiguration->csi_ReportingBand));
csirep1->reportFreqConfiguration->csi_ReportingBand->present = NR_CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands7;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.size=1;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.bits_unused=1;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.buf=malloc(1);
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.buf[0]=254;*/
csirep1
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_notConfigured
;
csirep1
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_notConfigured
;
csirep1
->
codebookConfig
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
));
csirep1
->
codebookConfig
->
codebookType
.
present
=
NR_CodebookConfig__codebookType_PR_type1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
present
=
NR_CodebookConfig__codebookType__type1__subType_PR_typeI_SinglePanel
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_two
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
bits_unused
=
2
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
[
0
]
=
0xfc
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
bits_unused
=
0
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
[
0
]
=
0x03
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
csirep1
->
dummy
=
NULL
;
csirep1
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
));
//csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS = calloc(1,sizeof(*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS));
//*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS=NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1;
csirep1
->
cqi_Table
=
calloc
(
1
,
sizeof
(
*
csirep1
->
cqi_Table
));
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table1
;
csirep1
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value2
;
csirep1
->
non_PMI_PortIndication
=
NULL
;
csirep1
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep1
);
}
LOG_I
(
NR_RRC
,
"Filling CSI Report Config for CRI_RSRP
\n
"
);
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
csirep2
->
reportConfigId
=
1
;
csirep2
->
carrier
=
NULL
;
csirep2
->
resourcesForChannelMeasurement
=
0
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
(
27
+
(
20
*
uid
))
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP
;
csirep2
->
reportQuantity
.
choice
.
cri_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportFreqConfiguration
));
csirep2
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
csirep2
->
cqi_Table
=
NULL
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value1
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
);
}
pdsch_servingcellconfig
->
codeBlockGroupTransmission
=
NULL
;
pdsch_servingcellconfig
->
xOverhead
=
NULL
;
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
));
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16
;
pdsch_servingcellconfig
->
pucch_Cell
=
NULL
;
pdsch_servingcellconfig
->
ext1
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
));
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
));
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
2
;
// Downlink BWPs
// Downlink BWPs
int
n_dl_bwp
=
0
;
int
n_dl_bwp
=
0
;
if
(
servingcellconfigdedicated
&&
if
(
servingcellconfigdedicated
&&
...
@@ -1525,6 +1332,188 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1525,6 +1332,188 @@ void fill_initial_SpCellConfig(int uid,
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
?
*
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
:
1
;
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
=
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
?
*
servingcellconfigdedicated
->
uplinkConfig
->
firstActiveUplinkBWP_Id
:
1
;
}
}
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
=
csi_MeasConfig
;
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_ResourceConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ResourceConfigToAddModList
));
csi_MeasConfig
->
csi_ResourceConfigToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_ReportConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ReportConfigToAddModList
));
csi_MeasConfig
->
csi_ReportConfigToReleaseList
=
NULL
;
NR_CSI_SSB_ResourceSet_t
*
ssbresset0
=
calloc
(
1
,
sizeof
(
*
ssbresset0
));
ssbresset0
->
csi_SSB_ResourceSetId
=
0
;
NR_SSB_Index_t
*
ssbresset
[
64
];
for
(
int
i
=
0
;
i
<
64
;
i
++
)
{
if
((
bitmap
>>
(
63
-
i
))
&
0x01
){
ssbresset
[
i
]
=
calloc
(
1
,
sizeof
(
*
ssbresset
[
i
]));
*
ssbresset
[
i
]
=
i
;
ASN_SEQUENCE_ADD
(
&
ssbresset0
->
csi_SSB_ResourceList
.
list
,
ssbresset
[
i
]);
}
}
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
->
list
,
ssbresset0
);
int
pdsch_AntennaPorts
=
configuration
->
pdsch_AntennaPorts
.
N1
*
configuration
->
pdsch_AntennaPorts
.
N2
*
configuration
->
pdsch_AntennaPorts
.
XP
;
for
(
int
bwp_loop
=
0
;
bwp_loop
<
n_dl_bwp
;
bwp_loop
++
)
{
NR_BWP_Downlink_t
*
bwp
=
SpCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
->
list
.
array
[
bwp_loop
];
int
curr_bwp
=
NRRIV2BW
(
bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
config_csirs
(
scc
,
csi_MeasConfig
,
uid
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
,
bwp_loop
);
config_csiim
(
configuration
->
do_CSIRS
,
pdsch_AntennaPorts
,
curr_bwp
,
csi_MeasConfig
,
bwp_loop
);
NR_CSI_ResourceConfig_t
*
csires1
=
calloc
(
1
,
sizeof
(
*
csires1
));
csires1
->
csi_ResourceConfigId
=
bwp
->
bwp_Id
+
20
;
csires1
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB
;
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
=
calloc
(
1
,
sizeof
(
*
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
));
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
));
NR_CSI_SSB_ResourceSetId_t
*
ssbres00
=
calloc
(
1
,
sizeof
(
*
ssbres00
));
*
ssbres00
=
0
;
ASN_SEQUENCE_ADD
(
&
csires1
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
csi_SSB_ResourceSetList
->
list
,
ssbres00
);
csires1
->
bwp_Id
=
bwp
->
bwp_Id
;
csires1
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires1
);
if
(
configuration
->
do_CSIRS
&&
pdsch_AntennaPorts
>
1
)
{
NR_CSI_ResourceConfig_t
*
csires0
=
calloc
(
1
,
sizeof
(
*
csires0
));
csires0
->
csi_ResourceConfigId
=
bwp
->
bwp_Id
;
csires0
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB
;
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
=
calloc
(
1
,
sizeof
(
*
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
));
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
));
NR_NZP_CSI_RS_ResourceSetId_t
*
nzp0
=
calloc
(
1
,
sizeof
(
*
nzp0
));
*
nzp0
=
bwp_loop
;
ASN_SEQUENCE_ADD
(
&
csires0
->
csi_RS_ResourceSetList
.
choice
.
nzp_CSI_RS_SSB
->
nzp_CSI_RS_ResourceSetList
->
list
,
nzp0
);
csires0
->
bwp_Id
=
bwp
->
bwp_Id
;
csires0
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires0
);
NR_CSI_ResourceConfig_t
*
csires2
=
calloc
(
1
,
sizeof
(
*
csires2
));
csires2
->
csi_ResourceConfigId
=
bwp
->
bwp_Id
+
10
;
csires2
->
csi_RS_ResourceSetList
.
present
=
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR_csi_IM_ResourceSetList
;
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
=
calloc
(
1
,
sizeof
(
*
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
));
NR_CSI_IM_ResourceSetId_t
*
csiim00
=
calloc
(
1
,
sizeof
(
*
csiim00
));
*
csiim00
=
bwp_loop
;
ASN_SEQUENCE_ADD
(
&
csires2
->
csi_RS_ResourceSetList
.
choice
.
csi_IM_ResourceSetList
->
list
,
csiim00
);
csires2
->
bwp_Id
=
bwp
->
bwp_Id
;
csires2
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires2
);
NR_PUCCH_CSI_Resource_t
*
pucchcsires1
=
calloc
(
1
,
sizeof
(
*
pucchcsires1
));
pucchcsires1
->
uplinkBandwidthPartId
=
bwp
->
bwp_Id
;
pucchcsires1
->
pucch_Resource
=
2
;
if
(
pdsch_AntennaPorts
>
1
)
{
LOG_I
(
NR_RRC
,
"Filling CSI Report Config for RI_PMI_CQI
\n
"
);
NR_CSI_ReportConfig_t
*
csirep1
=
calloc
(
1
,
sizeof
(
*
csirep1
));
csirep1
->
reportConfigId
=
0
;
csirep1
->
carrier
=
NULL
;
csirep1
->
resourcesForChannelMeasurement
=
bwp
->
bwp_Id
;
csirep1
->
csi_IM_ResourcesForInterference
=
calloc
(
1
,
sizeof
(
*
csirep1
->
csi_IM_ResourcesForInterference
));
*
csirep1
->
csi_IM_ResourcesForInterference
=
bwp
->
bwp_Id
+
10
;
csirep1
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep1
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep1
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportConfigType
.
choice
.
periodic
));
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
(
7
+
(
20
*
uid
))
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep1
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep1
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI
;
csirep1
->
reportQuantity
.
choice
.
cri_RI_PMI_CQI
=
(
NULL_t
)
0
;
csirep1
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
));
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
));
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI
;
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
));
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
/*calloc(1,sizeof(*csirep1->reportFreqConfiguration->csi_ReportingBand));
csirep1->reportFreqConfiguration->csi_ReportingBand->present = NR_CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands7;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.size=1;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.bits_unused=1;
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.buf=malloc(1);
csirep1->reportFreqConfiguration->csi_ReportingBand->choice.subbands7.buf[0]=254;*/
csirep1
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_notConfigured
;
csirep1
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_notConfigured
;
csirep1
->
codebookConfig
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
));
csirep1
->
codebookConfig
->
codebookType
.
present
=
NR_CodebookConfig__codebookType_PR_type1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
present
=
NR_CodebookConfig__codebookType__type1__subType_PR_typeI_SinglePanel
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_two
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
bits_unused
=
2
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
[
0
]
=
0xfc
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
bits_unused
=
0
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
[
0
]
=
0x03
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
csirep1
->
dummy
=
NULL
;
csirep1
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
));
//csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS = calloc(1,sizeof(*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS));
//*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS=NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1;
csirep1
->
cqi_Table
=
calloc
(
1
,
sizeof
(
*
csirep1
->
cqi_Table
));
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
mcs_Table
!=
NULL
)
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table2
;
else
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table1
;
csirep1
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value2
;
csirep1
->
non_PMI_PortIndication
=
NULL
;
csirep1
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep1
);
}
LOG_I
(
NR_RRC
,
"Filling CSI Report Config for CRI_RSRP
\n
"
);
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
csirep2
->
reportConfigId
=
bwp
->
bwp_Id
+
10
;
csirep2
->
carrier
=
NULL
;
csirep2
->
resourcesForChannelMeasurement
=
bwp
->
bwp_Id
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
(
27
+
(
20
*
uid
))
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP
;
csirep2
->
reportQuantity
.
choice
.
cri_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportFreqConfiguration
));
csirep2
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
csirep2
->
cqi_Table
=
NULL
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value1
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
);
}
}
pdsch_servingcellconfig
->
codeBlockGroupTransmission
=
NULL
;
pdsch_servingcellconfig
->
xOverhead
=
NULL
;
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
));
*
pdsch_servingcellconfig
->
nrofHARQ_ProcessesForPDSCH
=
NR_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16
;
pdsch_servingcellconfig
->
pucch_Cell
=
NULL
;
pdsch_servingcellconfig
->
ext1
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
));
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
));
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
2
;
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_SpCellConfig
,
(
void
*
)
SpCellConfig
);
xer_fprint
(
stdout
,
&
asn_DEF_NR_SpCellConfig
,
(
void
*
)
SpCellConfig
);
}
}
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
7a26d756
...
@@ -659,6 +659,9 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
...
@@ -659,6 +659,9 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_ReportConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ReportConfigToAddModList
));
csi_MeasConfig
->
csi_ReportConfigToReleaseList
=
NULL
;
NR_CSI_SSB_ResourceSet_t
*
ssbresset0
=
calloc
(
1
,
sizeof
(
*
ssbresset0
));
NR_CSI_SSB_ResourceSet_t
*
ssbresset0
=
calloc
(
1
,
sizeof
(
*
ssbresset0
));
ssbresset0
->
csi_SSB_ResourceSetId
=
0
;
ssbresset0
->
csi_SSB_ResourceSetId
=
0
;
...
@@ -716,78 +719,75 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
...
@@ -716,78 +719,75 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
ssbres
->
bwp_Id
=
bwp
->
bwp_Id
;
ssbres
->
bwp_Id
=
bwp
->
bwp_Id
;
ssbres
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ssbres
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
ssbres
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
ssbres
);
}
NR_PUCCH_CSI_Resource_t
*
pucchcsires1
=
calloc
(
1
,
sizeof
(
*
pucchcsires1
));
NR_PUCCH_CSI_Resource_t
*
pucchcsires1
=
calloc
(
1
,
sizeof
(
*
pucchcsires1
));
pucchcsires1
->
uplinkBandwidthPartId
=
1
;
pucchcsires1
->
uplinkBandwidthPartId
=
bwp
->
bwp_Id
;
pucchcsires1
->
pucch_Resource
=
2
;
pucchcsires1
->
pucch_Resource
=
2
;
csi_MeasConfig
->
csi_ReportConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ReportConfigToAddModList
));
if
(
do_csirs
&&
dl_antenna_ports
>
1
)
{
csi_MeasConfig
->
csi_ReportConfigToReleaseList
=
NULL
;
NR_CSI_ReportConfig_t
*
csirep1
=
calloc
(
1
,
sizeof
(
*
csirep1
));
if
(
do_csirs
&&
dl_antenna_ports
>
1
)
{
csirep1
->
reportConfigId
=
bwp
->
bwp_Id
;
NR_CSI_ReportConfig_t
*
csirep1
=
calloc
(
1
,
sizeof
(
*
csirep1
));
csirep1
->
carrier
=
NULL
;
csirep1
->
reportConfigId
=
0
;
csirep1
->
resourcesForChannelMeasurement
=
bwp
->
bwp_Id
;
csirep1
->
carrier
=
NULL
;
csirep1
->
csi_IM_ResourcesForInterference
=
calloc
(
1
,
sizeof
(
*
csirep1
->
csi_IM_ResourcesForInterference
));
csirep1
->
resourcesForChannelMeasurement
=
0
;
*
csirep1
->
csi_IM_ResourcesForInterference
=
bwp
->
bwp_Id
+
10
;
csirep1
->
csi_IM_ResourcesForInterference
=
calloc
(
1
,
sizeof
(
*
csirep1
->
csi_IM_ResourcesForInterference
));
csirep1
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
*
csirep1
->
csi_IM_ResourcesForInterference
=
2
;
csirep1
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep1
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep1
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportConfigType
.
choice
.
periodic
));
csirep1
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep1
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportConfigType
.
choice
.
periodic
));
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
9
+
(
20
*
uid
)
%
320
;
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
ASN_SEQUENCE_ADD
(
&
csirep1
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep1
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
9
+
(
20
*
uid
)
%
320
;
csirep1
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI
;
ASN_SEQUENCE_ADD
(
&
csirep1
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep1
->
reportQuantity
.
choice
.
cri_RI_PMI_CQI
=
(
NULL_t
)
0
;
csirep1
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI
;
csirep1
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
));
csirep1
->
reportQuantity
.
choice
.
cri_RI_PMI_CQI
=
(
NULL_t
)
0
;
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
));
csirep1
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
));
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI
;
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
));
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
));
*
csirep1
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI
;
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI
;
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
));
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
));
*
csirep1
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
present
=
NR_CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands7
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
=
calloc
(
1
,
sizeof
(
*
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
));
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
size
=
1
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
present
=
NR_CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands7
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
bits_unused
=
1
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
size
=
1
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
buf
=
malloc
(
1
);
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
bits_unused
=
1
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
buf
[
0
]
=
254
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
buf
=
malloc
(
1
);
csirep1
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep1
->
reportFreqConfiguration
->
csi_ReportingBand
->
choice
.
subbands7
.
buf
[
0
]
=
254
;
csirep1
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep1
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep1
->
codebookConfig
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
));
csirep1
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep1
->
codebookConfig
->
codebookType
.
present
=
NR_CodebookConfig__codebookType_PR_type1
;
csirep1
->
codebookConfig
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
));
csirep1
->
codebookConfig
->
codebookType
.
present
=
NR_CodebookConfig__codebookType_PR_type1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
present
=
NR_CodebookConfig__codebookType__type1__subType_PR_typeI_SinglePanel
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
present
=
NR_CodebookConfig__codebookType__type1__subType_PR_typeI_SinglePanel
;
if
(
dl_antenna_ports
==
2
)
{
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
=
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
if
(
dl_antenna_ports
==
2
)
{
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_two
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_two
;
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
=
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
size
=
1
;
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
bits_unused
=
2
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
bits_unused
=
2
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
[
0
]
=
0xfc
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
two
->
twoTX_CodebookSubsetRestriction
.
buf
[
0
]
=
0xfc
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
bits_unused
=
0
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
size
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
bits_unused
=
0
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
[
0
]
=
0x03
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
=
malloc
(
1
);
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
typeI_SinglePanel_ri_Restriction
.
buf
[
0
]
=
0x03
;
}
else
if
(
dl_antenna_ports
<
16
)
{
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
}
else
if
(
dl_antenna_ports
<
16
)
{
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_moreThanTwo
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
present
=
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_moreThanTwo
;
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
));
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
=
if
(
dl_antenna_ports
==
4
)
calloc
(
1
,
sizeof
(
*
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
));
if
(
dl_antenna_ports
==
4
)
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_one_TypeI_SinglePanel_Restriction
;
else
if
(
dl_antenna_ports
==
8
)
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_one_TypeI_SinglePanel_Restriction
;
else
if
(
dl_antenna_ports
==
12
)
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_six_one_TypeI_SinglePanel_Restriction
;
else
//default
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_one_TypeI_SinglePanel_Restriction
;
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_one_TypeI_SinglePanel_Restriction
;
else
if
(
dl_antenna_ports
==
8
)
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_one_TypeI_SinglePanel_Restriction
;
else
if
(
dl_antenna_ports
==
12
)
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_six_one_TypeI_SinglePanel_Restriction
;
else
//default
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
subType
.
choice
.
typeI_SinglePanel
->
nrOfAntennaPorts
.
choice
.
moreThanTwo
->
n1_n2
.
present
=
NR_CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_one_TypeI_SinglePanel_Restriction
;
/*csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->n1_n2.choice.two_one_TypeI_SinglePanel_Restriction.size=1;
/*csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->n1_n2.choice.two_one_TypeI_SinglePanel_Restriction.size=1;
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->n1_n2.choice.two_one_TypeI_SinglePanel_Restriction.bits_unused=1;
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->n1_n2.choice.two_one_TypeI_SinglePanel_Restriction.bits_unused=1;
...
@@ -797,86 +797,88 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
...
@@ -797,86 +797,88 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->bits_unused=1;
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->bits_unused=1;
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->buf=malloc(1);
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->buf=malloc(1);
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->buf[0]=0xc0;*/
csirep1->codebookConfig->codebookType.choice.type1->subType.choice.typeI_SinglePanel->nrOfAntennaPorts.choice.moreThanTwo->typeI_SinglePanel_codebookSubsetRestriction_i2->buf[0]=0xc0;*/
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
1
;
}
else
{
//32 antennas are Not implemented yet
}
else
{
//32 antennas are Not implemented yet
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
2
;
csirep1
->
codebookConfig
->
codebookType
.
choice
.
type1
->
codebookMode
=
2
;
}
csirep1
->
dummy
=
NULL
;
csirep1
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
));
//csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS = calloc(1,sizeof(*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS));
//*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS=NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1;
csirep1
->
cqi_Table
=
calloc
(
1
,
sizeof
(
*
csirep1
->
cqi_Table
));
if
(
bwp
->
bwp_Dedicated
->
pdsch_Config
->
choice
.
setup
->
mcs_Table
!=
NULL
)
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table2
;
else
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table1
;
csirep1
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value2
;
csirep1
->
non_PMI_PortIndication
=
NULL
;
csirep1
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep1
);
}
}
csirep1
->
dummy
=
NULL
;
csirep1
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
));
//csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS = calloc(1,sizeof(*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS));
//*csirep1->groupBasedBeamReporting.choice.disabled->nrofReportedRS=NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1;
csirep1
->
cqi_Table
=
calloc
(
1
,
sizeof
(
*
csirep1
->
cqi_Table
));
*
csirep1
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_table1
;
csirep1
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value2
;
csirep1
->
non_PMI_PortIndication
=
NULL
;
csirep1
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep1
);
}
if
(
do_csirs
)
{
if
(
do_csirs
)
{
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
csirep2
->
reportConfigId
=
1
;
csirep2
->
reportConfigId
=
bwp
->
bwp_Id
+
10
;
csirep2
->
carrier
=
NULL
;
csirep2
->
carrier
=
NULL
;
csirep2
->
resourcesForChannelMeasurement
=
0
;
csirep2
->
resourcesForChannelMeasurement
=
bwp
->
bwp_Id
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
29
+
(
20
*
uid
)
%
320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
29
+
(
20
*
uid
)
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP
;
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP
;
csirep2
->
reportQuantity
.
choice
.
cri_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportQuantity
.
choice
.
cri_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportFreqConfiguration
));
csirep2
->
reportFreqConfiguration
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportFreqConfiguration
));
csirep2
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NULL
;
csirep2
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
csirep2
->
reportFreqConfiguration
->
csi_ReportingBand
=
NULL
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
csirep2
->
cqi_Table
=
NULL
;
csirep2
->
cqi_Table
=
NULL
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value1
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value1
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
ext1
=
NULL
;
csirep2
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
);
}
}
else
{
else
{
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
NR_CSI_ReportConfig_t
*
csirep2
=
calloc
(
1
,
sizeof
(
*
csirep2
));
csirep2
->
reportConfigId
=
1
;
csirep2
->
reportConfigId
=
bwp
->
bwp_Id
+
10
;
csirep2
->
carrier
=
NULL
;
csirep2
->
carrier
=
NULL
;
csirep2
->
resourcesForChannelMeasurement
=
1
;
csirep2
->
resourcesForChannelMeasurement
=
1
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
csi_IM_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
nzp_CSI_RS_ResourcesForInterference
=
NULL
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
present
=
NR_CSI_ReportConfig__reportConfigType_PR_periodic
;
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportConfigType
.
choice
.
periodic
));
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
=
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
29
+
(
20
*
uid
)
%
320
;
csirep2
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
=
29
+
(
20
*
uid
)
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP
;
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP
;
csirep2
->
reportQuantity
.
choice
.
ssb_Index_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportQuantity
.
choice
.
ssb_Index_RSRP
=
(
NULL_t
)
0
;
csirep2
->
reportFreqConfiguration
=
NULL
;
csirep2
->
reportFreqConfiguration
=
NULL
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
codebookConfig
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
dummy
=
NULL
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
calloc
(
1
,
sizeof
(
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
));
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
*
csirep2
->
groupBasedBeamReporting
.
choice
.
disabled
->
nrofReportedRS
=
NR_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1
;
csirep2
->
cqi_Table
=
calloc
(
1
,
sizeof
(
*
csirep2
->
cqi_Table
))
;
csirep2
->
cqi_Table
=
NULL
;
*
csirep2
->
cqi_Table
=
NR_CSI_ReportConfig__cqi_Table_tabl
e1
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_valu
e1
;
csirep2
->
subbandSize
=
NR_CSI_ReportConfig__subbandSize_value1
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
non_PMI_PortIndication
=
NULL
;
csirep2
->
ext1
=
NULL
;
csirep2
->
ext1
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
)
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
,
csirep2
);
}
}
}
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
sCellDeactivationTimer
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
sCellDeactivationTimer
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
crossCarrierSchedulingConfig
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
crossCarrierSchedulingConfig
=
NULL
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
tag_Id
=
0
;
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
tag_Id
=
0
;
...
...
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