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
Expand all
Hide 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
This diff is collapsed.
Click to expand it.
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_
...
@@ -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_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_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_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
.
CC_id
=
CC_id
;
sim_socket_manager
.
slot
=
slot
;
sim_socket_manager
.
slot
=
slot
;
...
@@ -294,7 +294,8 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
...
@@ -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
);
NR_SCHED_UNLOCK
(
&
gNB
->
sched_lock
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_gNB_DLSCH_ULSCH_SCHEDULER
,
VCD_FUNCTION_OUT
);
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
);
pthread_mutex_lock
(
&
sim_mutex_socket
);
message_flag
=
2
;
message_flag
=
2
;
// gnbSendToManager_buf = &sim_socket_manager;
// gnbSendToManager_buf = &sim_socket_manager;
...
@@ -302,14 +303,16 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
...
@@ -302,14 +303,16 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
sim_socket_manager
.
message
=
2
;
sim_socket_manager
.
message
=
2
;
// gnbSendToManager_len = sim_socket_manager.data_len;
// gnbSendToManager_len = sim_socket_manager.data_len;
LOG_D
(
NR_MAC
,
"data_len %d
\n
"
,
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 "
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 "
"csirs %d.%d ulsch %d.%d acknack %d.%d csi_report %d.%d sr %d.%d srs %d.%d
\n
"
,
"ssb %d.%d sib1 %d.%d msg1 %d.%d msg2 %d.%d msg3 %d.%d msg4 %d.%d pdcch %d.%d pdsch %d.%d "
sim_socket_manager
.
frame
,
sim_socket_manager
.
slot
,
"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
.
measurement_flag
,
sim_socket_manager
.
prach_sched_flag
,
sim_socket_manager
.
dl_sched_flag
,
sim_socket_manager
.
ul_sched_flag
,
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
.
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
.
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
.
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
.
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
.
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
);
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
...
@@ -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
,
prach_pdu
->
num_cs
=
get_NCS
(
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
rach_ConfigGeneric
.
zeroCorrelationZoneConfig
,
format0
,
format0
,
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
restrictedSetConfig
);
scc
->
uplinkConfigCommon
->
initialUplinkBWP
->
rach_ConfigCommon
->
choice
.
setup
->
restrictedSetConfig
);
sim_socket_manager
.
msg1
_frame
=
frameP
;
sim_socket_manager
.
prach
_frame
=
frameP
;
sim_socket_manager
.
msg1
_slot
=
slotP
;
sim_socket_manager
.
prach
_slot
=
slotP
;
sim_socket_manager
.
prach_sched_flag
|=
0x01
;
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
"
,
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
,
frameP
,
slotP
,
prach_occasion_id
,
prach_pdu
->
num_ra
,
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
...
@@ -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
){
for
(
int
i
=
0
;
i
<
N_RA_RB
*
fdm
;
++
i
){
uint16_t
slbitmap
=
SL_to_bitmap
(
start_symbol
,
N_t_slot
*
N_dur
);
uint16_t
slbitmap
=
SL_to_bitmap
(
start_symbol
,
N_t_slot
*
N_dur
);
vrb_map_UL
[
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
]
|=
slbitmap
;
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
#ifdef VRB_MAP_TEST_MANAGER
printf
(
"RB:%d [%s %d] slbitmap %d
\n
"
,
bwp_start
+
rach_ConfigGeneric
->
msg1_FrequencyStart
+
i
,
__FUNCTION__
,
__LINE__
,
slbitmap
);
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
){
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
...
@@ -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
];
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_frame
=
ra
->
Msg3_frame
;
sim_socket_manager
.
msg3_slot
=
ra
->
Msg3_slot
;
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
)
{
for
(
int
i
=
0
;
i
<
ra
->
msg3_nb_rb
;
++
i
)
{
AssertFatal
(
!
(
vrb_map_UL
[
i
+
ra
->
msg3_first_rb
+
ra
->
msg3_bwp_start
]
&
mask
),
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
"
,
"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,
...
@@ -1445,10 +1445,10 @@ static void nr_generate_Msg2(module_id_t module_idP,
TX_req
->
Slot
=
slotP
;
TX_req
->
Slot
=
slotP
;
sim_socket_manager
.
pdcch_frame
=
frameP
;
sim_socket_manager
.
pdcch_frame
=
frameP
;
sim_socket_manager
.
pdcch_slot
=
slotP
;
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_frame
=
frameP
;
sim_socket_manager
.
msg2_slot
=
slotP
;
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
// Mark the corresponding symbols RBs as used
fill_pdcch_vrb_map
(
nr_mac
,
fill_pdcch_vrb_map
(
nr_mac
,
CC_id
,
CC_id
,
...
@@ -1912,10 +1912,10 @@ static void nr_generate_Msg4(module_id_t module_idP,
...
@@ -1912,10 +1912,10 @@ static void nr_generate_Msg4(module_id_t module_idP,
LOG_I
(
PHY
,
"Msg4 send %d.%d
\n
"
,
frameP
,
slotP
);
LOG_I
(
PHY
,
"Msg4 send %d.%d
\n
"
,
frameP
,
slotP
);
sim_socket_manager
.
msg4_frame
=
frameP
;
sim_socket_manager
.
msg4_frame
=
frameP
;
sim_socket_manager
.
msg4_slot
=
slotP
;
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_frame
=
frameP
;
sim_socket_manager
.
pdcch_slot
=
slotP
;
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
// Mark the corresponding symbols and RBs as used
fill_pdcch_vrb_map
(
nr_mac
,
fill_pdcch_vrb_map
(
nr_mac
,
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
67a0851b
...
@@ -49,6 +49,7 @@
...
@@ -49,6 +49,7 @@
#include "common/ran_context.h"
#include "common/ran_context.h"
#include "executables/softmodem-common.h"
#include "executables/softmodem-common.h"
#include "slotmap.h"
extern
RAN_CONTEXT_t
RC
;
extern
RAN_CONTEXT_t
RC
;
...
@@ -89,8 +90,10 @@ static void schedule_ssb(frame_t frame,
...
@@ -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
].
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_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
++
;
dl_req
->
nPDUs
++
;
sim_socket_manager
.
ssb_frame
=
frame
;
LOG_D
(
MAC
,
"Scheduling ssb %d at frame %d and slot %d
\n
"
,
i_ssb
,
frame
,
slot
);
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
)
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
...
@@ -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
;
uint16_t
*
vrb_map
=
cc
[
CC_id
].
vrb_map
;
const
int
extra_prb
=
ssb_subcarrier_offset
>
0
;
const
int
extra_prb
=
ssb_subcarrier_offset
>
0
;
for
(
int
rb
=
0
;
rb
<
20
+
extra_prb
;
rb
++
)
for
(
int
rb
=
0
;
rb
<
20
+
extra_prb
;
rb
++
){
vrb_map
[
rbStart
+
rb
]
=
SL_to_bitmap
(
symStart
%
NR_SYMBOLS_PER_SLOT
,
4
);
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
)
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,
...
@@ -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
->
cce_index
,
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
);
gNB_mac
->
sched_ctrlCommon
->
aggregation_level
);
for
(
int
rb
=
0
;
rb
<
pdsch
->
rbSize
;
rb
++
)
{
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
;
return
TBS
;
}
}
...
@@ -566,7 +600,13 @@ void schedule_nr_sib1(module_id_t module_idP,
...
@@ -566,7 +600,13 @@ void schedule_nr_sib1(module_id_t module_idP,
(
slotP
==
type0_PDCCH_CSS_config
->
n_0
)
&&
(
slotP
==
type0_PDCCH_CSS_config
->
n_0
)
&&
(
type0_PDCCH_CSS_config
->
num_rbs
>
0
)
&&
(
type0_PDCCH_CSS_config
->
num_rbs
>
0
)
&&
(
type0_PDCCH_CSS_config
->
active
==
true
))
{
(
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
);
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
);
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)
...
@@ -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
)
{
if
((
sched_ctrl
->
ul_failure
&&
!
get_softmodem_params
()
->
phy_test
)
||
sched_ctrl
->
rrc_processing_timer
>
0
)
{
continue
;
continue
;
}
}
LOG_D
(
NR_MAC
,
" %d.%d pass2
\n
"
,
frame
,
slot
);
NR_SRS_Config_t
*
srs_config
=
current_BWP
->
srs_Config
;
NR_SRS_Config_t
*
srs_config
=
current_BWP
->
srs_Config
;
if
(
!
srs_config
)
if
(
!
srs_config
)
continue
;
continue
;
LOG_D
(
NR_MAC
,
" %d.%d pass3
\n
"
,
frame
,
slot
);
for
(
int
rs
=
0
;
rs
<
srs_config
->
srs_ResourceSetToAddModList
->
list
.
count
;
rs
++
)
{
for
(
int
rs
=
0
;
rs
<
srs_config
->
srs_ResourceSetToAddModList
->
list
.
count
;
rs
++
)
{
// Find periodic resource set
// Find periodic resource set
NR_SRS_ResourceSet_t
*
srs_resource_set
=
srs_config
->
srs_ResourceSetToAddModList
->
list
.
array
[
rs
];
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
)
{
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
;
continue
;
}
}
LOG_D
(
NR_MAC
,
" %d.%d pass4
\n
"
,
frame
,
slot
);
// Find the corresponding srs resource
// Find the corresponding srs resource
NR_SRS_Resource_t
*
srs_resource
=
NULL
;
NR_SRS_Resource_t
*
srs_resource
=
NULL
;
for
(
int
r1
=
0
;
r1
<
srs_resource_set
->
srs_ResourceIdList
->
list
.
count
;
r1
++
)
{
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)
...
@@ -577,6 +580,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
if
(
srs_resource
==
NULL
)
{
if
(
srs_resource
==
NULL
)
{
continue
;
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
);
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
;
const
int
num_tda
=
tdaList
->
list
.
count
;
...
@@ -594,7 +598,7 @@ void nr_schedule_srs(int module_id, frame_t frame, int slot)
...
@@ -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
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
);
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
// Check if UE will transmit the SRS in this frame
if
((
sched_frame
*
n_slots_frame
+
sched_slot
-
offset
)
%
period
==
0
)
{
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
);
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,
...
@@ -1782,7 +1782,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl
->
cce_index
=
CCEIndex
;
sched_ctrl
->
cce_index
=
CCEIndex
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_slot
=
slot
;
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
,
fill_pdcch_vrb_map
(
nrmac
,
CC_id
,
CC_id
,
&
sched_ctrl
->
sched_pdcch
,
&
sched_ctrl
->
sched_pdcch
,
...
@@ -1944,7 +1944,7 @@ static void pf_ul(module_id_t module_id,
...
@@ -1944,7 +1944,7 @@ static void pf_ul(module_id_t module_id,
sched_ctrl
->
cce_index
=
CCEIndex
;
sched_ctrl
->
cce_index
=
CCEIndex
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_frame
=
frame
;
sim_socket_manager
.
pdcch_slot
=
slot
;
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
,
fill_pdcch_vrb_map
(
nrmac
,
CC_id
,
CC_id
,
&
sched_ctrl
->
sched_pdcch
,
&
sched_ctrl
->
sched_pdcch
,
...
...
openair2/LAYER2/NR_MAC_gNB/slotmap.h
View file @
67a0851b
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
#define MAX_UE_NUMBER_MAP_SOCKET 1
#define MAX_UE_NUMBER_MAP_SOCKET 1
//
#define VRB_MAP_TEST_MANAGER
#define VRB_MAP_TEST_MANAGER
typedef
struct
{
typedef
struct
{
uint16_t
data_len
;
uint16_t
data_len
;
...
@@ -21,13 +21,20 @@ typedef struct {
...
@@ -21,13 +21,20 @@ typedef struct {
uint16_t
frame
;
uint16_t
frame
;
uint16_t
slot
;
uint16_t
slot
;
uint16_t
measurement_flag
;
uint16_t
measurement_flag
;
/*LSB -> MSB : masg1 || masg2 || masg3 || masg4*/
/*LSB -> MSB : ssb || sib1*/
uint16_t
prach_sched_flag
;
uint16_t
pbch_sched_flag
;
/*LSB -> MSB : pdcch || pdsch || csirs*/
/*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
;
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
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_frame
;
uint16_t
msg1_slot
;
uint16_t
msg1_slot
;
uint16_t
msg2_frame
;
uint16_t
msg2_frame
;
...
@@ -44,16 +51,18 @@ typedef struct {
...
@@ -44,16 +51,18 @@ typedef struct {
uint16_t
csirs_frame
;
uint16_t
csirs_frame
;
uint16_t
csirs_slot
;
uint16_t
csirs_slot
;
uint16_t
csi_report_frame
;
uint16_t
prach_frame
;
uint16_t
sr_frame
;
uint16_t
prach_slot
;
uint16_t
srs_frame
;
uint16_t
acknack_frame
;
uint16_t
ulsch_frame
;
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
csi_report_slot
;
uint16_t
sr_frame
;
uint16_t
sr_slot
;
uint16_t
sr_slot
;
uint16_t
srs_frame
;
uint16_t
srs_slot
;
uint16_t
srs_slot
;
uint16_t
acknack_slot
;
uint16_t
ulsch_slot
;
uint16_t
dl_recv_bytes_high16
;
uint16_t
dl_recv_bytes_high16
;
uint16_t
dl_recv_bytes_low16
;
uint16_t
dl_recv_bytes_low16
;
...
@@ -67,6 +76,8 @@ typedef struct {
...
@@ -67,6 +76,8 @@ typedef struct {
int16_t
pusch_snr
;
int16_t
pusch_snr
;
int16_t
rsrp
;
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_msg1_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_msg2_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
];
uint16_t
vrb_map_msg3_socket
[
RB_TOTAL_MAP_SOCKET
];
...
@@ -74,11 +85,13 @@ typedef struct {
...
@@ -74,11 +85,13 @@ typedef struct {
uint16_t
vrb_map_pdcch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_pdcch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_pdsch_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_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_pusch_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_acknack_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_csi_report_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_sr_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
];
uint16_t
vrb_map_srs_socket
[
RB_TOTAL_MAP_SOCKET
];
}
sim_socket_t
;
}
sim_socket_t
;
extern
sim_socket_t
sim_socket_manager
;
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,
...
@@ -651,6 +651,7 @@ static void config_srs(const NR_ServingCellConfigCommon_t *scc,
NR_SRS_Resource_t
*
srs_res0
=
calloc
(
1
,
sizeof
(
*
srs_res0
));
NR_SRS_Resource_t
*
srs_res0
=
calloc
(
1
,
sizeof
(
*
srs_res0
));
srs_res0
->
srs_ResourceId
=
res_id
;
srs_res0
->
srs_ResourceId
=
res_id
;
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
srs_res0
->
nrofSRS_Ports
=
NR_SRS_Resource__nrofSRS_Ports_port1
;
LOG_I
(
NR_RRC
,
"do_srs %d
\n
"
,
do_srs
);
if
(
do_srs
)
{
if
(
do_srs
)
{
long
nrofSRS_Ports
=
1
;
long
nrofSRS_Ports
=
1
;
if
(
uecap
&&
if
(
uecap
&&
...
@@ -2220,7 +2221,7 @@ static NR_SpCellConfig_t *get_initial_SpCellConfig(int uid,
...
@@ -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
// 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
));
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
);
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