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
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
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
OpenXG
OpenXG-RAN
Commits
230a6c3f
Commit
230a6c3f
authored
Nov 21, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more generic periodic SRS configuration
parent
f7c3874e
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
89 additions
and
12 deletions
+89
-12
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+5
-3
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+81
-7
openair2/RRC/NR/nr_rrc_config.h
openair2/RRC/NR/nr_rrc_config.h
+2
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+1
-1
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
230a6c3f
...
...
@@ -748,7 +748,7 @@ void fill_initial_SpCellConfig(int uid,
// We are using do_srs = 0 here because the periodic SRS will only be enabled in update_cellGroupConfig() if do_srs == 1
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
0
);
config_srs
(
scc
,
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
0
);
scheduling_request_config
(
scc
,
pucch_Config
);
...
...
@@ -1198,7 +1198,8 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
));
}
config_srs
(
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
,
config_srs
(
scc
,
SpCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
initialUplinkBWP
->
srs_Config
,
uecap
,
curr_bwp
,
uid
,
...
...
@@ -1224,7 +1225,8 @@ void update_cellGroupConfig(NR_CellGroupConfig_t *cellGroupConfig,
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
);
config_srs
(
ul_bwp
->
bwp_Dedicated
->
srs_Config
,
config_srs
(
scc
,
ul_bwp
->
bwp_Dedicated
->
srs_Config
,
uecap
,
bwp_size
,
uid
,
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
230a6c3f
...
...
@@ -140,7 +140,7 @@ uint64_t get_ssb_bitmap(const NR_ServingCellConfigCommon_t *scc) {
void
set_csirs_periodicity
(
NR_NZP_CSI_RS_Resource_t
*
nzpcsi0
,
int
uid
,
int
nb_slots_per_period
)
{
nzpcsi0
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
nzpcsi0
->
periodicityAndOffset
));
int
ideal_period
=
nb_slots_per_period
*
MAX_MOBILES_PER_GNB
;
int
ideal_period
=
nb_slots_per_period
*
MAX_MOBILES_PER_GNB
;
if
(
ideal_period
<
5
)
{
nzpcsi0
->
periodicityAndOffset
->
present
=
NR_CSI_ResourcePeriodicityAndOffset_PR_slots4
;
...
...
@@ -397,7 +397,82 @@ long rrc_get_max_nr_csrs(const uint8_t max_rbs, const long b_SRS) {
return
c_srs
;
}
void
config_srs
(
NR_SetupRelease_SRS_Config_t
*
setup_release_srs_Config
,
struct
NR_SRS_Resource__resourceType__periodic
*
configure_periodic_srs
(
const
NR_ServingCellConfigCommon_t
*
scc
,
const
int
uid
)
{
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
scc
->
tdd_UL_DL_ConfigurationCommon
?
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
:
NULL
;
const
int
n_slots_frame
=
slotsperframe
[
*
scc
->
ssbSubcarrierSpacing
];
const
int
ul_slots_period
=
tdd
?
tdd
->
nrofUplinkSlots
:
n_slots_frame
;
const
int
n_slots_period
=
tdd
?
n_slots_frame
/
get_nb_periods_per_frame
(
tdd
->
dl_UL_TransmissionPeriodicity
)
:
n_slots_frame
;
const
int
ideal_period
=
n_slots_period
*
MAX_MOBILES_PER_GNB
;
struct
NR_SRS_Resource__resourceType__periodic
*
periodic_srs
=
calloc
(
1
,
sizeof
(
*
periodic_srs
));
if
(
ideal_period
<
5
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl4
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl4
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
6
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl5
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl5
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
9
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl8
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl8
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
11
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl10
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl10
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
17
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl16
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl16
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
21
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl20
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl20
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
33
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl32
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl32
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
41
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl40
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl40
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
65
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl64
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl64
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
81
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl80
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl80
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
161
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl160
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl160
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
321
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl320
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl320
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
641
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl640
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl640
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
if
(
ideal_period
<
1281
)
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl1280
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl1280
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
else
{
periodic_srs
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl2560
;
periodic_srs
->
periodicityAndOffset_p
.
choice
.
sl2560
=
(
n_slots_period
-
ul_slots_period
)
*
uid
;
}
return
periodic_srs
;
}
void
config_srs
(
const
NR_ServingCellConfigCommon_t
*
scc
,
NR_SetupRelease_SRS_Config_t
*
setup_release_srs_Config
,
const
NR_UE_NR_Capability_t
*
uecap
,
const
int
curr_bwp
,
const
int
uid
,
...
...
@@ -510,7 +585,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
srs_res0
->
transmissionComb
.
choice
.
n2
=
calloc
(
1
,
sizeof
(
*
srs_res0
->
transmissionComb
.
choice
.
n2
));
srs_res0
->
transmissionComb
.
choice
.
n2
->
combOffset_n2
=
0
;
srs_res0
->
transmissionComb
.
choice
.
n2
->
cyclicShift_n2
=
0
;
srs_res0
->
resourceMapping
.
startPosition
=
2
+
uid
%
2
;
srs_res0
->
resourceMapping
.
startPosition
=
1
;
srs_res0
->
resourceMapping
.
nrofSymbols
=
NR_SRS_Resource__resourceMapping__nrofSymbols_n1
;
srs_res0
->
resourceMapping
.
repetitionFactor
=
NR_SRS_Resource__resourceMapping__repetitionFactor_n1
;
srs_res0
->
freqDomainPosition
=
0
;
...
...
@@ -521,9 +596,7 @@ void config_srs(NR_SetupRelease_SRS_Config_t *setup_release_srs_Config,
srs_res0
->
groupOrSequenceHopping
=
NR_SRS_Resource__groupOrSequenceHopping_neither
;
if
(
do_srs
)
{
srs_res0
->
resourceType
.
present
=
NR_SRS_Resource__resourceType_PR_periodic
;
srs_res0
->
resourceType
.
choice
.
periodic
=
calloc
(
1
,
sizeof
(
*
srs_res0
->
resourceType
.
choice
.
periodic
));
srs_res0
->
resourceType
.
choice
.
periodic
->
periodicityAndOffset_p
.
present
=
NR_SRS_PeriodicityAndOffset_PR_sl160
;
srs_res0
->
resourceType
.
choice
.
periodic
->
periodicityAndOffset_p
.
choice
.
sl160
=
17
+
(
uid
>>
1
)
*
10
;
// 17/17/.../147/157 are mixed slots
srs_res0
->
resourceType
.
choice
.
periodic
=
configure_periodic_srs
(
scc
,
uid
);
}
else
{
srs_res0
->
resourceType
.
present
=
NR_SRS_Resource__resourceType_PR_aperiodic
;
srs_res0
->
resourceType
.
choice
.
aperiodic
=
calloc
(
1
,
sizeof
(
*
srs_res0
->
resourceType
.
choice
.
aperiodic
));
...
...
@@ -1185,7 +1258,8 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
*
servingcellconfigdedicated
->
uplinkConfig
->
pusch_ServingCellConfig
->
choice
.
setup
->
ext1
->
maxMIMO_Layers
:
1
;
ubwp
->
bwp_Dedicated
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
srs_Config
));
config_srs
(
ubwp
->
bwp_Dedicated
->
srs_Config
,
config_srs
(
scc
,
ubwp
->
bwp_Dedicated
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
...
...
openair2/RRC/NR/nr_rrc_config.h
View file @
230a6c3f
...
...
@@ -70,7 +70,8 @@ void config_csirs(const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
int
id
);
void
config_csiim
(
int
do_csirs
,
int
dl_antenna_ports
,
int
curr_bwp
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
int
id
);
void
config_srs
(
NR_SetupRelease_SRS_Config_t
*
setup_release_srs_Config
,
void
config_srs
(
const
NR_ServingCellConfigCommon_t
*
scc
,
NR_SetupRelease_SRS_Config_t
*
setup_release_srs_Config
,
const
NR_UE_NR_Capability_t
*
uecap
,
const
int
curr_bwp
,
const
int
uid
,
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
230a6c3f
...
...
@@ -247,7 +247,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
int
curr_bwp
=
NRRIV2BW
(
servingcellconfigcommon
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
initialUplinkBWP
->
srs_Config
=
calloc
(
1
,
sizeof
(
*
initialUplinkBWP
->
srs_Config
));
config_srs
(
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
config_srs
(
servingcellconfigcommon
,
initialUplinkBWP
->
srs_Config
,
NULL
,
curr_bwp
,
uid
,
0
,
maxMIMO_Layers
,
configuration
->
do_SRS
);
// Downlink BWPs
int
n_dl_bwp
=
1
;
...
...
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