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
6d736db2
Commit
6d736db2
authored
May 18, 2022
by
francescomani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
applying PUCCH harmonization to multiple BWP
parent
0c5d6a59
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
58 additions
and
242 deletions
+58
-242
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+17
-99
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+0
-9
openair2/RRC/NR/nr_rrc_config.h
openair2/RRC/NR/nr_rrc_config.h
+0
-1
openair2/RRC/NR/rrc_gNB_reconfig.c
openair2/RRC/NR/rrc_gNB_reconfig.c
+41
-133
No files found.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
6d736db2
...
@@ -1265,6 +1265,8 @@ void fill_default_uplinkBWP(NR_BWP_Uplink_t *ubwp,
...
@@ -1265,6 +1265,8 @@ void fill_default_uplinkBWP(NR_BWP_Uplink_t *ubwp,
ubwp
->
bwp_Common
->
genericParameters
.
cyclicPrefix
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
cyclicPrefix
;
ubwp
->
bwp_Common
->
genericParameters
.
cyclicPrefix
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
cyclicPrefix
;
}
}
int
curr_bwp
=
NRRIV2BW
(
ubwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
ubwp
->
bwp_Common
->
rach_ConfigCommon
=
NULL
;
ubwp
->
bwp_Common
->
rach_ConfigCommon
=
NULL
;
ubwp
->
bwp_Common
->
pusch_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
;
ubwp
->
bwp_Common
->
pusch_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pusch_ConfigCommon
;
ubwp
->
bwp_Common
->
pucch_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
;
ubwp
->
bwp_Common
->
pucch_ConfigCommon
=
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
pucch_ConfigCommon
;
...
@@ -1277,109 +1279,17 @@ void fill_default_uplinkBWP(NR_BWP_Uplink_t *ubwp,
...
@@ -1277,109 +1279,17 @@ void fill_default_uplinkBWP(NR_BWP_Uplink_t *ubwp,
ubwp
->
bwp_Dedicated
->
pucch_Config
->
present
=
NR_SetupRelease_PUCCH_Config_PR_setup
;
ubwp
->
bwp_Dedicated
->
pucch_Config
->
present
=
NR_SetupRelease_PUCCH_Config_PR_setup
;
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
*
pucch_Config
));
NR_PUCCH_Config_t
*
pucch_Config
=
calloc
(
1
,
sizeof
(
*
pucch_Config
));
ubwp
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
=
pucch_Config
;
ubwp
->
bwp_Dedicated
->
pucch_Config
->
choice
.
setup
=
pucch_Config
;
pucch_Config
->
resourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
resourceSetToAddModList
));
pucch_Config
->
resourceSetToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
resourceSetToAddModList
));
pucch_Config
->
resourceSetToReleaseList
=
NULL
;
pucch_Config
->
resourceSetToReleaseList
=
NULL
;
NR_PUCCH_ResourceSet_t
*
pucchresset0
=
calloc
(
1
,
sizeof
(
*
pucchresset0
));
pucchresset0
->
pucch_ResourceSetId
=
0
;
NR_PUCCH_ResourceId_t
*
pucchres0id0
=
calloc
(
1
,
sizeof
(
*
pucchres0id0
));
*
pucchres0id0
=
ubwp
->
bwp_Id
;
// To uniquely identify each pucchresource lets derive it from the BWPId
ASN_SEQUENCE_ADD
(
&
pucchresset0
->
resourceList
.
list
,
pucchres0id0
);
pucchresset0
->
maxPayloadSize
=
NULL
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
resourceSetToAddModList
->
list
,
pucchresset0
);
pucch_Config
->
resourceToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
resourceToAddModList
));
pucch_Config
->
resourceToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
resourceToAddModList
));
pucch_Config
->
resourceToReleaseList
=
NULL
;
pucch_Config
->
resourceToReleaseList
=
NULL
;
int
curr_bwp
=
NRRIV2BW
(
ubwp
->
bwp_Common
->
genericParameters
.
locationAndBandwidth
,
MAX_BWP_SIZE
);
config_pucch_resset0
(
pucch_Config
,
uid
,
curr_bwp
,
NULL
);
NR_PUCCH_Resource_t
*
pucchres0
=
calloc
(
1
,
sizeof
(
*
pucchres0
));
config_pucch_resset1
(
pucch_Config
,
NULL
);
pucchres0
->
pucch_ResourceId
=*
pucchres0id0
;
set_pucch_power_config
(
pucch_Config
,
configuration
->
do_CSIRS
);
pucchres0
->
startingPRB
=
(
8
+
uid
)
%
curr_bwp
;
pucchres0
->
intraSlotFrequencyHopping
=
NULL
;
pucchres0
->
secondHopPRB
=
NULL
;
pucchres0
->
format
.
present
=
NR_PUCCH_Resource__format_PR_format0
;
pucchres0
->
format
.
choice
.
format0
=
calloc
(
1
,
sizeof
(
*
pucchres0
->
format
.
choice
.
format0
));
pucchres0
->
format
.
choice
.
format0
->
initialCyclicShift
=
0
;
pucchres0
->
format
.
choice
.
format0
->
nrofSymbols
=
1
;
pucchres0
->
format
.
choice
.
format0
->
startingSymbolIndex
=
13
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
resourceToAddModList
->
list
,
pucchres0
);
/*
pucch_Config->format2=calloc(1,sizeof(*pucch_Config->format2));
pucch_Config->format2->present=NR_SetupRelease_PUCCH_FormatConfig_PR_setup;
NR_PUCCH_FormatConfig_t *pucchfmt2 = calloc(1,sizeof(*pucchfmt2));
pucch_Config->format2->choice.setup = pucchfmt2;
pucchfmt2->interslotFrequencyHopping=NULL;
pucchfmt2->additionalDMRS=NULL;
pucchfmt2->maxCodeRate=calloc(1,sizeof(*pucchfmt2->maxCodeRate));
*pucchfmt2->maxCodeRate=NR_PUCCH_MaxCodeRate_zeroDot35;
pucchfmt2->nrofSlots=NULL;
pucchfmt2->pi2BPSK=NULL;
pucchfmt2->simultaneousHARQ_ACK_CSI=calloc(1,sizeof(*pucchfmt2->simultaneousHARQ_ACK_CSI));
*pucchfmt2->simultaneousHARQ_ACK_CSI=NR_PUCCH_FormatConfig__simultaneousHARQ_ACK_CSI_true;
*/
// PUCCH config - Scheduling request configuration
scheduling_request_config
(
scc
,
pucch_Config
);
pucch_Config
->
schedulingRequestResourceToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
schedulingRequestResourceToAddModList
));
set_dl_DataToUL_ACK
(
pucch_Config
,
configuration
->
minRXTXTIME
);
NR_SchedulingRequestResourceConfig_t
*
schedulingRequestResourceConfig
=
calloc
(
1
,
sizeof
(
*
schedulingRequestResourceConfig
));
schedulingRequestResourceConfig
->
schedulingRequestResourceId
=
1
;
schedulingRequestResourceConfig
->
schedulingRequestID
=
0
;
schedulingRequestResourceConfig
->
periodicityAndOffset
=
calloc
(
1
,
sizeof
(
*
schedulingRequestResourceConfig
->
periodicityAndOffset
));
schedulingRequestResourceConfig
->
periodicityAndOffset
->
present
=
NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl40
;
// 40 slot period
// note: make sure that there is no issue here. Later choose the RNTI accordingly.
// Here we would be limited to 3 UEs on this resource (1 1/2 Frames 30 kHz SCS, 5 ms TDD periodicity => slots 7,8,9).
// This should be a temporary resource until the first RRCReconfiguration gives new pucch resources.
// Check for above configuration and exit for now if it is not the case
AssertFatal
(
scc
->
downlinkConfigCommon
->
initialDownlinkBWP
->
genericParameters
.
subcarrierSpacing
==
NR_SubcarrierSpacing_kHz30
,
"SCS != 30kHz
\n
"
);
AssertFatal
(
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
dl_UL_TransmissionPeriodicity
==
NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5
,
"TDD period != 5ms : %ld
\n
"
,
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
.
dl_UL_TransmissionPeriodicity
);
schedulingRequestResourceConfig
->
periodicityAndOffset
->
choice
.
sl40
=
8
;
schedulingRequestResourceConfig
->
resource
=
calloc
(
1
,
sizeof
(
*
schedulingRequestResourceConfig
->
resource
));
*
schedulingRequestResourceConfig
->
resource
=
*
pucchres0id0
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
schedulingRequestResourceToAddModList
->
list
,
schedulingRequestResourceConfig
);
pucch_Config
->
schedulingRequestResourceToReleaseList
=
NULL
;
pucch_Config
->
multi_CSI_PUCCH_ResourceList
=
NULL
;
pucch_Config
->
dl_DataToUL_ACK
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
dl_DataToUL_ACK
));
long
*
delay
[
8
];
for
(
int
i
=
0
;
i
<
8
;
i
++
)
{
delay
[
i
]
=
calloc
(
1
,
sizeof
(
*
delay
[
i
]));
AssertFatal
(
configuration
->
minRXTXTIME
>=
2
&&
configuration
->
minRXTXTIME
<
7
,
"check minRXTXTIME %d
\n
"
,
configuration
->
minRXTXTIME
);
*
delay
[
i
]
=
i
+
configuration
->
minRXTXTIME
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
dl_DataToUL_ACK
->
list
,
delay
[
i
]);
}
pucch_Config
->
spatialRelationInfoToAddModList
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
spatialRelationInfoToAddModList
));
NR_PUCCH_SpatialRelationInfo_t
*
pucchspatial
=
calloc
(
1
,
sizeof
(
*
pucchspatial
));
pucchspatial
->
pucch_SpatialRelationInfoId
=
1
;
pucchspatial
->
servingCellId
=
NULL
;
if
(
configuration
->
do_CSIRS
)
{
pucchspatial
->
referenceSignal
.
present
=
NR_PUCCH_SpatialRelationInfo__referenceSignal_PR_csi_RS_Index
;
pucchspatial
->
referenceSignal
.
choice
.
csi_RS_Index
=
0
;
}
else
{
pucchspatial
->
referenceSignal
.
present
=
NR_PUCCH_SpatialRelationInfo__referenceSignal_PR_ssb_Index
;
pucchspatial
->
referenceSignal
.
choice
.
ssb_Index
=
0
;
}
pucchspatial
->
pucch_PathlossReferenceRS_Id
=
0
;
pucchspatial
->
p0_PUCCH_Id
=
1
;
pucchspatial
->
closedLoopIndex
=
NR_PUCCH_SpatialRelationInfo__closedLoopIndex_i0
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
spatialRelationInfoToAddModList
->
list
,
pucchspatial
);
pucch_Config
->
spatialRelationInfoToReleaseList
=
NULL
;
pucch_Config
->
pucch_PowerControl
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
));
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f0
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f1
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f2
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f3
=
0
;
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
));
*
pucch_Config
->
pucch_PowerControl
->
deltaF_PUCCH_f4
=
0
;
pucch_Config
->
pucch_PowerControl
->
p0_Set
=
calloc
(
1
,
sizeof
(
*
pucch_Config
->
pucch_PowerControl
->
p0_Set
));
NR_P0_PUCCH_t
*
p00
=
calloc
(
1
,
sizeof
(
*
p00
));
p00
->
p0_PUCCH_Id
=
1
;
p00
->
p0_PUCCH_Value
=
0
;
ASN_SEQUENCE_ADD
(
&
pucch_Config
->
pucch_PowerControl
->
p0_Set
->
list
,
p00
);
pucch_Config
->
pucch_PowerControl
->
pathlossReferenceRSs
=
NULL
;
// PUSCH config
// PUSCH config
ubwp
->
bwp_Dedicated
->
pusch_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
pusch_Config
));
ubwp
->
bwp_Dedicated
->
pusch_Config
=
calloc
(
1
,
sizeof
(
*
ubwp
->
bwp_Dedicated
->
pusch_Config
));
...
@@ -1714,7 +1624,7 @@ void fill_initial_SpCellConfig(int uid,
...
@@ -1714,7 +1624,7 @@ void fill_initial_SpCellConfig(int uid,
srs_res0
->
spatialRelationInfo
->
referenceSignal
.
choice
.
csi_RS_Index
=
0
;
srs_res0
->
spatialRelationInfo
->
referenceSignal
.
choice
.
csi_RS_Index
=
0
;
ASN_SEQUENCE_ADD
(
&
srs_Config
->
srs_ResourceToAddModList
->
list
,
srs_res0
);
ASN_SEQUENCE_ADD
(
&
srs_Config
->
srs_ResourceToAddModList
->
list
,
srs_res0
);
scheduling_request_config
(
scc
,
cellGroupConfig
->
mac_CellGroupConfig
,
pucch_Config
);
scheduling_request_config
(
scc
,
pucch_Config
);
set_dl_DataToUL_ACK
(
pucch_Config
,
configuration
->
minRXTXTIME
);
set_dl_DataToUL_ACK
(
pucch_Config
,
configuration
->
minRXTXTIME
);
...
@@ -2255,6 +2165,14 @@ void fill_initial_cellGroupConfig(int uid,
...
@@ -2255,6 +2165,14 @@ void fill_initial_cellGroupConfig(int uid,
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_ProhibitTimer
=
NR_PHR_Config__phr_ProhibitTimer_sf10
;
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_ProhibitTimer
=
NR_PHR_Config__phr_ProhibitTimer_sf10
;
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_Tx_PowerFactorChange
=
NR_PHR_Config__phr_Tx_PowerFactorChange_dB1
;
mac_CellGroupConfig
->
phr_Config
->
choice
.
setup
->
phr_Tx_PowerFactorChange
=
NR_PHR_Config__phr_Tx_PowerFactorChange_dB1
;
mac_CellGroupConfig
->
schedulingRequestConfig
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
schedulingRequestConfig
));
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
=
CALLOC
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
));
struct
NR_SchedulingRequestToAddMod
*
schedulingrequestlist
=
CALLOC
(
1
,
sizeof
(
*
schedulingrequestlist
));
schedulingrequestlist
->
schedulingRequestId
=
0
;
schedulingrequestlist
->
sr_ProhibitTimer
=
NULL
;
schedulingrequestlist
->
sr_TransMax
=
NR_SchedulingRequestToAddMod__sr_TransMax_n64
;
ASN_SEQUENCE_ADD
(
&
(
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
->
list
),
schedulingrequestlist
);
cellGroupConfig
->
mac_CellGroupConfig
=
mac_CellGroupConfig
;
cellGroupConfig
->
mac_CellGroupConfig
=
mac_CellGroupConfig
;
physicalCellGroupConfig
=
calloc
(
1
,
sizeof
(
*
physicalCellGroupConfig
));
physicalCellGroupConfig
=
calloc
(
1
,
sizeof
(
*
physicalCellGroupConfig
));
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
6d736db2
...
@@ -593,17 +593,8 @@ void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedulingRequ
...
@@ -593,17 +593,8 @@ void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedulingRequ
}
}
void
scheduling_request_config
(
NR_ServingCellConfigCommon_t
*
scc
,
void
scheduling_request_config
(
NR_ServingCellConfigCommon_t
*
scc
,
NR_MAC_CellGroupConfig_t
*
mac_CellGroupConfig
,
NR_PUCCH_Config_t
*
pucch_Config
)
{
NR_PUCCH_Config_t
*
pucch_Config
)
{
mac_CellGroupConfig
->
schedulingRequestConfig
=
calloc
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
schedulingRequestConfig
));
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
=
CALLOC
(
1
,
sizeof
(
*
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
));
struct
NR_SchedulingRequestToAddMod
*
schedulingrequestlist
=
CALLOC
(
1
,
sizeof
(
*
schedulingrequestlist
));
schedulingrequestlist
->
schedulingRequestId
=
0
;
schedulingrequestlist
->
sr_ProhibitTimer
=
NULL
;
schedulingrequestlist
->
sr_TransMax
=
NR_SchedulingRequestToAddMod__sr_TransMax_n64
;
ASN_SEQUENCE_ADD
(
&
(
mac_CellGroupConfig
->
schedulingRequestConfig
->
schedulingRequestToAddModList
->
list
),
schedulingrequestlist
);
// format with <=2 bits in pucch resource set 0
// format with <=2 bits in pucch resource set 0
NR_PUCCH_ResourceSet_t
*
pucchresset
=
pucch_Config
->
resourceSetToAddModList
->
list
.
array
[
0
];
NR_PUCCH_ResourceSet_t
*
pucchresset
=
pucch_Config
->
resourceSetToAddModList
->
list
.
array
[
0
];
// assigning the 1st pucch resource in the set to scheduling request
// assigning the 1st pucch resource in the set to scheduling request
...
...
openair2/RRC/NR/nr_rrc_config.h
View file @
6d736db2
...
@@ -120,7 +120,6 @@ void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t
...
@@ -120,7 +120,6 @@ void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t
void
set_dl_DataToUL_ACK
(
NR_PUCCH_Config_t
*
pucch_Config
,
int
min_feedback_time
);
void
set_dl_DataToUL_ACK
(
NR_PUCCH_Config_t
*
pucch_Config
,
int
min_feedback_time
);
void
set_pucch_power_config
(
NR_PUCCH_Config_t
*
pucch_Config
,
int
do_csirs
);
void
set_pucch_power_config
(
NR_PUCCH_Config_t
*
pucch_Config
,
int
do_csirs
);
void
scheduling_request_config
(
NR_ServingCellConfigCommon_t
*
scc
,
void
scheduling_request_config
(
NR_ServingCellConfigCommon_t
*
scc
,
NR_MAC_CellGroupConfig_t
*
mac_CellGroupConfig
,
NR_PUCCH_Config_t
*
pucch_Config
);
NR_PUCCH_Config_t
*
pucch_Config
);
void
config_csirs
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
void
config_csirs
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
NR_CSI_MeasConfig_t
*
csi_MeasConfig
,
...
...
openair2/RRC/NR/rrc_gNB_reconfig.c
View file @
6d736db2
This diff is collapsed.
Click to expand it.
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