Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG-RAN
Commits
dd8f2808
Commit
dd8f2808
authored
Nov 25, 2022
by
Roberto Louro Magueta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SRS configured using the UE_Capability_nr
parent
22e1cdfc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
54 additions
and
13 deletions
+54
-13
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+54
-13
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
dd8f2808
...
...
@@ -1062,24 +1062,58 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
NR_ServingCellConfigCommon_t
*
scc
=
configuration
?
configuration
->
scc
:
NULL
;
if
(
scc
)
{
int
curr_bwp
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
int
curr_bwp
=
NRRIV2BW
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
NR_UplinkConfig_t
*
uplinkConfig
=
SpCellConfig
&&
SpCellConfig
->
spCellConfigDedicated
?
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
:
NULL
;
uint8_t
ul_max_layers
=
1
;
if
(
uecap
&&
uecap
->
featureSets
&&
uecap
->
featureSets
->
featureSetsUplinkPerCC
&&
uecap
->
featureSets
->
featureSetsUplinkPerCC
->
list
.
count
>
0
)
{
NR_FeatureSetUplinkPerCC_t
*
ul_feature_setup_per_cc
=
uecap
->
featureSets
->
featureSetsUplinkPerCC
->
list
.
array
[
0
];
if
(
ul_feature_setup_per_cc
->
mimo_CB_PUSCH
->
maxNumberMIMO_LayersCB_PUSCH
)
{
switch
(
*
ul_feature_setup_per_cc
->
mimo_CB_PUSCH
->
maxNumberMIMO_LayersCB_PUSCH
)
{
case
NR_MIMO_LayersUL_twoLayers
:
ul_max_layers
=
2
;
break
;
case
NR_MIMO_LayersUL_fourLayers
:
ul_max_layers
=
4
;
break
;
default:
ul_max_layers
=
1
;
}
}
ul_max_layers
=
min
(
ul_max_layers
,
configuration
->
pusch_AntennaPorts
);
if
(
uplinkConfig
->
initialUplinkBWP
->
pusch_Config
)
{
NR_PUSCH_Config_t
*
pusch_Config
=
uplinkConfig
->
initialUplinkBWP
->
pusch_Config
->
choice
.
setup
;
if
(
pusch_Config
->
maxRank
==
NULL
)
{
pusch_Config
->
maxRank
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
maxRank
));
}
*
pusch_Config
->
maxRank
=
ul_max_layers
;
}
if
(
uplinkConfig
->
pusch_ServingCellConfig
==
NULL
)
{
uplinkConfig
->
pusch_ServingCellConfig
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
pusch_ServingCellConfig
));
uplinkConfig
->
pusch_ServingCellConfig
->
present
=
NR_SetupRelease_PUSCH_ServingCellConfig_PR_setup
;
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
));
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
));
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
));
}
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
=
ul_max_layers
;
}
long
maxMIMO_Layers
=
uplinkConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
&&
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
?
*
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
// SRS configuration
if
(
configuration
->
do_SRS
&&
SpCellConfig
&&
SpCellConfig
->
spCellConfigDedicated
&&
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
&&
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
)
{
if
(
!
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
)
{
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
));
// UL and SRS configuration
if
(
configuration
->
do_SRS
&&
uplinkConfig
&&
uplinkConfig
->
initialUplinkBWP
)
{
if
(
!
uplinkConfig
->
initialUplinkBWP
->
srs_Config
)
{
uplinkConfig
->
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
uplinkConfig
->
initialUplinkBWP
->
srs_Config
));
}
config_srs
(
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
,
config_srs
(
uplinkConfig
->
initialUplinkBWP
->
srs_Config
,
uecap
,
curr_bwp
,
uid
,
...
...
@@ -1093,7 +1127,7 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
set_dl_mcs_table
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
subcarrierSpacing
,
configuration
->
force_256qam_off
?
NULL
:
uecap
,
bwp_Dedicated
,
scc
);
struct
NR_ServingCellConfig__downlinkBWP_ToAddModList
*
DL_BWP_list
=
SpCellConfig
->
spCellConfigDedicated
->
downlinkBWP_ToAddModList
;
struct
NR_UplinkConfig__uplinkBWP_ToAddModList
*
UL_BWP_list
=
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
;
struct
NR_UplinkConfig__uplinkBWP_ToAddModList
*
UL_BWP_list
=
uplinkConfig
->
uplinkBWP_ToAddModList
;
if
(
DL_BWP_list
)
{
for
(
int
i
=
0
;
i
<
DL_BWP_list
->
list
.
count
;
i
++
){
NR_BWP_Downlink_t
*
bwp
=
DL_BWP_list
->
list
.
array
[
i
];
...
...
@@ -1101,10 +1135,17 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
set_dl_mcs_table
(
scs
,
configuration
->
force_256qam_off
?
NULL
:
uecap
,
bwp
->
bwp_Dedicated
,
scc
);
}
}
if
(
UL_BWP_list
)
{
if
(
configuration
->
do_SRS
&&
UL_BWP_list
)
{
for
(
int
i
=
0
;
i
<
UL_BWP_list
->
list
.
count
;
i
++
)
{
NR_BWP_Uplink_t
*
ul_bwp
=
UL_BWP_list
->
list
.
array
[
i
];
int
bwp_size
=
NRRIV2BW
(
ul_bwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
if
(
ul_bwp
->
bwp_Dedicated
->
pusch_Config
)
{
NR_PUSCH_Config_t
*
pusch_Config
=
ul_bwp
->
bwp_Dedicated
->
pusch_Config
->
choice
.
setup
;
if
(
pusch_Config
->
maxRank
==
NULL
)
{
pusch_Config
->
maxRank
=
calloc
(
1
,
sizeof
(
*
pusch_Config
->
maxRank
));
}
*
pusch_Config
->
maxRank
=
ul_max_layers
;
}
config_srs
(
ul_bwp
->
bwp_Dedicated
->
srs_Config
,
uecap
,
bwp_size
,
...
...
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