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
lizhongxiao
OpenXG-RAN
Commits
df506e96
Commit
df506e96
authored
May 10, 2022
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/NR_CSI_IM_harmonization' into integration_2022_wk19
parents
020c4c52
68fc56ad
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
102 additions
and
64 deletions
+102
-64
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+2
-32
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+97
-0
openair2/RRC/NR/nr_rrc_config.h
openair2/RRC/NR/nr_rrc_config.h
+2
-0
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+1
-32
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
df506e96
...
...
@@ -1412,39 +1412,9 @@ void fill_initial_SpCellConfig(int uid,
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
;
if
(
pdsch_AntennaPorts
>
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_ResourceSetToReleaseList
=
NULL
;
config_csirs
(
scc
,
csi_MeasConfig
,
uid
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
);
config_csirs
(
scc
,
csi_MeasConfig
,
uid
,
pdsch_AntennaPorts
,
curr_bwp
,
configuration
->
do_CSIRS
);
config_csiim
(
configuration
->
do_CSIRS
,
pdsch_AntennaPorts
,
curr_bwp
,
csi_MeasConfig
);
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
NULL
;
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
df506e96
...
...
@@ -170,6 +170,103 @@ void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon,
csi_MeasConfig
->
nzp_CSI_RS_ResourceToReleaseList
=
NULL
;
}
void
set_csiim_offset
(
struct
NR_CSI_ResourcePeriodicityAndOffset
*
periodicityAndOffset
,
struct
NR_CSI_ResourcePeriodicityAndOffset
*
target_periodicityAndOffset
)
{
switch
(
periodicityAndOffset
->
present
)
{
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots4
:
periodicityAndOffset
->
choice
.
slots4
=
target_periodicityAndOffset
->
choice
.
slots4
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots5
:
periodicityAndOffset
->
choice
.
slots5
=
target_periodicityAndOffset
->
choice
.
slots5
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots8
:
periodicityAndOffset
->
choice
.
slots8
=
target_periodicityAndOffset
->
choice
.
slots8
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots10
:
periodicityAndOffset
->
choice
.
slots10
=
target_periodicityAndOffset
->
choice
.
slots10
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots16
:
periodicityAndOffset
->
choice
.
slots16
=
target_periodicityAndOffset
->
choice
.
slots16
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots20
:
periodicityAndOffset
->
choice
.
slots20
=
target_periodicityAndOffset
->
choice
.
slots20
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots32
:
periodicityAndOffset
->
choice
.
slots32
=
target_periodicityAndOffset
->
choice
.
slots32
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots40
:
periodicityAndOffset
->
choice
.
slots40
=
target_periodicityAndOffset
->
choice
.
slots40
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots64
:
periodicityAndOffset
->
choice
.
slots64
=
target_periodicityAndOffset
->
choice
.
slots64
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots80
:
periodicityAndOffset
->
choice
.
slots80
=
target_periodicityAndOffset
->
choice
.
slots80
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots160
:
periodicityAndOffset
->
choice
.
slots160
=
target_periodicityAndOffset
->
choice
.
slots160
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots320
:
periodicityAndOffset
->
choice
.
slots320
=
target_periodicityAndOffset
->
choice
.
slots320
;
break
;
case
NR_CSI_ResourcePeriodicityAndOffset_PR_slots640
:
periodicityAndOffset
->
choice
.
slots640
=
target_periodicityAndOffset
->
choice
.
slots640
;
break
;
default:
AssertFatal
(
1
==
0
,
"CSI periodicity not among allowed values
\n
"
);
}
}
void
config_csiim
(
int
do_csirs
,
int
dl_antenna_ports
,
int
curr_bwp
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
)
{
if
(
do_csirs
&&
dl_antenna_ports
>
1
)
{
csi_MeasConfig
->
csi_IM_ResourceToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_IM_ResourceToAddModList
));
NR_CSI_IM_Resource_t
*
imres
=
calloc
(
1
,
sizeof
(
*
imres
));
imres
->
csi_IM_ResourceId
=
0
;
NR_NZP_CSI_RS_Resource_t
*
nzpcsi
=
NULL
;
for
(
int
i
=
0
;
i
<
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
->
list
.
count
;
i
++
){
nzpcsi
=
csi_MeasConfig
->
nzp_CSI_RS_ResourceToAddModList
->
list
.
array
[
i
];
if
(
nzpcsi
->
nzp_CSI_RS_ResourceId
==
imres
->
csi_IM_ResourceId
)
break
;
}
AssertFatal
(
nzpcsi
->
nzp_CSI_RS_ResourceId
==
imres
->
csi_IM_ResourceId
,
"Couldn't find NZP CSI-RS corresponding to CSI-IM
\n
"
);
imres
->
csi_IM_ResourceElementPattern
=
calloc
(
1
,
sizeof
(
*
imres
->
csi_IM_ResourceElementPattern
));
imres
->
csi_IM_ResourceElementPattern
->
present
=
NR_CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern1
;
imres
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
=
calloc
(
1
,
sizeof
(
*
imres
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
));
// starting subcarrier is 4 in the following configuration
// this is ok for current possible CSI-RS configurations (using only the first 4 symbols)
// TODO needs a more dynamic setting if CSI-RS is changed
imres
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
->
subcarrierLocation_p1
=
NR_CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1_s4
;
imres
->
csi_IM_ResourceElementPattern
->
choice
.
pattern1
->
symbolLocation_p1
=
nzpcsi
->
resourceMapping
.
firstOFDMSymbolInTimeDomain
;
// same symbol as CSI-RS
imres
->
freqBand
=
calloc
(
1
,
sizeof
(
*
imres
->
freqBand
));
imres
->
freqBand
->
startingRB
=
0
;
imres
->
freqBand
->
nrofRBs
=
((
curr_bwp
>>
2
)
+
(
curr_bwp
%
4
>
0
))
<<
2
;
imres
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
imres
->
periodicityAndOffset
));
// same period and offset of the associated CSI-RS
imres
->
periodicityAndOffset
->
present
=
nzpcsi
->
periodicityAndOffset
->
present
;
set_csiim_offset
(
imres
->
periodicityAndOffset
,
nzpcsi
->
periodicityAndOffset
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_IM_ResourceToAddModList
->
list
,
imres
);
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
));
NR_CSI_IM_ResourceSet_t
*
imset
=
calloc
(
1
,
sizeof
(
*
imset
));
imset
->
csi_IM_ResourceSetId
=
0
;
NR_CSI_IM_ResourceId_t
*
res
=
calloc
(
1
,
sizeof
(
*
res
));
*
res
=
imres
->
csi_IM_ResourceId
;
ASN_SEQUENCE_ADD
(
&
imset
->
csi_IM_Resources
,
res
);
ASN_SEQUENCE_ADD
(
&
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
->
list
,
imset
);
}
else
{
csi_MeasConfig
->
csi_IM_ResourceToAddModList
=
NULL
;
csi_MeasConfig
->
csi_IM_ResourceSetToAddModList
=
NULL
;
}
csi_MeasConfig
->
csi_IM_ResourceToReleaseList
=
NULL
;
csi_MeasConfig
->
csi_IM_ResourceSetToReleaseList
=
NULL
;
}
void
prepare_sim_uecap
(
NR_UE_NR_Capability_t
*
cap
,
NR_ServingCellConfigCommon_t
*
scc
,
int
numerology
,
...
...
openair2/RRC/NR/nr_rrc_config.h
View file @
df506e96
...
...
@@ -119,6 +119,8 @@ void config_csirs(NR_ServingCellConfigCommon_t *servingcellconfigcommon,
int
num_dl_antenna_ports
,
int
curr_bwp
,
int
do_csirs
);
void
config_csiim
(
int
do_csirs
,
int
dl_antenna_ports
,
int
curr_bwp
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
);
void
set_dl_mcs_table
(
int
scs
,
NR_UE_NR_Capability_t
*
cap
,
NR_SpCellConfig_t
*
SpCellConfig
,
NR_BWP_DownlinkDedicated_t
*
bwp_Dedicated
,
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
df506e96
...
...
@@ -1034,39 +1034,8 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
NR_CSI_MeasConfig_t
*
csi_MeasConfig
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
));
secondaryCellGroup
->
spCellConfig
->
spCellConfigDedicated
->
csi_MeasConfig
->
choice
.
setup
=
csi_MeasConfig
;
if
(
do_csirs
&&
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
=
((
curr_bwp
>>
2
)
+
(
curr_bwp
%
4
>
0
))
<<
2
;
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_ResourceSetToReleaseList
=
NULL
;
config_csirs
(
servingcellconfigcommon
,
csi_MeasConfig
,
uid
,
dl_antenna_ports
,
curr_bwp
,
do_csirs
);
config_csiim
(
do_csirs
,
dl_antenna_ports
,
curr_bwp
,
csi_MeasConfig
);
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
));
csi_MeasConfig
->
csi_SSB_ResourceSetToReleaseList
=
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