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
zzha zzha
OpenXG-RAN
Commits
580f56c8
Commit
580f56c8
authored
Feb 22, 2022
by
rmagueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Implementation of fill_default_csi_MeasConfig"
This reverts commit
777074ff
.
parent
777074ff
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
4 additions
and
327 deletions
+4
-327
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+0
-326
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+4
-1
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
580f56c8
...
@@ -1004,322 +1004,6 @@ long rrc_get_max_nr_csrs(uint8_t max_rbs, long b_SRS) {
...
@@ -1004,322 +1004,6 @@ long rrc_get_max_nr_csrs(uint8_t max_rbs, long b_SRS) {
return
c_srs
;
return
c_srs
;
}
}
// There are two types of signal which can used for CSI report:
// - SSB
// - CSI-RS.
//
// Two interference measurement methods for 5G NR are:
// - CSI-IM:
// Channel state information interference measurement;
// It can be used for measuring inter cell interference, in this case source cell does not transmit anything
// and measure interference from neighboring cells.
// - NZP CSI-RS:
// Non-zero-power channel state information reference signal;
// It can be used for measuring intra cell interference from other UEs of same cell.
//
// NZP-CSI-RS resource, ZP-CSI-RS resource, IM Resource:
// - These parameters define the location of physical resource element of the various CSI-RS.
//
// The RRC message information element for these resources is in:
// - PDSCH-Config: zp-CSI-RS-ResourceToAddModList -> ZP-CSI-RS-Resource -> CSI-RS-ResourceMapping
// - CSI-MeasConfig: nzp-CSI-RS-ResourceToAddModList -> NZP-CSI-RS-Resource -> CSI-RS-ResourceMapping
// csi-IM-ResourceToAddModList -> CSI-IM-Resource
//
// ResourceSet: Group where the individual resource belongs. The ResourceSet is configured in the following RRC.
// - nzp-CSI-RS-ResourceSetToAddModList->NZP-CSI-RS-ResourceSet->nzp-CSI-RS-Resources
// - csi-SSB-ResourceSetToAddModList -> CSI-SSB-ResourceSet -> SSB-Index
void
fill_default_csi_MeasConfig
(
int
uid
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
NR_ServingCellConfigCommon_t
*
scc
,
int
dl_antenna_ports
)
{
/// CSI-IM
if
(
dl_antenna_ports
>
1
)
{
csi_MeasConfig
->
csi_IM_ResourceToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_IM_ResourceToAddModList
));
NR_CSI_IM_Resource_t
*
imres0
=
calloc
(
1
,
sizeof
(
*
imres0
));
imres0
->
csi_IM_ResourceId
=
0
;
imres0
->
csi_IM_ResourceElementPattern
=
calloc
(
1
,
sizeof
(
*
imres0
->
csi_IM_ResourceElementPattern
));
imres0
->
csi_IM_ResourceElementPattern
->
present
=
NR_CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern1
;
imres0
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
=
calloc
(
1
,
sizeof
(
*
imres0
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
));
imres0
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
->
subcarrierLocation_p1
=
NR_CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1_s4
;
imres0
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
->
symbolLocation_p1
=
6
;
imres0
->
freqBand
=
calloc
(
1
,
sizeof
(
*
imres0
->
freqBand
));
imres0
->
freqBand
->
startingRB
=
0
;
imres0
->
freqBand
->
nrofRBs
=
108
;
imres0
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
imres0
->
periodicityAndOffset
));
imres0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
;
imres0
->
periodicityAndOffset
->
choice
.
slots320
=
0
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_IM_ResourceToAddModList
->
list
,
imres0
);
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
));
NR_CSI_IM_ResourceSet_t
*
imset0
=
calloc
(
1
,
sizeof
(
*
imset0
));
imset0
->
csi_IM_ResourceSetId
=
0
;
NR_CSI_IM_ResourceId_t
*
res0
=
calloc
(
1
,
sizeof
(
*
res0
));
*
res0
=
0
;
ASN_SEQUENCE_ADD
(
&
imset0
->
csi_IM_Resources
,
res0
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
->
list
,
imset0
);
}
else
{
csi_MeasConfig
->
csi_IM_ResourceToAddModList
=
NULL
;
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
=
NULL
;
}
csi_MeasConfig
->
csi_IM_ResourceToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
=
NULL
;
csi_MeasConfig
->
csi_IM_ResourceSetToReleaseList
=
NULL
;
/// NZP CSI-RS
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
));
NR_NZP_CSI_RS_ResourceSet_t
*
nzpcsirs0
=
calloc
(
1
,
sizeof
(
*
nzpcsirs0
));
nzpcsirs0
->
nzp_CSI_ResourceSetId
=
0
;
NR_NZP_CSI_RS_ResourceId_t
*
nzpid0
=
calloc
(
1
,
sizeof
(
*
nzpid0
));
*
nzpid0
=
0
;
ASN_SEQUENCE_ADD
(
&
nzpcsirs0
->
nzp_CSI_RS_Resources
,
nzpid0
);
nzpcsirs0
->
repetition
=
NULL
;
nzpcsirs0
->
aperiodicTriggeringOffset
=
NULL
;
nzpcsirs0
->
trs_Info
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToAddModList
->
list
,
nzpcsirs0
);
csi_MeasConfig
->
nzp_CSI_RS_ResourceSetToReleaseList
=
NULL
;
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
));
NR_NZP_CSI_RS_Resource_t
*
nzpcsi0
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
));
nzpcsi0
->
nzp_CSI_RS_ResourceId
=
0
;
NR_CSI_RS_ResourceMapping_t
resourceMapping
;
switch
(
dl_antenna_ports
)
{
case
1
:
resourceMapping
.
frequencyDomainAllocation
.
present
=
NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row2
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
buf
=
calloc
(
2
,
sizeof
(
uint8_t
));
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
size
=
2
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
bits_unused
=
4
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
buf
[
0
]
=
0
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
buf
[
1
]
=
16
;
resourceMapping
.
nrofPorts
=
NR_CSI_RS_ResourceMapping__nrofPorts_p1
;
resourceMapping
.
cdm_Type
=
NR_CSI_RS_ResourceMapping__cdm_Type_noCDM
;
break
;
case
2
:
resourceMapping
.
frequencyDomainAllocation
.
present
=
NR_CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_other
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
buf
=
calloc
(
2
,
sizeof
(
uint8_t
));
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
size
=
1
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
bits_unused
=
2
;
resourceMapping
.
frequencyDomainAllocation
.
choice
.
row2
.
buf
[
0
]
=
4
;
resourceMapping
.
nrofPorts
=
NR_CSI_RS_ResourceMapping__nrofPorts_p2
;
resourceMapping
.
cdm_Type
=
NR_CSI_RS_ResourceMapping__cdm_Type_fd_CDM2
;
break
;
default:
AssertFatal
(
1
==
0
,
"Number of ports not yet supported
\n
"
);
}
resourceMapping
.
firstOFDMSymbolInTimeDomain
=
6
;
resourceMapping
.
firstOFDMSymbolInTimeDomain2
=
NULL
;
resourceMapping
.
density
.
present
=
NR_CSI_RS_ResourceMapping__density_PR_one
;
resourceMapping
.
density
.
choice
.
one
=
(
NULL_t
)
0
;
resourceMapping
.
freqBand
.
startingRB
=
0
;
resourceMapping
.
freqBand
.
nrofRBs
=
108
;
nzpcsi0
->
resourceMapping
=
resourceMapping
;
nzpcsi0
->
powerControlOffset
=
0
;
nzpcsi0
->
powerControlOffsetSS
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
powerControlOffsetSS
));
*
nzpcsi0
->
powerControlOffsetSS
=
NR_NZP_CSI_RS_Resource__powerControlOffsetSS_db0
;
nzpcsi0
->
scramblingID
=
*
scc
->
physCellId
;
nzpcsi0
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
periodicityAndOffset
));
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
;
nzpcsi0
->
periodicityAndOffset
->
choice
.
slots320
=
0
;
nzpcsi0
->
qcl_InfoPeriodicCSI_RS
=
NULL
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
->
list
,
nzpcsi0
);
/// SSB
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 ResourceConfig: specifies on what type of reference signal (nzp-CSI-RS-SSB, csi-IM-Resource) is to be transmitted.
// It also configures the types of the transmission (periodic, aperiodic, semipersistent). The Resource element and
// ResourceSet just defines the structure of the CSI resources. It is CSI ResourceConfig that triggers the transmission of the resources.
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
=
1
;
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
=
1
;
csires1
->
resourceType
=
NR_CSI_ResourceConfig__resourceType_periodic
;
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires1
);
if
(
dl_antenna_ports
>
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
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
,
csires2
);
}
NR_PUCCH_CSI_Resource_t
*
pucchcsires1
=
calloc
(
1
,
sizeof
(
*
pucchcsires1
));
pucchcsires1
->
uplinkBandwidthPartId
=
1
;
pucchcsires1
->
pucch_Resource
=
2
;
// ReportConfig: specifies which of CSI ResourceConfig to be used for the measurement. It has the mapping table
// between the measurement type and the corresponding CSI ResourceConfig.
csi_MeasConfig
->
csi_ReportConfigToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_ReportConfigToAddModList
));
csi_MeasConfig
->
csi_ReportConfigToReleaseList
=
NULL
;
if
(
dl_antenna_ports
>
1
)
{
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
;
// reportConfigType: this parameter indicates the scheduling method of the report. It can be periodic, aperiodic and semiPersistent.
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
=
9
+
(
20
*
uid
)
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep1
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
// reportQuantity: this parameter indicates what to measure (CSI or L1-RSRP related quantities)
csirep1
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI
;
csirep1
->
reportQuantity
.
choice
.
cri_RI_PMI_CQI
=
(
NULL_t
)
0
;
// reportFreqConfiguration: this indicates the reporting granularity in frequency domain. It can be wideband or subband.
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
=
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
;
// timeRestrictionForChannelMeasurements: It indicates whether to put the restriction on channel measurement in time domain or not.
csirep1
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
// timeRestrictionForInterferenceMeasurements: It indicates whether to put the restriction on interference measurement in time domain or not.
csirep1
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
// codebookConfig: It configures the parameters for type 1 and type 2.
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
;
// dummy: This field is not used in the specification(38.331-v15.7). If received it shall be ignored by the UE.
csirep1
->
dummy
=
NULL
;
csirep1
->
groupBasedBeamReporting
.
present
=
NR_CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
;
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
=
calloc
(
1
,
sizeof
(
*
csirep1
->
groupBasedBeamReporting
.
choice
.
disabled
));
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
);
}
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
;
// reportConfigType: this parameter indicates the scheduling method of the report. It can be periodic, aperiodic and semiPersistent.
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
=
29
+
(
20
*
uid
)
%
320
;
ASN_SEQUENCE_ADD
(
&
csirep2
->
reportConfigType
.
choice
.
periodic
->
pucch_CSI_ResourceList
.
list
,
pucchcsires1
);
// reportQuantity: this parameter indicates what to measure (CSI or L1-RSRP related quantities)
csirep2
->
reportQuantity
.
present
=
NR_CSI_ReportConfig__reportQuantity_PR_cri_RSRP
;
csirep2
->
reportQuantity
.
choice
.
cri_RSRP
=
(
NULL_t
)
0
;
// reportFreqConfiguration: this indicates the reporting granularity in frequency domain. It can be wideband or subband.
csirep2
->
reportFreqConfiguration
=
NULL
;
// timeRestrictionForChannelMeasurements: It indicates whether to put the restriction on channel measurement in time domain or not.
csirep2
->
timeRestrictionForChannelMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured
;
// timeRestrictionForInterferenceMeasurements: It indicates whether to put the restriction on interference measurement in time domain or not.
csirep2
->
timeRestrictionForInterferenceMeasurements
=
NR_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured
;
// codebookConfig: It configures the parameters for type 1 and type 2.
csirep2
->
codebookConfig
=
NULL
;
// dummy: This field is not used in the specification(38.331-v15.7). If received it shall be ignored by the UE.
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
);
}
void
fill_initial_SpCellConfig
(
int
uid
,
void
fill_initial_SpCellConfig
(
int
uid
,
NR_SpCellConfig_t
*
SpCellConfig
,
NR_SpCellConfig_t
*
SpCellConfig
,
NR_ServingCellConfigCommon_t
*
scc
,
NR_ServingCellConfigCommon_t
*
scc
,
...
@@ -1675,16 +1359,6 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1675,16 +1359,6 @@ void fill_initial_SpCellConfig(int uid,
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
));
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
calloc
(
1
,
sizeof
(
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
));
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
2
;
*
pdsch_servingcellconfig
->
ext1
->
maxMIMO_Layers
=
2
;
if
(
carrier
->
do_CSIRS
)
{
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
));
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
present
=
NR_SetupRelease_CSI_MeasConfig_PR_setup
;
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
));
fill_default_csi_MeasConfig
(
uid
,
SpCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
,
scc
,
carrier
->
pdsch_AntennaPorts
);
}
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
)
)
{
xer_fprint
(
stdout
,
&
asn_DEF_NR_SpCellConfig
,
(
const
void
*
)
SpCellConfig
);
}
}
}
void
fill_mastercellGroupConfig
(
NR_CellGroupConfig_t
*
cellGroupConfig
,
NR_CellGroupConfig_t
*
ue_context_mastercellGroup
)
{
void
fill_mastercellGroupConfig
(
NR_CellGroupConfig_t
*
cellGroupConfig
,
NR_CellGroupConfig_t
*
ue_context_mastercellGroup
)
{
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
580f56c8
...
@@ -1285,7 +1285,10 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
...
@@ -1285,7 +1285,10 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
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
=
calloc
(
1
,
sizeof
(
*
csirep2
->
reportFreqConfiguration
));
csirep2
->
reportFreqConfiguration
->
cqi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI
;
csirep2
->
reportFreqConfiguration
->
pmi_FormatIndicator
=
NR_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI
;
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
;
...
...
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