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
canghaiwuhen
OpenXG-RAN
Commits
8bd5dcf5
Commit
8bd5dcf5
authored
Sep 07, 2020
by
r.karey
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Changed periodicity calculation according to CSI_Reporting branch
parent
975a0906
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
9 deletions
+63
-9
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+55
-3
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-0
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
+7
-6
No files found.
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
8bd5dcf5
...
...
@@ -319,12 +319,62 @@ void update_csi_bitlen (NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_list_t *UE_li
uint8_t
csi_report_id
=
0
;
uint8_t
csi_resourceidx
=
0
;
uint8_t
csi_ssb_idx
=
0
;
uint16_t
period
,
offset
;
NR_CSI_ReportPeriodicityAndOffset_PR
p_and_o
;
NR_CSI_ResourceConfigId_t
csi_ResourceConfigId
;
for
(
csi_report_id
=
0
;
csi_report_id
<
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
count
;
csi_report_id
++
){
csi_ResourceConfigId
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
resourcesForChannelMeasurement
;
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
reportQuantity_type
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportQuantity
.
present
;
// UE_list->csi_report_template[UE_id][idx].
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
periodicity
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
;
p_and_o
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
present
;
switch
(
p_and_o
){
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots4
:
period
=
4
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots4
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots5
:
period
=
5
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots5
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots8
:
period
=
8
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots8
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots10
:
period
=
10
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots10
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots16
:
period
=
16
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots16
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots20
:
period
=
20
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots20
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots40
:
period
=
40
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots40
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots80
:
period
=
80
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots80
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots160
:
period
=
160
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots160
;
break
;
case
NR_CSI_ReportPeriodicityAndOffset_PR_slots320
:
period
=
320
;
offset
=
csi_MeasConfig
->
csi_ReportConfigToAddModList
->
list
.
array
[
csi_report_id
]
->
reportConfigType
.
choice
.
periodic
->
reportSlotConfig
.
choice
.
slots320
;
break
;
default:
AssertFatal
(
1
==
0
,
"No periodicity and offset resource found in CSI report"
);
}
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
periodicity
=
period
;
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
offset
=
offset
;
for
(
csi_resourceidx
=
0
;
csi_resourceidx
<
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
.
count
;
csi_resourceidx
++
)
{
if
(
csi_MeasConfig
->
csi_ResourceConfigToAddModList
->
list
.
array
[
csi_resourceidx
]
->
csi_ResourceConfigId
!=
csi_ResourceConfigId
)
...
...
@@ -361,14 +411,16 @@ void update_csi_bitlen (NR_CSI_MeasConfig_t *csi_MeasConfig, NR_UE_list_t *UE_li
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
nb_ssbri_cri
=
2
;
nb_ssb_resources
=
csi_MeasConfig
->
csi_SSB_ResourceSetToAddModList
->
list
.
array
[
csi_ssb_idx
]
->
csi_SSB_ResourceList
.
list
.
count
;
if
(
nb_ssb_resources
)
if
(
nb_ssb_resources
)
{
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
cri_ssbri_bitlen
=
ceil
(
log2
(
nb_ssb_resources
));
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
rsrp_bitlen
=
7
;
//From spec 38.212 Table 6.3.1.1.2-6: CRI, SSBRI, and RSRP
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
diff_rsrp_bitlen
=
4
;
//From spec 38.212 Table 6.3.1.1.2-6: CRI, SSBRI, and RSRP
else
}
else
{
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
cri_ssbri_bitlen
=
0
;
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
rsrp_bitlen
=
0
;
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
CSI_report_bitlen
[
0
].
diff_rsrp_bitlen
=
0
;
}
LOG_I
(
MAC
,
"UCI: CSI_bit len : ssbri %d, rsrp: %d, diff_rsrp: %d"
,
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
8bd5dcf5
...
...
@@ -405,6 +405,7 @@ typedef struct {
typedef
struct
nr_csi_report
{
NR_CSI_ReportConfig__reportQuantity_PR
reportQuantity_type
;
long
periodicity
;
uint16_t
offset
;
NR_CSI_ResourceConfig__csi_RS_ResourceSetList_PR
CSI_Resource_type
;
uint8_t
nb_of_nzp_csi_report
;
uint8_t
nb_of_csi_ssb_report
;
...
...
openair2/NR_PHY_INTERFACE/NR_IF_Module.c
View file @
8bd5dcf5
...
...
@@ -45,7 +45,7 @@
NR_IF_Module_t
*
if_inst
[
MAX_IF_MODULES
];
NR_Sched_Rsp_t
Sched_INFO
[
MAX_IF_MODULES
][
MAX_NUM_CCs
];
extern
const
uint8_t
slots_per_frame
[
5
];
extern
int
oai_nfapi_harq_indication
(
nfapi_harq_indication_t
*
harq_ind
);
extern
int
oai_nfapi_crc_indication
(
nfapi_crc_indication_t
*
crc_ind
);
extern
int
oai_nfapi_cqi_indication
(
nfapi_cqi_indication_t
*
cqi_ind
);
...
...
@@ -147,8 +147,9 @@ void extract_pucch_csi_report ( NR_CSI_MeasConfig_t *csi_MeasConfig,
//Has to implement according to reportSlotConfig type
periodicity
=
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
periodicity
;
LOG_I
(
PHY
,
"SFN/SF:%d%d
\n
"
,
frame
,
slot
);
if
(((
NR_SubcarrierSpacing_kHz30
==
scs
)
&&
(((((
frame
&
0xf
)
+
1
)
*
20
+
slot
)
&
periodicity
)
==
periodicity
))
||
((
NR_SubcarrierSpacing_kHz120
==
scs
)
&&
(((((
frame
&
0xf
)
+
1
)
*
80
+
slot
)
&
periodicity
)
==
periodicity
)))
{
/* if (((NR_SubcarrierSpacing_kHz30 == scs) && (((((frame & 0xf)+1)*20 + slot) & periodicity) == periodicity))
||((NR_SubcarrierSpacing_kHz120 == scs)&&(((((frame & 0xf)+1)*80 + slot) & periodicity) == periodicity))) {*/
if
(((
slots_per_frame
[
scs
]
*
frame
+
slot
-
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
offset
)
%
periodicity
)
==
0
)
{
reportQuantity_type
=
UE_list
->
csi_report_template
[
UE_id
][
csi_report_id
].
reportQuantity_type
;
LOG_I
(
PHY
,
"SFN/SF:%d%d reportQuantity type = %d
\n
"
,
frame
,
slot
,
reportQuantity_type
);
...
...
@@ -342,9 +343,9 @@ void handle_nr_uci(NR_UL_IND_t *UL_info, NR_UE_sched_ctrl_t *sched_ctrl, NR_mac_
nr_rx_acknack
(
NULL
,
NULL
,
uci_pdu
,
UL_info
,
sched_ctrl
,
stats
);
if
(
uci_pdu
->
pduBitmap
&
0x04
)
{
int
bwp_id
=
1
;
NR_BWP_Uplink_t
*
ubwp
=
RC
.
nrmac
[
Mod_idP
]
->
UE_list
.
secondaryCellGroup
[
UE_id
]
->
spCellConfig
->
spCellConfigDedicated
->
uplinkConfig
->
uplinkBWP_ToAddModList
->
list
.
array
[
bwp_id
-
1
];
NR_SubcarrierSpacing_t
scs
=
ubwp
->
bwp_Common
->
genericParameters
.
subcarrierSpacing
;
//
int bwp_id =1;
//
NR_BWP_Uplink_t *ubwp=RC.nrmac[Mod_idP]->UE_list.secondaryCellGroup[UE_id]->spCellConfig->spCellConfigDedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[bwp_id-1];
NR_SubcarrierSpacing_t
scs
=
*
(
RC
.
nrmac
[
Mod_idP
]
->
common_channels
->
ServingCellConfigCommon
->
ssbSubcarrierSpacing
)
;
LOG_I
(
PHY
,
"SFN/SF:%d%d scs %ld
\n
"
,
UL_info
->
frame
,
UL_info
->
slot
,
scs
);
...
...
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