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
4e6db871
Commit
4e6db871
authored
Nov 28, 2023
by
liuxu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
restructure measurement data231128
parent
8ef5460a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
153 additions
and
107 deletions
+153
-107
executables/gnbSendToManager_client.c
executables/gnbSendToManager_client.c
+5
-4
executables/nr-softmodem.c
executables/nr-softmodem.c
+1
-2
executables/sever_manager_py.py
executables/sever_manager_py.py
+83
-53
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
+6
-12
openair2/LAYER2/NR_MAC_gNB/main.c
openair2/LAYER2/NR_MAC_gNB/main.c
+38
-22
openair2/LAYER2/NR_MAC_gNB/slotmap.h
openair2/LAYER2/NR_MAC_gNB/slotmap.h
+20
-14
No files found.
executables/gnbSendToManager_client.c
View file @
4e6db871
...
...
@@ -18,14 +18,12 @@
#define GNBSENDTOMANAGER_MAX_RE_SCHDULE_LEN (sizeof(sim_socket_t))
#define GNBSENDTOMANAGER_MAX_RRC_SIGNALING_LEN (sizeof(sim_rrc_signaling_socket))
#define GNBSENDTOMANAGER_MAX_MEASUREMENT_LEN (sizeof(sim_measurement_t))
sem_t
gnbSendToManager_sem
;
uint8_t
*
gnbSendToManager_buf
;
unsigned
int
gnbSendToManager_len
;
pthread_mutex_t
sim_mutex_socket
;
uint16_t
message_flag
;
void
*
gnbSendToManager_task
(
void
*
args_p
)
{
printf
(
"entering gnbSendToManager_task1
\n
"
);
...
...
@@ -57,7 +55,7 @@ void *gnbSendToManager_task(void *args_p)
else
{
printf
(
"create socket successfully
\n
"
);
}
int
gnb_flag
=
*
(
int
*
)
args_p
;
addr
.
sin_family
=
AF_INET
;
addr
.
sin_port
=
htons
(
atoi
(
sever_ip_port
));
addr
.
sin_addr
.
s_addr
=
inet_addr
(
sever_ip_address
);
...
...
@@ -82,6 +80,9 @@ void *gnbSendToManager_task(void *args_p)
else
if
(
message_flag
==
2
){
send_len
=
write
(
sockfd
,
&
sim_socket_manager
,
GNBSENDTOMANAGER_MAX_RE_SCHDULE_LEN
);
}
else
if
(
message_flag
==
3
){
send_len
=
write
(
sockfd
,
&
sim_measurement_manager
,
GNBSENDTOMANAGER_MAX_MEASUREMENT_LEN
);
}
// printf("send_len=%d\n", send_len);
}
...
...
executables/nr-softmodem.c
View file @
4e6db871
...
...
@@ -638,9 +638,8 @@ int main( int argc, char **argv ) {
pthread_mutex_init
(
&
sim_mutex_socket
,
NULL
);
sem_init
(
&
gnbSendToManager_sem
,
0
,
0
);
pthread_t
ntid
;
int
gnb_flag
=
1
;
message_flag
=
0
;
if
(
pthread_create
(
&
ntid
,
NULL
,
gnbSendToManager_task
,
&
gnb_flag
)
<
0
)
{
if
(
pthread_create
(
&
ntid
,
NULL
,
gnbSendToManager_task
,
NULL
)
<
0
)
{
fprintf
(
stderr
,
"gnbSendToManager_task: Failed to create thread: %s
\n
"
,
strerror
(
errno
));
exit
(
0
);
...
...
executables/sever_manager_py.py
View file @
4e6db871
...
...
@@ -40,6 +40,8 @@ rrc_gNB_to_UE = [
schedule_data
=
collections
.
OrderedDict
()
rrc_data
=
[]
# 0 is first tag
schedule_data
[
"ssb"
]
=
[]
schedule_data
[
"sib1"
]
=
[]
...
...
@@ -57,6 +59,17 @@ schedule_data["csi_report"] = []
schedule_data
[
"sr_report"
]
=
[]
schedule_data
[
"srs"
]
=
[]
measurement_data
=
collections
.
OrderedDict
()
measurement_data
[
"dl_velocity"
]
=
[]
measurement_data
[
"ul_velocity"
]
=
[]
measurement_data
[
"dl_bler"
]
=
[]
measurement_data
[
"ul_bler"
]
=
[]
measurement_data
[
"dl_mcs"
]
=
[]
measurement_data
[
"ul_mcs"
]
=
[]
measurement_data
[
"pucch_snr"
]
=
[]
measurement_data
[
"pusch_snr"
]
=
[]
measurement_data
[
"rsrp"
]
=
[]
server_socket
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
...
...
@@ -66,6 +79,7 @@ server_socket.bind((SERVER_IP, SERVER_PORT))
dl_recv_bytes_last
=
0
ul_recv_bytes_last
=
0
frame_last
=
0
time_last
=
0
while
True
:
data
,
client_address
=
server_socket
.
recvfrom
(
BUFFER_SIZE
)
...
...
@@ -74,69 +88,85 @@ while True:
data_len
,
message
=
struct
.
unpack
(
"2H"
,
data
[:
4
])
if
DEBUG_PRINT
:
print
(
"data_len %d message %d"
%
(
data_len
,
message
))
if
(
message
==
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
])
if
DEBUG_PRINT
:
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
:
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
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
[
80
:
80
+
22
])
if
(
message
==
1
):
rnti
,
recv_send_flag
,
rrc_signaling_type
,
rrc_signaling_request_type
=
struct
.
unpack
(
"2H2I"
,
data
[
4
:
16
])
# if DEBUG_PRINT:
print
(
"rrc_signaling_type %d rrc_signaling_request_type %d"
%
(
rrc_signaling_type
,
rrc_signaling_request_type
))
if
rrc_signaling_request_type
!=
0
:
rrc_data
.
append
([
hex
(
rnti
),
'gNB'
,
rrc_UE_to_gNB
[
rrc_signaling_request_type
-
1
]])
print
(
"Send:UE(rnti:%x), Receive:gNB, RRC signaling:%s"
%
(
rnti
,
rrc_UE_to_gNB
[
rrc_signaling_request_type
-
1
]))
if
rrc_signaling_type
!=
0
:
rrc_data
.
append
([
'gNB'
,
hex
(
rnti
),
rrc_gNB_to_UE
[
rrc_signaling_type
-
1
]])
print
(
"Send:gNB, Receive:UE(rnti:%x), RRC signaling:%s"
%
(
rnti
,
rrc_gNB_to_UE
[
rrc_signaling_type
-
1
]))
# print(rrc_data)
elif
(
message
==
3
):
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
[
4
:
4
+
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
ul_velocity
=
(
ul_recv_bytes
-
ul_recv_bytes_last
)
*
8.0
/
1e6
if
DEBUG_PRINT
:
print
(
"dl_recv_bytes %d dl_recv_bytes_last %d ul_recv_bytes %d ul_recv_bytes_last %d"
%
(
dl_recv_bytes
,
dl_recv_bytes_last
,
ul_recv_bytes
,
ul_recv_bytes_last
))
dl_velocity
=
(
float
)(
dl_recv_bytes
-
dl_recv_bytes_last
)
*
8
/
1e6
ul_velocity
=
(
float
)(
ul_recv_bytes
-
ul_recv_bytes_last
)
*
8
/
1e6
dl_bler
=
dl_bler
*
1.0
/
10000
ul_bler
=
ul_bler
*
1.0
/
10000
measurement_data
[
"dl_velocity"
]
=
dl_velocity
measurement_data
[
"ul_velocity"
]
=
ul_velocity
measurement_data
[
"dl_bler"
]
=
dl_bler
measurement_data
[
"ul_bler"
]
=
ul_bler
measurement_data
[
"dl_mcs"
]
=
dl_mcs
measurement_data
[
"ul_mcs"
]
=
ul_mcs
measurement_data
[
"pucch_snr"
]
=
pucch_snr
measurement_data
[
"pusch_snr"
]
=
pusch_snr
measurement_data
[
"rsrp"
]
=
rsrp
# print(measurement_data)
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
(
"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"
%
(
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
ul_recv_bytes_last
=
ul_recv_bytes
elif
(
message
==
2
):
CC_id
,
frame
,
slot
,
pbch_sched_flag
,
random_access_sched_flag
,
dl_sched_flag
,
ul_sched_flag
=
struct
.
unpack
(
"7H"
,
data
[
4
:
18
])
if
DEBUG_PRINT
:
print
(
"%d.%d pbch_sched_flag %x random_access_sched_flag %x dl_sched_flag %x ul_sched_flag %x"
%
(
frame
,
slot
,
pbch_sched_flag
,
random_access_sched_flag
,
dl_sched_flag
,
ul_sched_flag
))
schedule_timing
=
struct
.
unpack
(
"30H"
,
data
[
18
:
78
])
if
DEBUG_PRINT
:
i
=
0
for
map_type
in
schedule_data
.
keys
():
if
i
<
15
:
print
(
"%s %d.%d"
%
(
map_type
,
schedule_timing
[
i
*
2
],
schedule_timing
[
i
*
2
+
1
]))
i
=
i
+
1
print
(
""
)
count
=
0
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 for %s:"
%
(
map_type
))
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
receive_map
[
i
]):
for
bitnum
in
range
(
14
):
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
,
receive_map
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
map_type
])
count
=
count
+
1
# for map_type in schedule_data:
for
map_type
in
list
(
schedule_data
.
keys
()):
if
count
<
15
:
if
frame
!=
frame_last
:
schedule_data
[
map_type
]
=
[]
receive_map
=
struct
.
unpack
(
"275H"
,
data
[
78
+
550
*
count
:
78
+
550
*
(
count
+
1
)])
if
DEBUG_PRINT
:
print
(
"Schedule for %s:"
%
(
map_type
))
print
(
"RB
\t
slbitmap"
)
for
i
in
range
(
275
):
if
(
receive_map
[
i
]):
for
bitnum
in
range
(
14
):
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
,
receive_map
[
i
]))
if
DEBUG_PRINT
:
print
(
schedule_data
[
map_type
])
count
=
count
+
1
frame_last
=
frame
if
DEBUG_PRINT
:
print
(
schedule_data
)
elif
(
message
==
1
):
rnti
,
recv_send_flag
,
rrc_signaling_type
,
rrc_signaling_request_type
=
struct
.
unpack
(
"2H2I"
,
data
[
4
:
16
])
# if DEBUG_PRINT:
print
(
"rrc_signaling_type %d rrc_signaling_request_type %d"
%
(
rrc_signaling_type
,
rrc_signaling_request_type
))
if
rrc_signaling_request_type
!=
0
:
print
(
"Send:UE(rnti:%x), Receive:gNB, RRC signaling:%s"
%
(
rnti
,
rrc_UE_to_gNB
[
rrc_signaling_request_type
-
1
]))
if
rrc_signaling_type
!=
0
:
print
(
"Send:gNB, Receive:UE(rnti:%x), RRC signaling:%s"
%
(
rnti
,
rrc_gNB_to_UE
[
rrc_signaling_type
-
1
]))
# shared_value_lock.acquire()
# socket_value = schedule_data
# shared_value_lock.release()
# print(socket_value)
# print(type(socket_value))
server_socket
.
close
()
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler.c
View file @
4e6db871
...
...
@@ -57,7 +57,7 @@
const
uint8_t
nr_rv_round_map
[
4
]
=
{
0
,
2
,
3
,
1
};
sim_socket_t
sim_socket_manager
;
sim_measurement_t
sim_measurement_manager
;
void
clear_nr_nfapi_information
(
gNB_MAC_INST
*
gNB
,
int
CC_idP
,
...
...
@@ -224,10 +224,10 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
// }
}
if
((
slot
==
0
)
&&
(
frame
&
100
)
==
0
)
{
if
((
slot
==
0
)
&&
(
frame
%
100
==
0
)
)
{
char
stats_output
[
16000
]
=
{
0
};
dump_mac_stats
(
gNB
,
stats_output
,
sizeof
(
stats_output
),
true
);
LOG_
D
(
NR_MAC
,
"Frame.Slot %d.%d
\n
%s
\n
"
,
frame
,
slot
,
stats_output
);
LOG_
I
(
NR_MAC
,
"Frame.Slot %d.%d
\n
%s
\n
"
,
frame
,
slot
,
stats_output
);
}
...
...
@@ -294,7 +294,7 @@ 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
.
random_access_sched_flag
||
\
if
(
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
;
...
...
@@ -304,10 +304,10 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
// gnbSendToManager_len = sim_socket_manager.data_len;
#ifdef VRB_MAP_TEST_MANAGER
LOG_I
(
NR_MAC
,
"data_len %d
\n
"
,
sim_socket_manager
.
data_len
);
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 "
LOG_I
(
NR_MAC
,
"[%d.%d]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
.
frame
,
sim_socket_manager
.
slot
,
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
,
...
...
@@ -317,12 +317,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frame, sub_frame_
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
);
LOG_I
(
NR_MAC
,
"%d.%d: dl_recv_bytes %dbytes, ul_recv_bytes %dbytes, dl_mcs %d, ul_mcs %d, dl_bler %d, ul_bler %d, pucch_snr %ddB, pusch_snr %ddB, rsrp %ddBm
\n
"
,
sim_socket_manager
.
frame
,
sim_socket_manager
.
slot
,
(
sim_socket_manager
.
dl_recv_bytes_high16
<<
16
)
+
sim_socket_manager
.
dl_recv_bytes_low16
,
(
sim_socket_manager
.
ul_recv_bytes_high16
<<
16
)
+
sim_socket_manager
.
ul_recv_bytes_low16
,
sim_socket_manager
.
dl_mcs
,
sim_socket_manager
.
ul_mcs
,
sim_socket_manager
.
dl_bler
,
sim_socket_manager
.
ul_bler
,
sim_socket_manager
.
pucch_snr
,
sim_socket_manager
.
pusch_snr
,
sim_socket_manager
.
rsrp
);
#endif
pthread_mutex_unlock
(
&
sim_mutex_socket
);
sem_post
(
&
gnbSendToManager_sem
);
...
...
openair2/LAYER2/NR_MAC_gNB/main.c
View file @
4e6db871
...
...
@@ -104,30 +104,46 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
NR_mac_stats_t
*
stats
=
&
UE
->
mac_stats
;
const
int
avg_rsrp
=
stats
->
num_rsrp_meas
>
0
?
stats
->
cumul_rsrp
/
stats
->
num_rsrp_meas
:
0
;
sim_socket_manager
.
dl_recv_bytes_high16
=
(
stats
->
dl
.
total_bytes
>>
16
)
&
0x0000ffff
;
sim_socket_manager
.
dl_recv_bytes_low16
=
stats
->
dl
.
total_bytes
&
0x0000ffff
;
sim_socket_manager
.
ul_recv_bytes_high16
=
(
stats
->
ul
.
total_bytes
>>
16
)
&
0x0000ffff
;
sim_socket_manager
.
ul_recv_bytes_low16
=
stats
->
ul
.
total_bytes
&
0x0000ffff
;
sim_socket_manager
.
dl_mcs
=
sched_ctrl
->
dl_bler_stats
.
mcs
;
sim_socket_manager
.
ul_mcs
=
sched_ctrl
->
ul_bler_stats
.
mcs
;
sim_socket_manager
.
dl_bler
=
sched_ctrl
->
dl_bler_stats
.
bler
*
10000
;
sim_socket_manager
.
ul_bler
=
sched_ctrl
->
ul_bler_stats
.
bler
*
10000
;
sim_socket_manager
.
pucch_snr
=
sched_ctrl
->
pucch_snrx10
/
10
;
sim_socket_manager
.
pusch_snr
=
sched_ctrl
->
pusch_snrx10
/
10
;
sim_socket_manager
.
rsrp
=
avg_rsrp
;
sim_socket_manager
.
measurement_flag
|=
0x01
;
pthread_mutex_lock
(
&
sim_mutex_socket
);
message_flag
=
3
;
sim_measurement_manager
.
data_len
=
sizeof
(
sim_measurement_t
);
sim_measurement_manager
.
message
=
3
;
sim_measurement_manager
.
dl_recv_bytes_high16
=
(
stats
->
dl
.
total_bytes
>>
16
)
&
0x0000ffff
;
sim_measurement_manager
.
dl_recv_bytes_low16
=
stats
->
dl
.
total_bytes
&
0x0000ffff
;
sim_measurement_manager
.
ul_recv_bytes_high16
=
(
stats
->
ul
.
total_bytes
>>
16
)
&
0x0000ffff
;
sim_measurement_manager
.
ul_recv_bytes_low16
=
stats
->
ul
.
total_bytes
&
0x0000ffff
;
sim_measurement_manager
.
dl_mcs
=
sched_ctrl
->
dl_bler_stats
.
mcs
;
sim_measurement_manager
.
ul_mcs
=
sched_ctrl
->
ul_bler_stats
.
mcs
;
sim_measurement_manager
.
dl_bler
=
sched_ctrl
->
dl_bler_stats
.
bler
*
10000
;
sim_measurement_manager
.
ul_bler
=
sched_ctrl
->
ul_bler_stats
.
bler
*
10000
;
sim_measurement_manager
.
pucch_snr
=
sched_ctrl
->
pucch_snrx10
/
10
;
sim_measurement_manager
.
pusch_snr
=
sched_ctrl
->
pusch_snrx10
/
10
;
sim_measurement_manager
.
rsrp
=
avg_rsrp
;
// uint64_t diff = ((double)(end_time_manager - start_time_manager) / CLOCKS_PER_SEC)*10000;
// if (diff == 0){
// printf("frame %d slot %d\n", sim_socket_manager.frame, sim_socket_manager.slot);
// exit(1);
// }
// sim_measurement_manager.time_diff_high16 = (diff>>16)&0x0000ffff;
// sim_measurement_manager.time_diff_low16 = diff&0x0000ffff;
// printf("dl %d ul %d\n", stats->dl.current_bytes,stats->ul.current_bytes);
#ifdef VRB_MAP_TEST_MANAGER
printf
(
"stats->dl.total_bytes %ld stats->ul.total_bytes %ld
\n
"
,
stats
->
dl
.
total_bytes
,
stats
->
ul
.
total_bytes
);
printf
(
"sim_socket_manager.dl_recv_bytes_high16 %d sim_socket_manager.dl_recv_bytes_low16 %d sim_socket_manager.ul_recv_bytes_high16 %d sim_socket_manager.ul_recv_bytes_low16 %d
\n
"
,
sim_socket_manager
.
dl_recv_bytes_high16
,
sim_socket_manager
.
dl_recv_bytes_low16
,
sim_socket_manager
.
ul_recv_bytes_high16
,
sim_socket_manager
.
ul_recv_bytes_low16
);
printf
(
"%d.%d: dl_recv_bytes %dbytes, ul_recv_bytes %dbytes, dl_mcs %d, ul_mcs %d, dl_bler %d, ul_bler %d, pucch_snr %ddB, pusch_snr %ddB, rsrp %ddBm
\n
"
,
sim_socket_manager
.
frame
,
sim_socket_manager
.
slot
,
(
sim_socket_manager
.
dl_recv_bytes_high16
<<
16
)
+
sim_socket_manager
.
dl_recv_bytes_low16
,
(
sim_socket_manager
.
ul_recv_bytes_high16
<<
16
)
+
sim_socket_manager
.
ul_recv_bytes_low16
,
sim_socket_manager
.
dl_mcs
,
sim_socket_manager
.
ul_mcs
,
sim_socket_manager
.
dl_bler
,
sim_socket_manager
.
ul_bler
,
sim_socket_manager
.
pucch_snr
,
sim_socket_manager
.
pusch_snr
,
sim_socket_manager
.
rsrp
);
LOG_I
(
NR_MAC
,
"data_len %d
\n
"
,
sim_socket_manager
.
data_len
);
LOG_I
(
NR_MAC
,
"stats->dl.total_bytes %ld stats->ul.total_bytes %ld
\n
"
,
stats
->
dl
.
total_bytes
,
stats
->
ul
.
total_bytes
);
LOG_I
(
NR_MAC
,
"sim_measurement_manager.dl_recv_bytes_high16 %d sim_measurement_manager.dl_recv_bytes_low16 %d sim_measurement_manager.ul_recv_bytes_high16 %d sim_measurement_manager.ul_recv_bytes_low16 %d
\n
"
,
sim_measurement_manager
.
dl_recv_bytes_high16
,
sim_measurement_manager
.
dl_recv_bytes_low16
,
sim_measurement_manager
.
ul_recv_bytes_high16
,
sim_measurement_manager
.
ul_recv_bytes_low16
);
LOG_I
(
NR_MAC
,
"dl_recv_bytes %dbytes, ul_recv_bytes %dbytes,dl_mcs %d, ul_mcs %d, dl_bler %d, ul_bler %d, pucch_snr %ddB, pusch_snr %ddB, rsrp %ddBm
\n
"
,
(
sim_measurement_manager
.
dl_recv_bytes_high16
<<
16
)
+
sim_measurement_manager
.
dl_recv_bytes_low16
,
(
sim_measurement_manager
.
ul_recv_bytes_high16
<<
16
)
+
sim_measurement_manager
.
ul_recv_bytes_low16
,
// (sim_measurement_manager.time_diff_high16<<16)+sim_measurement_manager.time_diff_low16,
sim_measurement_manager
.
dl_mcs
,
sim_measurement_manager
.
ul_mcs
,
sim_measurement_manager
.
dl_bler
,
sim_measurement_manager
.
ul_bler
,
sim_measurement_manager
.
pucch_snr
,
sim_measurement_manager
.
pusch_snr
,
sim_measurement_manager
.
rsrp
);
#endif
pthread_mutex_unlock
(
&
sim_mutex_socket
);
sem_post
(
&
gnbSendToManager_sem
);
output
+=
snprintf
(
output
,
end
-
output
,
"UE RNTI %04x (%d) PH %d dB PCMAX %d dBm, average RSRP %d (%d meas)
\n
"
,
...
...
openair2/LAYER2/NR_MAC_gNB/slotmap.h
View file @
4e6db871
...
...
@@ -20,7 +20,6 @@ typedef struct {
uint16_t
CC_id
;
uint16_t
frame
;
uint16_t
slot
;
uint16_t
measurement_flag
;
/*LSB -> MSB : ssb || sib1*/
uint16_t
pbch_sched_flag
;
/*LSB -> MSB : msg1 || msg2 || msg3 || msg4*/
...
...
@@ -62,19 +61,7 @@ typedef struct {
uint16_t
sr_frame
;
uint16_t
sr_slot
;
uint16_t
srs_frame
;
uint16_t
srs_slot
;
uint16_t
dl_recv_bytes_high16
;
uint16_t
dl_recv_bytes_low16
;
uint16_t
ul_recv_bytes_high16
;
uint16_t
ul_recv_bytes_low16
;
uint16_t
dl_mcs
;
uint16_t
ul_mcs
;
uint16_t
dl_bler
;
uint16_t
ul_bler
;
int16_t
pucch_snr
;
int16_t
pusch_snr
;
int16_t
rsrp
;
uint16_t
srs_slot
;
uint16_t
vrb_map_ssb_socket
[
RB_TOTAL_MAP_SOCKET
];
uint16_t
vrb_map_sib1_socket
[
RB_TOTAL_MAP_SOCKET
];
...
...
@@ -94,7 +81,26 @@ typedef struct {
}
sim_socket_t
;
typedef
struct
{
uint16_t
data_len
;
uint16_t
message
;
uint16_t
dl_recv_bytes_high16
;
uint16_t
dl_recv_bytes_low16
;
uint16_t
ul_recv_bytes_high16
;
uint16_t
ul_recv_bytes_low16
;
// uint16_t time_diff_high16;
// uint16_t time_diff_low16;
uint16_t
dl_mcs
;
uint16_t
ul_mcs
;
uint16_t
dl_bler
;
uint16_t
ul_bler
;
int16_t
pucch_snr
;
int16_t
pusch_snr
;
int16_t
rsrp
;
}
sim_measurement_t
;
extern
sim_socket_t
sim_socket_manager
;
extern
sim_measurement_t
sim_measurement_manager
;
// extern uint16_t vrb_map_socket[MAX_UE_NUMBER_MAP_SOCKET][SLOT_PER_FRAME_MAP_SOCKET][RB_TOTAL_MAP_SOCKET];
...
...
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