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
67a0851b
Commit
67a0851b
authored
Nov 20, 2023
by
liuxu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add pbch and simplify sever_manager.py231120
parent
259d50f0
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
148 additions
and
278 deletions
+148
-278
executables/sever_manager_py.py
executables/sever_manager_py.py
+49
-240
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+10
-7
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
+9
-9
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+46
-6
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
+6
-2
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+2
-2
openair2/LAYER2/NR_MAC_gNB/slotmap.h
openair2/LAYER2/NR_MAC_gNB/slotmap.h
+24
-11
openair2/RRC/NR/nr_rrc_config.c
openair2/RRC/NR/nr_rrc_config.c
+2
-1
No files found.
executables/sever_manager_py.py
View file @
67a0851b
import
struct
import
socket
import
collections
# from flask import jsonify
SERVER_IP
=
"
192.168.199.231
"
SERVER_IP
=
"
0.0.0.0
"
SERVER_PORT
=
7789
BUFFER_SIZE
=
20000
...
...
@@ -36,21 +38,25 @@ rrc_gNB_to_UE = [
"UECapabilityEnquiry"
]
schedule_data
=
collections
.
OrderedDict
()
# 0 is first tag
schedule_data
=
{
"msg1"
:[],
"msg2"
:[],
"msg3"
:[],
"msg4"
:[],
"pdcch"
:[],
"pdsch"
:[],
"csirs"
:[],
"pusch"
:[],
"acknack"
:[],
"csi_report"
:[],
"sr_report"
:[],
"srs"
:[]
}
schedule_data
[
"ssb"
]
=
[]
schedule_data
[
"sib1"
]
=
[]
schedule_data
[
"msg1"
]
=
[]
schedule_data
[
"msg2"
]
=
[]
schedule_data
[
"msg3"
]
=
[]
schedule_data
[
"msg4"
]
=
[]
schedule_data
[
"pdcch"
]
=
[]
schedule_data
[
"pdsch"
]
=
[]
schedule_data
[
"csirs"
]
=
[]
schedule_data
[
"prach"
]
=
[]
schedule_data
[
"pusch"
]
=
[]
schedule_data
[
"acknack"
]
=
[]
schedule_data
[
"csi_report"
]
=
[]
schedule_data
[
"sr_report"
]
=
[]
schedule_data
[
"srs"
]
=
[]
server_socket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
...
...
@@ -69,22 +75,22 @@ while True:
if
DEBUG_PRINT
:
print
(
"data_len %d message %d"
%
(
data_len
,
message
))
if
(
message
==
2
):
CC_id
,
frame
,
slot
,
measurement_flag
,
prach_sched_flag
,
dl_sched_flag
,
ul_sched_flag
,
msg1_frame
,
msg1_slot
,
msg2_frame
,
msg2_slot
,
msg3_frame
,
msg3_slot
,
msg4_frame
,
msg4_slot
,
pdcch_frame
,
pdcch_slot
,
pdsch_frame
,
pdsch_slot
,
csirs_frame
,
csirs_slot
,
csi_report_frame
,
sr_frame
,
srs_frame
,
acknack_frame
,
ulsch_frame
,
csi_report_slot
,
sr_slot
,
srs_slot
,
acknack_slot
,
ulsch_slot
=
struct
.
unpack
(
"31H"
,
data
[
4
:
33
*
2
])
CC_id
,
frame
,
slot
,
measurement_flag
,
pbch_sched_flag
,
random_access_sched_flag
,
dl_sched_flag
,
ul_sched_flag
=
struct
.
unpack
(
"8H"
,
data
[
4
:
20
])
print
(
"%d.%d measurement_flag %x pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x"
%
(
frame
,
slot
,
measurement_flag
,
pbch_sched_flag
,
random_access_sched_flag
,
dl_sched_flag
,
ul_sched_flag
))
schedule_timing
=
struct
.
unpack
(
"30H"
,
data
[
20
:
80
])
if
DEBUG_PRINT
:
print
(
"[%d.%d] measurement_flag %x prach_sched_flag %x dl_sched_flag %x ul_sched_flag %x msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
"csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d"
%
(
frame
,
slot
,
measurement_flag
,
prach_sched_flag
,
dl_sched_flag
,
ul_sched_flag
,
msg1_frame
,
msg1_slot
,
msg2_frame
,
msg2_slot
,
msg3_frame
,
msg3_slot
,
msg4_frame
,
msg4_slot
,
pdcch_frame
,
pdcch_slot
,
pdsch_frame
,
pdsch_slot
,
csirs_frame
,
csirs_slot
,
ulsch_frame
,
ulsch_slot
,
acknack_frame
,
acknack_slot
,
csi_report_frame
,
csi_report_slot
,
sr_frame
,
sr_slot
,
srs_frame
,
srs_slot
))
i
=
0
for
map_type
in
schedule_data
.
keys
():
print
(
"%s %d.%d"
%
(
map_type
,
schedule_timing
[
i
*
2
],
schedule_timing
[
i
*
2
+
1
]))
i
=
i
+
1
if
(
measurement_flag
&
0x01
)
and
(
dl_sched_flag
or
ul_sched_flag
or
(
prach_sched_flag
&
0x0e
)):
print
(
""
)
if
(
measurement_flag
&
0x01
)
and
(
dl_sched_flag
or
ul_sched_flag
or
(
random_access_sched_flag
&
0x0e
)):
if
DEBUG_PRINT
:
print
(
"update measurement data"
)
dl_recv_bytes_high16
,
dl_recv_bytes_low16
,
ul_recv_bytes_high16
,
ul_recv_bytes_low16
,
dl_mcs
,
ul_mcs
,
dl_bler
,
ul_bler
,
pucch_snr
,
pusch_snr
,
rsrp
=
struct
.
unpack
(
"8H3h"
,
data
[
33
*
2
:
33
*
2
+
22
])
dl_recv_bytes_high16
,
dl_recv_bytes_low16
,
ul_recv_bytes_high16
,
ul_recv_bytes_low16
,
\
dl_mcs
,
ul_mcs
,
dl_bler
,
ul_bler
,
pucch_snr
,
pusch_snr
,
rsrp
=
struct
.
unpack
(
"8H3h"
,
data
[
80
:
80
+
22
])
dl_recv_bytes
=
(
dl_recv_bytes_high16
<<
16
)
+
dl_recv_bytes_low16
ul_recv_bytes
=
(
ul_recv_bytes_high16
<<
16
)
+
ul_recv_bytes_low16
dl_velocity
=
(
dl_recv_bytes
-
dl_recv_bytes_last
)
*
8.0
/
1e6
...
...
@@ -92,229 +98,32 @@ while True:
dl_bler
=
dl_bler
*
1.0
/
10000
ul_bler
=
ul_bler
*
1.0
/
10000
if
DEBUG_PRINT
:
print
(
"%d.%d: dl_recv_bytes %ldbytes(%fMpbs), ul_recv_bytes %ldbytes(%fMpbs), dl_mcs %d, ul_mcs %d, dl_bler %f, ul_bler %f, pucch_snr %ddB, pusch_snr %ddB rsrp %ddBm"
%
(
frame
,
slot
,
dl_recv_bytes
-
dl_recv_bytes_last
,
dl_velocity
,
ul_recv_bytes
-
ul_recv_bytes_last
,
ul_velocity
,
dl_mcs
,
ul_mcs
,
dl_bler
,
ul_bler
,
pucch_snr
,
pusch_snr
,
rsrp
))
print
(
"%d.%d: dl_recv_bytes %ldbytes(%fMpbs), ul_recv_bytes %ldbytes(%fMpbs), dl_mcs %d, ul_mcs
\
%d, dl_bler %f, ul_bler %f, pucch_snr %ddB, pusch_snr %ddB rsrp %ddBm"
%
(
frame
,
slot
,
dl_recv_bytes
-
dl_recv_bytes_last
,
dl_velocity
,
ul_recv_bytes
-
ul_recv_bytes_last
,
ul_velocity
,
\
dl_mcs
,
ul_mcs
,
dl_bler
,
ul_bler
,
pucch_snr
,
pusch_snr
,
rsrp
))
dl_recv_bytes_last
=
dl_recv_bytes
ul_recv_bytes_last
=
ul_recv_bytes
count
=
0
vrb_map_msg1_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
msg1_frame
!=
frame_last
:
schedule_data
[
"msg1"
]
=
[]
if
(
prach_sched_flag
&
0x01
):
if
DEBUG_PRINT
:
print
(
"Schedule and wait for msg1:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_msg1_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_msg1_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"msg1"
].
append
([
msg1_slot
*
14
+
bitnum
,
i
,
0
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_msg1_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"msg1"
])
count
=
count
+
1
vrb_map_msg2_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
msg2_frame
!=
frame_last
:
schedule_data
[
"msg2"
]
=
[]
if
(
prach_sched_flag
&
0x02
):
if
DEBUG_PRINT
:
print
(
"Schedule msg2:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_msg2_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_msg2_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"msg2"
].
append
([
msg1_slot
*
14
+
bitnum
,
i
,
1
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_msg2_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"msg2"
])
count
=
count
+
1
vrb_map_msg3_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
msg3_frame
!=
frame_last
:
schedule_data
[
"msg3"
]
=
[]
if
(
prach_sched_flag
&
0x04
):
if
DEBUG_PRINT
:
print
(
"Schedule msg3:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_msg3_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_msg3_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"msg3"
].
append
([
msg3_slot
*
14
+
bitnum
,
i
,
2
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_msg3_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"msg3"
])
count
=
count
+
1
vrb_map_msg4_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
msg4_frame
!=
frame_last
:
schedule_data
[
"msg4"
]
=
[]
if
(
prach_sched_flag
&
0x08
):
if
DEBUG_PRINT
:
print
(
"Schedule msg4:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_msg4_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_msg4_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"msg4"
].
append
([
msg4_slot
*
14
+
bitnum
,
i
,
3
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_msg4_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"msg4"
])
count
=
count
+
1
vrb_map_pdcch_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
pdcch_frame
!=
frame_last
:
schedule_data
[
"pdcch"
]
=
[]
if
(
dl_sched_flag
&
0x01
):
if
DEBUG_PRINT
:
print
(
"Schedule pdcch:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_pdcch_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_pdcch_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"pdcch"
].
append
([
pdcch_slot
*
14
+
bitnum
,
i
,
4
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_pdcch_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"pdcch"
])
count
=
count
+
1
vrb_map_pdsch_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
pdsch_frame
!=
frame_last
:
schedule_data
[
"pdsch"
]
=
[]
if
(
dl_sched_flag
&
0x02
):
if
DEBUG_PRINT
:
print
(
"Schedule pdsch:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_pdsch_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_pdsch_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"pdsch"
].
append
([
pdsch_slot
*
14
+
bitnum
,
i
,
5
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_pdsch_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"pdsch"
])
count
=
count
+
1
vrb_map_csirs_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
csirs_frame
!=
frame_last
:
schedule_data
[
"csirs"
]
=
[]
if
(
dl_sched_flag
&
0x04
):
if
DEBUG_PRINT
:
print
(
"Schedule csirs:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_csirs_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_csirs_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"csirs"
].
append
([
csirs_slot
*
14
+
bitnum
,
i
,
6
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_csirs_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"csirs"
])
count
=
count
+
1
#LSB -> MSB : ulsch || acknack || csi-report || sr || srs
vrb_map_pusch_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
ulsch_frame
!=
frame_last
:
schedule_data
[
"pusch"
]
=
[]
if
(
ul_sched_flag
&
0x01
):
if
DEBUG_PRINT
:
print
(
"Schedule pusch:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_pusch_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_pusch_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"pusch"
].
append
([
ulsch_slot
*
14
+
bitnum
,
i
,
7
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_pusch_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"pusch"
])
count
=
count
+
1
vrb_map_acknack_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
acknack_frame
!=
frame_last
:
schedule_data
[
"acknack"
]
=
[]
if
(
ul_sched_flag
&
0x02
):
for
map_type
in
schedule_data
:
if
frame
!=
frame_last
:
schedule_data
[
map_type
]
=
[]
receive_map
=
struct
.
unpack
(
"275H"
,
data
[
80
+
22
+
550
*
count
:
80
+
22
+
550
*
(
count
+
1
)])
if
DEBUG_PRINT
:
print
(
"Schedule
acknack:"
)
print
(
"Schedule
for %s:"
%
(
map_type
)
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_acknack_socket
[
i
]):
if
(
receive_map
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_acknack_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"acknack"
].
append
([
acknack_slot
*
14
+
bitnum
,
i
,
8
])
if
(
receive_map
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
map_type
].
append
([
schedule_timing
[
count
*
2
+
1
]
*
14
+
bitnum
,
i
,
count
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_acknack_socket
[
i
]))
print
(
"%d
\t
%d"
%
(
i
,
receive_map
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"acknack"
])
print
(
schedule_data
[
map_type
])
count
=
count
+
1
vrb_map_csi_report_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
csi_report_frame
!=
frame_last
:
schedule_data
[
"csi_report"
]
=
[]
if
(
ul_sched_flag
&
0x04
):
if
DEBUG_PRINT
:
print
(
"Schedule csi report:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_csi_report_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_csi_report_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"csi_report"
].
append
([
csi_report_slot
*
14
+
bitnum
,
i
,
9
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_csi_report_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"csi_report"
])
count
=
count
+
1
vrb_map_sr_report_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
sr_frame
!=
frame_last
:
schedule_data
[
"sr_report"
]
=
[]
if
(
ul_sched_flag
&
0x08
):
if
DEBUG_PRINT
:
print
(
"Schedule sr report:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_sr_report_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_sr_report_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"sr_report"
].
append
([
sr_slot
*
14
+
bitnum
,
i
,
10
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_sr_report_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"sr_report"
])
count
=
count
+
1
vrb_map_srs_socket
=
struct
.
unpack
(
"275H"
,
data
[
33
*
2
+
22
+
550
*
count
:
33
*
2
+
22
+
550
*
(
count
+
1
)])
if
srs_frame
!=
frame_last
:
schedule_data
[
"srs"
]
=
[]
if
(
ul_sched_flag
&
0x10
):
if
DEBUG_PRINT
:
print
(
"Schedule srs:"
)
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
vrb_map_srs_socket
[
i
]):
for
bitnum
in
range
(
14
):
if
(
vrb_map_srs_socket
[
i
]
>>
bitnum
)
&
1
:
schedule_data
[
"srs"
].
append
([
srs_slot
*
14
+
bitnum
,
i
,
11
])
if
DEBUG_PRINT
:
print
(
"%d
\t
%d"
%
(
i
,
vrb_map_srs_socket
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
"srs"
])
count
=
count
+
1
frame_last
=
frame
print
(
schedule_data
)
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
67a0851b
...
...
@@ -211,7 +211,7 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
memcpy
(
&
sim_socket_manager
.
vrb_map_csi_report_socket
,
&
gNB
->
ulprbbl
,
sizeof
(
uint16_t
)
*
RB_TOTAL_MAP_SOCKET
);
memcpy
(
&
sim_socket_manager
.
vrb_map_sr_report_socket
,
&
gNB
->
ulprbbl
,
sizeof
(
uint16_t
)
*
RB_TOTAL_MAP_SOCKET
);
memcpy
(
&
sim_socket_manager
.
vrb_map_srs_socket
,
&
gNB
->
ulprbbl
,
sizeof
(
uint16_t
)
*
RB_TOTAL_MAP_SOCKET
);
memcpy
(
&
sim_socket_manager
.
vrb_map_prach_socket
,
&
gNB
->
ulprbbl
,
sizeof
(
uint16_t
)
*
RB_TOTAL_MAP_SOCKET
);
sim_socket_manager
.
CC_id
=
CC_id
;
sim_socket_manager
.
slot
=
slot
;
...
...
@@ -294,7 +294,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
NR_SCHED_UNLOCK
(
&
gNB
->
sched_lock
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
if
(
sim_socket_manager
.
measurement_flag
||
sim_socket_manager
.
prach_sched_flag
||
sim_socket_manager
.
dl_sched_flag
||
sim_socket_manager
.
ul_sched_flag
){
if
(
sim_socket_manager
.
measurement_flag
||
sim_socket_manager
.
random_access_sched_flag
||
\
sim_socket_manager
.
dl_sched_flag
||
sim_socket_manager
.
ul_sched_flag
||
sim_socket_manager
.
pbch_sched_flag
){
pthread_mutex_lock
(
&
sim_mutex_socket
);
message_flag
=
2
;
// gnbSendToManager_buf = &sim_socket_manager;
...
...
@@ -302,14 +303,16 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
sim_socket_manager
.
message
=
2
;
// gnbSendToManager_len = sim_socket_manager.data_len;
LOG_D
(
NR_MAC
,
"data_len %d
\n
"
,
sim_socket_manager
.
data_len
);
LOG_D
(
NR_MAC
,
"[%d.%d] measurement_flag %x prach_sched_flag %x dl_sched_flag %x ul_sched_flag %x msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
"csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d
\n
"
,
sim_socket_manager
.
frame
,
sim_socket_manager
.
slot
,
sim_socket_manager
.
measurement_flag
,
sim_socket_manager
.
prach_sched_flag
,
sim_socket_manager
.
dl_sched_flag
,
sim_socket_manager
.
ul_sched_flag
,
LOG_I
(
NR_MAC
,
"[%d.%d] measurement_flag %x pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x "
"ssb %d.%d sib1 %d.%d msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
"csirs %d.%d prach %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d
\n
"
,
sim_socket_manager
.
frame
,
sim_socket_manager
.
slot
,
sim_socket_manager
.
measurement_flag
,
sim_socket_manager
.
pbch_sched_flag
,
sim_socket_manager
.
random_access_sched_flag
,
sim_socket_manager
.
dl_sched_flag
,
sim_socket_manager
.
ul_sched_flag
,
sim_socket_manager
.
ssb_frame
,
sim_socket_manager
.
ssb_slot
,
sim_socket_manager
.
sib1_frame
,
sim_socket_manager
.
sib1_slot
,
sim_socket_manager
.
msg1_frame
,
sim_socket_manager
.
msg1_slot
,
sim_socket_manager
.
msg2_frame
,
sim_socket_manager
.
msg2_slot
,
sim_socket_manager
.
msg3_frame
,
sim_socket_manager
.
msg3_slot
,
sim_socket_manager
.
msg4_frame
,
sim_socket_manager
.
msg4_slot
,
sim_socket_manager
.
pdcch_frame
,
sim_socket_manager
.
pdcch_slot
,
sim_socket_manager
.
pdsch_frame
,
sim_socket_manager
.
pdsch_slot
,
sim_socket_manager
.
csirs_frame
,
sim_socket_manager
.
csirs_slot
,
sim_socket_manager
.
csirs_frame
,
sim_socket_manager
.
csirs_slot
,
sim_socket_manager
.
prach_frame
,
sim_socket_manager
.
prach_slot
,
sim_socket_manager
.
ulsch_frame
,
sim_socket_manager
.
ulsch_slot
,
sim_socket_manager
.
acknack_frame
,
sim_socket_manager
.
acknack_slot
,
sim_socket_manager
.
csi_report_frame
,
sim_socket_manager
.
csi_report_slot
,
sim_socket_manager
.
sr_frame
,
sim_socket_manager
.
sr_slot
,
sim_socket_manager
.
srs_frame
,
sim_socket_manager
.
srs_slot
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
View file @
67a0851b
...
...
@@ -341,9 +341,9 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
prach_pdu
->
num_cs
=
get_NCS
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
zeroCorrelationZoneConfig
,
format0
,
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
restrictedSetConfig
);
sim_socket_manager
.
msg1
_frame
=
frameP
;
sim_socket_manager
.
msg1
_slot
=
slotP
;
sim_socket_manager
.
prach_sched_flag
|=
0x01
;
sim_socket_manager
.
prach
_frame
=
frameP
;
sim_socket_manager
.
prach
_slot
=
slotP
;
sim_socket_manager
.
ul_sched_flag
|=
0x20
;
LOG_D
(
NR_MAC
,
"Frame %d, Slot %d: Prach Occasion id = %u fdm index = %u start symbol = %u slot index = %u subframe index = %u
\n
"
,
frameP
,
slotP
,
prach_occasion_id
,
prach_pdu
->
num_ra
,
...
...
@@ -420,7 +420,7 @@ void schedule_nr_prach(module_id_t module_idP, frame_t frameP, sub_frame_t slotP
for
(
int
i
=
0
;
i
<
N_RA_RB
*
fdm
;
++
i
){
uint16_t
slbitmap
=
SL_to_bitmap
(
start_symbol
,
N_t_slot
*
N_dur
);
vrb_map_UL
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
|=
slbitmap
;
sim_socket_manager
.
vrb_map_
msg1
_socket
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
|=
slbitmap
;
sim_socket_manager
.
vrb_map_
prach
_socket
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
|=
slbitmap
;
#ifdef VRB_MAP_TEST_MANAGER
printf
(
"RB:%d [%s %d] slbitmap %d
\n
"
,
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
,
__FUNCTION__
,
__LINE__
,
slbitmap
);
for
(
int
symbol
=
slbitmap
,
i
=
0
;
i
<
SYMBOL_PER_SLOT_MAP_SOCKET
;
i
++
,
symbol
=
symbol
>>
1
){
...
...
@@ -1118,7 +1118,7 @@ static void nr_add_msg3(module_id_t module_idP, int CC_id, frame_t frameP, sub_f
uint16_t
*
vrb_map_UL
=
&
RC
.
nrmac
[
module_idP
]
->
common_channels
[
CC_id
].
vrb_map_UL
[
buffer_index
*
MAX_BWP_SIZE
];
sim_socket_manager
.
msg3_frame
=
ra
->
Msg3_frame
;
sim_socket_manager
.
msg3_slot
=
ra
->
Msg3_slot
;
sim_socket_manager
.
prach
_sched_flag
|=
0x04
;
sim_socket_manager
.
random_access
_sched_flag
|=
0x04
;
for
(
int
i
=
0
;
i
<
ra
->
msg3_nb_rb
;
++
i
)
{
AssertFatal
(
!
(
vrb_map_UL
[
i
+
ra
->
msg3_first_rb
+
ra
->
msg3_bwp_start
]
&
mask
),
"RB %d in %4d.%2d is already taken, cannot allocate Msg3!
\n
"
,
...
...
@@ -1445,10 +1445,10 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req
->
Slot
=
slotP
;
sim_socket_manager
.
pdcch_frame
=
frameP
;
sim_socket_manager
.
pdcch_slot
=
slotP
;
sim_socket_manager
.
dl_sched_flag
|=
0x0
1
;
sim_socket_manager
.
dl_sched_flag
|=
0x0
8
;
sim_socket_manager
.
msg2_frame
=
frameP
;
sim_socket_manager
.
msg2_slot
=
slotP
;
sim_socket_manager
.
prach
_sched_flag
|=
0x02
;
sim_socket_manager
.
random_access
_sched_flag
|=
0x02
;
// Mark the corresponding symbols RBs as used
fill_pdcch_vrb_map
(
nr_mac
,
CC_id
,
...
...
@@ -1912,10 +1912,10 @@ static void nr_generate_Msg4(module_id_t module_idP,
LOG_I
(
PHY
,
"Msg4 send %d.%d
\n
"
,
frameP
,
slotP
);
sim_socket_manager
.
msg4_frame
=
frameP
;
sim_socket_manager
.
msg4_slot
=
slotP
;
sim_socket_manager
.
prach
_sched_flag
|=
0x08
;
sim_socket_manager
.
random_access
_sched_flag
|=
0x08
;
sim_socket_manager
.
pdcch_frame
=
frameP
;
sim_socket_manager
.
pdcch_slot
=
slotP
;
sim_socket_manager
.
dl_sched_flag
|=
0x
01
;
sim_socket_manager
.
dl_sched_flag
|=
0x
10
;
// Mark the corresponding symbols and RBs as used
fill_pdcch_vrb_map
(
nr_mac
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
67a0851b
...
...
@@ -49,6 +49,7 @@
#include "common/ran_context.h"
#include "executables/softmodem-common.h"
#include "slotmap.h"
extern
RAN_CONTEXT_t
RC
;
...
...
@@ -89,8 +90,10 @@ static void schedule_ssb(frame_t frame,
dl_config_pdu
->
ssb_pdu
.
ssb_pdu_rel15
.
precoding_and_beamforming
.
prgs_list
[
0
].
pm_idx
=
0
;
dl_config_pdu
->
ssb_pdu
.
ssb_pdu_rel15
.
precoding_and_beamforming
.
prgs_list
[
0
].
dig_bf_interface_list
[
0
].
beam_idx
=
beam_index
;
dl_req
->
nPDUs
++
;
LOG_D
(
MAC
,
"Scheduling ssb %d at frame %d and slot %d
\n
"
,
i_ssb
,
frame
,
slot
);
sim_socket_manager
.
ssb_frame
=
frame
;
sim_socket_manager
.
ssb_slot
=
slot
;
sim_socket_manager
.
pbch_sched_flag
|=
0x01
;
LOG_I
(
MAC
,
"Scheduling ssb %d at frame %d and slot %d
\n
"
,
i_ssb
,
frame
,
slot
);
}
static
void
fill_ssb_vrb_map
(
NR_COMMON_channels_t
*
cc
,
int
rbStart
,
int
ssb_subcarrier_offset
,
uint16_t
symStart
,
int
CC_id
)
...
...
@@ -101,8 +104,24 @@ static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subc
uint16_t
*
vrb_map
=
cc
[
CC_id
].
vrb_map
;
const
int
extra_prb
=
ssb_subcarrier_offset
>
0
;
for
(
int
rb
=
0
;
rb
<
20
+
extra_prb
;
rb
++
)
vrb_map
[
rbStart
+
rb
]
=
SL_to_bitmap
(
symStart
%
NR_SYMBOLS_PER_SLOT
,
4
);
for
(
int
rb
=
0
;
rb
<
20
+
extra_prb
;
rb
++
){
uint16_t
slbitmap
=
SL_to_bitmap
(
symStart
%
NR_SYMBOLS_PER_SLOT
,
4
);
vrb_map
[
rbStart
+
rb
]
=
slbitmap
;
sim_socket_manager
.
vrb_map_ssb_socket
[
rbStart
+
rb
]
|=
slbitmap
;
#ifdef VRB_MAP_TEST_MANAGER
printf
(
"RB:%d [%s %d] slbitmap %d
\n
"
,
rbStart
+
rb
,
__FUNCTION__
,
__LINE__
,
slbitmap
);
for
(
int
symbol
=
slbitmap
,
i
=
0
;
i
<
SYMBOL_PER_SLOT_MAP_SOCKET
;
i
++
,
symbol
=
symbol
>>
1
){
if
(
symbol
&
1
){
printf
(
"1 "
);
}
else
{
printf
(
"0 "
);
}
// printf("%d ",sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol]);
}
printf
(
"
\n
"
);
#endif
}
}
static
int
encode_mib
(
NR_BCCH_BCH_Message_t
*
mib
,
frame_t
frame
,
uint8_t
*
buffer
,
int
buf_size
)
...
...
@@ -381,7 +400,22 @@ static uint32_t schedule_control_sib1(module_id_t module_id,
gNB_mac
->
sched_ctrlCommon
->
cce_index
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
);
for
(
int
rb
=
0
;
rb
<
pdsch
->
rbSize
;
rb
++
)
{
vrb_map
[
rb
+
rbStart
]
|=
SL_to_bitmap
(
tda_info
->
startSymbolIndex
,
tda_info
->
nrOfSymbols
);
uint16_t
slbitmap
=
SL_to_bitmap
(
tda_info
->
startSymbolIndex
,
tda_info
->
nrOfSymbols
);
vrb_map
[
rb
+
rbStart
]
|=
slbitmap
;
sim_socket_manager
.
vrb_map_sib1_socket
[
rbStart
+
rb
]
|=
slbitmap
;
#ifdef VRB_MAP_TEST_MANAGER
printf
(
"RB:%d [%s %d] slbitmap %d
\n
"
,
rbStart
+
rb
,
__FUNCTION__
,
__LINE__
,
slbitmap
);
for
(
int
symbol
=
slbitmap
,
i
=
0
;
i
<
SYMBOL_PER_SLOT_MAP_SOCKET
;
i
++
,
symbol
=
symbol
>>
1
){
if
(
symbol
&
1
){
printf
(
"1 "
);
}
else
{
printf
(
"0 "
);
}
// printf("%d ",sim_socket_manager.vrb_map_ul_socket[(rb + sched_ctrl->sched_pusch.rbStart)*SYMBOL_PER_SLOT_MAP_SOCKET+symbol]);
}
printf
(
"
\n
"
);
#endif
}
return
TBS
;
}
...
...
@@ -567,6 +601,12 @@ void schedule_nr_sib1(module_id_t module_idP,
(
type0_PDCCH_CSS_config
->
num_rbs
>
0
)
&&
(
type0_PDCCH_CSS_config
->
active
==
true
))
{
sim_socket_manager
.
sib1_frame
=
frameP
;
sim_socket_manager
.
sib1_slot
=
slotP
;
sim_socket_manager
.
pbch_sched_flag
|=
0x02
;
sim_socket_manager
.
pdcch_frame
=
frameP
;
sim_socket_manager
.
pdcch_slot
=
slotP
;
sim_socket_manager
.
dl_sched_flag
|=
0x80
;
LOG_D
(
NR_MAC
,
"(%d.%d) SIB1 transmission: ssb_index %d
\n
"
,
frameP
,
slotP
,
type0_PDCCH_CSS_config
->
ssb_index
);
default_table_type_t
table_type
=
get_default_table_type
(
type0_PDCCH_CSS_config
->
type0_pdcch_ss_mux_pattern
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_srs.c
View file @
67a0851b
...
...
@@ -547,19 +547,22 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
if
((
sched_ctrl
->
ul_failure
&&
!
get_softmodem_params
()
->
phy_test
)
||
sched_ctrl
->
rrc_processing_timer
>
0
)
{
continue
;
}
LOG_D
(
NR_MAC
,
" %d.%d pass2
\n
"
,
frame
,
slot
);
NR_SRS_Config_t
*
srs_config
=
current_BWP
->
srs_Config
;
if
(
!
srs_config
)
continue
;
LOG_D
(
NR_MAC
,
" %d.%d pass3
\n
"
,
frame
,
slot
);
for
(
int
rs
=
0
;
rs
<
srs_config
->
srs_ResourceSetToAddModList
->
list
.
count
;
rs
++
)
{
// Find periodic resource set
NR_SRS_ResourceSet_t
*
srs_resource_set
=
srs_config
->
srs_ResourceSetToAddModList
->
list
.
array
[
rs
];
if
(
srs_resource_set
->
resourceType
.
present
!=
NR_SRS_ResourceSet__resourceType_PR_periodic
)
{
LOG_D
(
NR_MAC
,
" %d.%d pass5 rs %d srs_resource_set->resourceType.present %d
\n
"
,
frame
,
slot
,
rs
,
srs_resource_set
->
resourceType
.
present
);
continue
;
}
LOG_D
(
NR_MAC
,
" %d.%d pass4
\n
"
,
frame
,
slot
);
// Find the corresponding srs resource
NR_SRS_Resource_t
*
srs_resource
=
NULL
;
for
(
int
r1
=
0
;
r1
<
srs_resource_set
->
srs_ResourceIdList
->
list
.
count
;
r1
++
)
{
...
...
@@ -577,6 +580,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
if
(
srs_resource
==
NULL
)
{
continue
;
}
LOG_D
(
NR_MAC
,
" %d.%d pass5
\n
"
,
frame
,
slot
);
NR_PUSCH_TimeDomainResourceAllocationList_t
*
tdaList
=
get_ul_tdalist
(
current_BWP
,
sched_ctrl
->
coreset
->
controlResourceSetId
,
sched_ctrl
->
search_space
->
searchSpaceType
->
present
,
NR_RNTI_C
);
const
int
num_tda
=
tdaList
->
list
.
count
;
...
...
@@ -594,7 +598,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
const
uint16_t
period
=
srs_period
[
srs_resource
->
resourceType
.
choice
.
periodic
->
periodicityAndOffset_p
.
present
];
const
uint16_t
offset
=
get_nr_srs_offset
(
srs_resource
->
resourceType
.
choice
.
periodic
->
periodicityAndOffset_p
);
LOG_D
(
NR_MAC
,
" %d.%d pass1 Scheduling SRS reception for %d.%d
\n
"
,
frame
,
slot
,
sched_frame
,
sched_slot
);
// Check if UE will transmit the SRS in this frame
if
((
sched_frame
*
n_slots_frame
+
sched_slot
-
offset
)
%
period
==
0
)
{
LOG_I
(
NR_MAC
,
" %d.%d Scheduling SRS reception for %d.%d
\n
"
,
frame
,
slot
,
sched_frame
,
sched_slot
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
View file @
67a0851b
...
...
@@ -1782,7 +1782,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl
->
cce_index
=
CCEIndex
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_slot
=
slot
;
sim_socket_manager
.
dl_sched_flag
|=
0x
01
;
sim_socket_manager
.
dl_sched_flag
|=
0x
20
;
fill_pdcch_vrb_map
(
nrmac
,
CC_id
,
&
sched_ctrl
->
sched_pdcch
,
...
...
@@ -1944,7 +1944,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl
->
cce_index
=
CCEIndex
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_slot
=
slot
;
sim_socket_manager
.
dl_sched_flag
|=
0x
01
;
sim_socket_manager
.
dl_sched_flag
|=
0x
20
;
fill_pdcch_vrb_map
(
nrmac
,
CC_id
,
&
sched_ctrl
->
sched_pdcch
,
...
...
openair2/LAYER2/NR_MAC_gNB/slotmap.h
View file @
67a0851b
...
...
@@ -12,7 +12,7 @@
#define MAX_UE_NUMBER_MAP_SOCKET 1
//
#define VRB_MAP_TEST_MANAGER
#define VRB_MAP_TEST_MANAGER
typedef
struct
{
uint16_t
data_len
;
...
...
@@ -21,13 +21,20 @@ typedef struct {
uint16_t
frame
;
uint16_t
slot
;
uint16_t
measurement_flag
;
/*LSB -> MSB : masg1 || masg2 || masg3 || masg4*/
uint16_t
prach_sched_flag
;
/*LSB -> MSB : pdcch || pdsch || csirs*/
/*LSB -> MSB : ssb || sib1*/
uint16_t
pbch_sched_flag
;
/*LSB -> MSB : msg1 || msg2 || msg3 || msg4*/
uint16_t
random_access_sched_flag
;
/*LSB -> MSB : pdcch_to_pdsch || pdsch || csirs || pdcch_to_msg2 || pdcch_to_msg4 || pdcch_to_pusch || pdcch_to_sib1*/
uint16_t
dl_sched_flag
;
/*LSB -> MSB : ulsch || acknack || csi-report || sr || srs*/
/*LSB -> MSB : ulsch || acknack || csi-report || sr || srs
|| prach
*/
uint16_t
ul_sched_flag
;
uint16_t
ssb_frame
;
uint16_t
ssb_slot
;
uint16_t
sib1_frame
;
uint16_t
sib1_slot
;
uint16_t
msg1_frame
;
uint16_t
msg1_slot
;
uint16_t
msg2_frame
;
...
...
@@ -44,16 +51,18 @@ typedef struct {
uint16_t
csirs_frame
;
uint16_t
csirs_slot
;
uint16_t
csi_report_frame
;
uint16_t
sr_frame
;
uint16_t
srs_frame
;
uint16_t
acknack_frame
;
uint16_t
prach_frame
;
uint16_t
prach_slot
;
uint16_t
ulsch_frame
;
uint16_t
ulsch_slot
;
uint16_t
acknack_frame
;
uint16_t
acknack_slot
;
uint16_t
csi_report_frame
;
uint16_t
csi_report_slot
;
uint16_t
sr_frame
;
uint16_t
sr_slot
;
uint16_t
srs_frame
;
uint16_t
srs_slot
;
uint16_t
acknack_slot
;
uint16_t
ulsch_slot
;
uint16_t
dl_recv_bytes_high16
;
uint16_t
dl_recv_bytes_low16
;
...
...
@@ -67,6 +76,8 @@ typedef struct {
int16_t
pusch_snr
;
int16_t
rsrp
;
uint16_t
vrb_map_ssb_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_sib1_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_msg1_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_msg2_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_msg3_socket
[
RB_TOTAL_MAP_SOCKET
];
...
...
@@ -74,11 +85,13 @@ typedef struct {
uint16_t
vrb_map_pdcch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_pdsch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_csirs_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_prach_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_pusch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_acknack_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_csi_report_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_sr_report_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_srs_socket
[
RB_TOTAL_MAP_SOCKET
];
}
sim_socket_t
;
extern
sim_socket_t
sim_socket_manager
;
...
...
openair2/RRC/NR/nr_rrc_config.c
View file @
67a0851b
...
...
@@ -651,6 +651,7 @@ static void config_srs(const NR_ServingCellConfigCommon_t *scc,
NR_SRS_Resource_t
*
srs_res0
=
calloc
(
1
,
sizeof
(
*
srs_res0
));
srs_res0
->
srs_ResourceId
=
res_id
;
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
LOG_I
(
NR_RRC
,
"do_srs %d
\n
"
,
do_srs
);
if
(
do_srs
)
{
long
nrofSRS_Ports
=
1
;
if
(
uecap
&&
...
...
@@ -2220,7 +2221,7 @@ static NR_SpCellConfig_t *get_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
(
scc
,
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
);
//configuration->do_SRS
scheduling_request_config
(
scc
,
pucch_Config
,
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
genericParameters
.
subcarrierSpacing
);
...
...
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