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
e4ed054c
Commit
e4ed054c
authored
May 04, 2023
by
111
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add ric and changes for 4rx
parent
2e36b896
Changes
14
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
808 additions
and
135 deletions
+808
-135
CMakeLists.txt
CMakeLists.txt
+1
-0
executables/nr-gnb.c
executables/nr-gnb.c
+2
-2
executables/nr-ru.c
executables/nr-ru.c
+139
-51
executables/nr-softmodem-common.h
executables/nr-softmodem-common.h
+1
-0
executables/nr-softmodem.c
executables/nr-softmodem.c
+11
-0
executables/ric-interface.c
executables/ric-interface.c
+214
-0
executables/softmodem-common.h
executables/softmodem-common.h
+1
-0
openair1/PHY/NR_TRANSPORT/nr_prach.c
openair1/PHY/NR_TRANSPORT/nr_prach.c
+3
-2
openair1/PHY/NR_TRANSPORT/srs_rx.c
openair1/PHY/NR_TRANSPORT/srs_rx.c
+19
-7
openair1/PHY/defs_RU.h
openair1/PHY/defs_RU.h
+3
-1
openair1/PHY/defs_nr_common.h
openair1/PHY/defs_nr_common.h
+2
-0
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+2
-1
radio/OXGRF/USERSPACE/LIB/oxgrf_lib.c
radio/OXGRF/USERSPACE/LIB/oxgrf_lib.c
+86
-71
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.1x4.oxgrf.conf
...NERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.1x4.oxgrf.conf
+324
-0
No files found.
CMakeLists.txt
View file @
e4ed054c
...
@@ -2430,6 +2430,7 @@ add_executable(nr-softmodem
...
@@ -2430,6 +2430,7 @@ add_executable(nr-softmodem
${
OPENAIR_DIR
}
/executables/nr-ru.c
${
OPENAIR_DIR
}
/executables/nr-ru.c
${
OPENAIR_DIR
}
/executables/nr-softmodem.c
${
OPENAIR_DIR
}
/executables/nr-softmodem.c
${
OPENAIR_DIR
}
/executables/softmodem-common.c
${
OPENAIR_DIR
}
/executables/softmodem-common.c
${
OPENAIR_DIR
}
/executables/ric-interface.c
${
OPENAIR_DIR
}
/radio/COMMON/common_lib.c
${
OPENAIR_DIR
}
/radio/COMMON/common_lib.c
${
OPENAIR_DIR
}
/radio/COMMON/record_player.c
${
OPENAIR_DIR
}
/radio/COMMON/record_player.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
${
OPENAIR2_DIR
}
/RRC/NAS/nas_config.c
...
...
executables/nr-gnb.c
View file @
e4ed054c
...
@@ -403,7 +403,7 @@ void *tx_reorder_thread(void* param) {
...
@@ -403,7 +403,7 @@ void *tx_reorder_thread(void* param) {
if
(
resL1Reserve
)
{
if
(
resL1Reserve
)
{
resL1
=
resL1Reserve
;
resL1
=
resL1Reserve
;
if
(((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
!=
next_tx_slot
)
{
if
(((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
!=
next_tx_slot
)
{
LOG_E
(
PHY
,
"order mistake
\n
"
);
LOG_E
(
PHY
,
"order mistake
slot %d %d
\n
"
,
((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
,
next_tx_slot
);
resL1Reserve
=
NULL
;
resL1Reserve
=
NULL
;
resL1
=
pullTpool
(
&
gNB
->
L1_tx_out
,
&
gNB
->
threadPool
);
resL1
=
pullTpool
(
&
gNB
->
L1_tx_out
,
&
gNB
->
threadPool
);
}
}
...
@@ -415,7 +415,7 @@ void *tx_reorder_thread(void* param) {
...
@@ -415,7 +415,7 @@ void *tx_reorder_thread(void* param) {
resL1Reserve
=
resL1
;
resL1Reserve
=
resL1
;
resL1
=
pullTpool
(
&
gNB
->
L1_tx_out
,
&
gNB
->
threadPool
);
resL1
=
pullTpool
(
&
gNB
->
L1_tx_out
,
&
gNB
->
threadPool
);
if
(((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
!=
next_tx_slot
)
if
(((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
!=
next_tx_slot
)
LOG_E
(
PHY
,
"error, pull two msg, none is good
\n
"
);
LOG_E
(
PHY
,
"error, pull two msg, none is good
, slot %d %d
\n
"
,
((
processingData_L1tx_t
*
)
NotifiedFifoData
(
resL1
))
->
slot
,
next_tx_slot
);
}
}
}
}
if
(
resL1
==
NULL
)
if
(
resL1
==
NULL
)
...
...
executables/nr-ru.c
View file @
e4ed054c
This diff is collapsed.
Click to expand it.
executables/nr-softmodem-common.h
View file @
e4ed054c
...
@@ -154,4 +154,5 @@ extern int emulate_rf;
...
@@ -154,4 +154,5 @@ extern int emulate_rf;
extern
int
numerology
;
extern
int
numerology
;
extern
int
usrp_tx_thread
;
extern
int
usrp_tx_thread
;
extern
void
*
ric_interface_task
(
void
*
args_p
);
#endif
#endif
executables/nr-softmodem.c
View file @
e4ed054c
...
@@ -151,6 +151,8 @@ int otg_enabled;
...
@@ -151,6 +151,8 @@ int otg_enabled;
uint32_t
timing_advance
=
0
;
uint32_t
timing_advance
=
0
;
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
uint64_t
num_missed_slots
=
0
;
// counter for the number of missed slots
extern
sem_t
ric_send_sem
;
#include <executables/split_headers.h>
#include <executables/split_headers.h>
#include <SIMULATION/ETH_TRANSPORT/proto.h>
#include <SIMULATION/ETH_TRANSPORT/proto.h>
...
@@ -577,6 +579,15 @@ int main( int argc, char **argv ) {
...
@@ -577,6 +579,15 @@ int main( int argc, char **argv ) {
#endif
#endif
LOG_I
(
HW
,
"Version: %s
\n
"
,
PACKAGE_VERSION
);
LOG_I
(
HW
,
"Version: %s
\n
"
,
PACKAGE_VERSION
);
sem_init
(
&
ric_send_sem
,
0
,
0
);
pthread_t
ntid
;
int
gnb_flag
=
1
;
if
(
pthread_create
(
&
ntid
,
NULL
,
ric_interface_task
,
&
gnb_flag
)
<
0
)
{
fprintf
(
stderr
,
"ric_interface_task: Failed to create thread: %s
\n
"
,
strerror
(
errno
));
exit
;
}
if
(
RC
.
nb_nr_L1_inst
>
0
)
if
(
RC
.
nb_nr_L1_inst
>
0
)
RCconfig_NR_L1
();
RCconfig_NR_L1
();
...
...
executables/ric-interface.c
0 → 100644
View file @
e4ed054c
/*
OpenXG RIC socket server
used to send PDSCH/PUSCH DMRS to client
*/
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <linux/tcp.h>
#include <semaphore.h>
sem_t
ric_send_sem
;
//uint8_t ric_test_data[]={0,1,2,3,4,5,6,7,8,9};
uint8_t
*
ric_send_buf
;
int
ric_send_len
;
#define RIC_INTERFACE_PORT 7788
#define RIC_INTERFACE_SOCKET_MAX_LEN (100+4*273*12)*4 //52516
//#define RIC_INTERFACE_SOCKET_MAX_LEN 65536
/*
gcc -o ric_s ric-interface.c -DRIC_TEST_SERVER -pthread
*/
#ifdef RIC_TEST_SERVER
void
main
()
#else
void
*
ric_interface_task
(
void
*
args_p
)
#endif
{
int
iSocketFD
=
0
;
//socket句柄
int
iRecvLen
=
0
;
//接收成功后的返回值
int
new_fd
=
0
;
//建立连接后的句柄
char
buf
[
4096
]
=
{
0
};
//
struct
sockaddr_in
stLocalAddr
=
{
0
};
//本地地址信息结构图,下面有具体的属性赋值
struct
sockaddr_in
stRemoteAddr
=
{
0
};
//对方地址信息
socklen_t
socklen
=
0
;
#ifdef RIC_TEST_SERVER
int
gnb_flag
=
0
;
ric_send_buf
=
malloc
(
RIC_INTERFACE_SOCKET_MAX_LEN
);
ric_send_buf
[
0
]
=
0x1E
;
ric_send_buf
[
10
]
=
0x20
;
ric_send_len
=
RIC_INTERFACE_SOCKET_MAX_LEN
;
#else
int
gnb_flag
=
*
(
int
*
)
args_p
;
#endif
iSocketFD
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
//建立socket
if
(
0
>
iSocketFD
)
{
perror
(
"创建socket失败!
\n
"
);
return
;
}
stLocalAddr
.
sin_family
=
AF_INET
;
/*该属性表示接收本机或其他机器传输*/
stLocalAddr
.
sin_port
=
htons
(
RIC_INTERFACE_PORT
+
gnb_flag
);
/*端口号*/
stLocalAddr
.
sin_addr
.
s_addr
=
htonl
(
INADDR_ANY
);
/*IP,括号内容表示本机IP*/
//绑定地址结构体和socket
if
(
0
>
bind
(
iSocketFD
,
(
void
*
)
&
stLocalAddr
,
sizeof
(
stLocalAddr
)))
{
printf
(
"绑定失败!gnb_flag %d
\n
"
,
gnb_flag
);
perror
(
"绑定失败!"
);
return
;
}
while
(
1
)
{
//开启监听 ,第二个参数是最大监听数
if
(
0
>
listen
(
iSocketFD
,
1
))
{
perror
(
"监听失败!
\n
"
);
return
;
}
printf
(
"iSocketFD: %d
\n
"
,
iSocketFD
);
//在这里阻塞知道接收到消息,参数分别是socket句柄,接收到的地址信息以及大小
new_fd
=
accept
(
iSocketFD
,
(
void
*
)
&
stRemoteAddr
,
&
socklen
);
if
(
0
>
new_fd
)
{
perror
(
"接收失败!
\n
"
);
return
;
}
else
{
printf
(
"接收成功!
\n
"
);
}
printf
(
"new_fd: %d
\n
"
,
new_fd
);
// iRecvLen = recv(new_fd, buf, sizeof(buf), 0);
// if(0 >= iRecvLen) //对端关闭连接 返回0
// {
// printf("接收失败或者对端关闭连接!\n");
// }else{
// printf("buf: %s\n", buf);
// }
int
send_len
;
while
(
1
)
{
// printf ("wait for ric_send_sem \n");
#ifdef RIC_TEST_SERVER
usleep
(
10000
);
#else
sem_wait
(
&
ric_send_sem
);
#endif
struct
tcp_info
info
;
int
len
=
sizeof
(
info
);
getsockopt
(
new_fd
,
IPPROTO_TCP
,
TCP_INFO
,
&
info
,
(
socklen_t
*
)
&
len
);
if
((
info
.
tcpi_state
==
1
))
{
send_len
=
send
(
new_fd
,
ric_send_buf
,
ric_send_len
,
0
);
printf
(
"send data %p, size %d to client. %d OK
\n
"
,
ric_send_buf
,
ric_send_len
,
send_len
);
}
else
break
;
}
}
}
#ifdef RIC_TEST_CLIENT
/*
gcc -o ric_c ric-interface.c -DRIC_TEST_CLIENT -pthread
*/
#include <stdio.h>
#include <string.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#define PORT 7789 //目标地址端口号 7788 -- ue 7789 -- NB
#define ADDR "127.0.0.1" //目标地址IP
void
main
()
{
int
iSocketFD
=
0
;
//socket句柄
unsigned
int
iRemoteAddr
=
0
;
struct
sockaddr_in
stRemoteAddr
=
{
0
};
//对端,即目标地址信息
socklen_t
socklen
=
0
;
unsigned
char
buf
[
RIC_INTERFACE_SOCKET_MAX_LEN
]
=
{
0
};
//存储接收到的数据
short
*
pdata
=
(
int
*
)
buf
;
static
int
log_first
=
0
;
unsigned
char
buf_debug
[
RIC_INTERFACE_SOCKET_MAX_LEN
]
=
{
0
};
//存储接收到的数据
iSocketFD
=
socket
(
AF_INET
,
SOCK_STREAM
,
0
);
//建立socket
if
(
0
>
iSocketFD
)
{
printf
(
"创建socket失败!
\n
"
);
return
;
}
stRemoteAddr
.
sin_family
=
AF_INET
;
stRemoteAddr
.
sin_port
=
htons
(
PORT
);
inet_pton
(
AF_INET
,
ADDR
,
&
iRemoteAddr
);
stRemoteAddr
.
sin_addr
.
s_addr
=
iRemoteAddr
;
//连接方法: 传入句柄,目标地址,和大小
while
(
1
)
{
if
(
0
>
connect
(
iSocketFD
,
(
void
*
)
&
stRemoteAddr
,
sizeof
(
stRemoteAddr
)))
{
printf
(
"连接失败!
\n
"
);
//printf("connect failed:%d",errno);//失败时也可打印errno
}
else
{
printf
(
"连接成功!
\n
"
);
int
recv_len
;
while
(
1
)
{
recv_len
=
recv
(
iSocketFD
,
buf
,
RIC_INTERFACE_SOCKET_MAX_LEN
,
0
);
if
(
0
==
recv_len
)
{
printf
(
"socket ERROR !!!
\n\n\n
"
);
return
;
}
printf
(
"Received(%d):, msg len %d, cnt %d
\n
"
,
recv_len
,
pdata
[
0
],
pdata
[
1
]);
// for(int i=0;i<20;i++)
// {
// printf("%02x ",buf[i]);
// }
//printf("\n\n\n");
log_first
++
;
if
(
log_first
==
1
)
{
memcpy
(
buf_debug
,
buf
,
recv_len
);
FILE
*
fd
;
if
((
fd
=
fopen
(
"srs_data.am"
,
"w"
))
!=
NULL
)
{
fwrite
((
void
*
)
buf_debug
,
sizeof
(
int32_t
),
recv_len
/
4
,
fd
);
printf
(
"Dummping Frame ...len %d bye bye
\n
"
,
recv_len
);
fclose
(
fd
);
}
}
}
}
sleep
(
2
);
}
close
(
iSocketFD
);
//关闭socket
}
#endif
\ No newline at end of file
executables/softmodem-common.h
View file @
e4ed054c
...
@@ -289,6 +289,7 @@ extern int oai_exit;
...
@@ -289,6 +289,7 @@ extern int oai_exit;
void
tx_func
(
void
*
param
);
void
tx_func
(
void
*
param
);
void
rx_func
(
void
*
param
);
void
rx_func
(
void
*
param
);
void
ru_tx_func
(
void
*
param
);
void
ru_tx_func
(
void
*
param
);
void
ru_rx_func
(
void
*
param
);
extern
uint8_t
nfapi_mode
;
extern
uint8_t
nfapi_mode
;
extern
int16_t
vnf_pnf_sfnslot_delta
;
extern
int16_t
vnf_pnf_sfnslot_delta
;
#ifdef __cplusplus
#ifdef __cplusplus
...
...
openair1/PHY/NR_TRANSPORT/nr_prach.c
View file @
e4ed054c
...
@@ -384,8 +384,8 @@ void rx_nr_prach_ru(RU_t *ru,
...
@@ -384,8 +384,8 @@ void rx_nr_prach_ru(RU_t *ru,
k
*=
K
;
k
*=
K
;
k
+=
kbar
;
k
+=
kbar
;
//for (int aa=0; aa<ru->nb_rx; aa++) {
for
(
int
aa
=
0
;
aa
<
ru
->
nb_rx
;
aa
++
)
{
for
(
int
aa
=
0
;
aa
<
1
;
aa
++
)
{
AssertFatal
(
prach
[
aa
]
!=
NULL
,
"prach[%d] is null
\n
"
,
aa
);
AssertFatal
(
prach
[
aa
]
!=
NULL
,
"prach[%d] is null
\n
"
,
aa
);
// do DFT
// do DFT
...
@@ -462,6 +462,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
...
@@ -462,6 +462,7 @@ void rx_nr_prach(PHY_VARS_gNB *gNB,
fp
=
&
gNB
->
frame_parms
;
fp
=
&
gNB
->
frame_parms
;
nb_rx
=
gNB
->
gNB_config
.
carrier_config
.
num_rx_ant
.
value
;
nb_rx
=
gNB
->
gNB_config
.
carrier_config
.
num_rx_ant
.
value
;
nb_rx
=
1
;
rootSequenceIndex
=
cfg
->
num_prach_fd_occasions_list
[
prach_pdu
->
num_ra
].
prach_root_sequence_index
.
value
;
rootSequenceIndex
=
cfg
->
num_prach_fd_occasions_list
[
prach_pdu
->
num_ra
].
prach_root_sequence_index
.
value
;
numrootSequenceIndex
=
cfg
->
num_prach_fd_occasions_list
[
prach_pdu
->
num_ra
].
num_root_sequences
.
value
;
numrootSequenceIndex
=
cfg
->
num_prach_fd_occasions_list
[
prach_pdu
->
num_ra
].
num_root_sequences
.
value
;
NCS
=
prach_pdu
->
num_cs
;
//cfg->num_prach_fd_occasions_list[0].prach_zero_corr_conf.value;
NCS
=
prach_pdu
->
num_cs
;
//cfg->num_prach_fd_occasions_list[0].prach_zero_corr_conf.value;
...
...
openair1/PHY/NR_TRANSPORT/srs_rx.c
View file @
e4ed054c
...
@@ -43,15 +43,17 @@
...
@@ -43,15 +43,17 @@
#include "T.h"
#include "T.h"
//#define SRS_DEBUG
//#define SRS_DEBUG
#define SEND_BY_SOCKET
int
g_dmrs_caps_idx
=
0
;
int
g_dmrs_caps_idx
=
0
;
int
g_dmrs_cnt
=
0
;
int
g_dmrs_cnt
=
0
;
//#if defined SEND_BY_SOCKET
nr_srs_cap_t
g_srs_caps
[
2
];
nr_srs_cap_t
g_srs_caps
[
2
];
// extern uint8_t *ric_send_buf;
#if defined SEND_BY_SOCKET
// extern int ric_send_len;
extern
uint8_t
*
ric_send_buf
;
// extern sem_t ric_send_sem;
extern
int
ric_send_len
;
//#endif
extern
sem_t
ric_send_sem
;
#endif
...
@@ -252,6 +254,14 @@ int nr_cap_srs_signal(PHY_VARS_gNB *gNB,
...
@@ -252,6 +254,14 @@ int nr_cap_srs_signal(PHY_VARS_gNB *gNB,
}
}
}
}
#ifdef SEND_BY_SOCKET
ric_send_buf
=
ns_srs_cap
;
ric_send_len
=
40
*
2
+
273
*
12
*
frame_parms
->
nb_antennas_rx
*
N_symb_SRS
*
4
;
//for test
sem_post
(
&
ric_send_sem
);
//LOG_I(PHY,"sem_post(&ric_send_sem) buf %p, size %d pos %d \n\n\n",ric_send_buf,ric_send_len, pos);
g_dmrs_cnt
++
;
#else
FILE
*
output_fd
=
NULL
;
FILE
*
output_fd
=
NULL
;
output_fd
=
fopen
(
"srs_data.am"
,
"w"
);
output_fd
=
fopen
(
"srs_data.am"
,
"w"
);
if
(
output_fd
==
NULL
){
if
(
output_fd
==
NULL
){
...
@@ -263,6 +273,8 @@ int nr_cap_srs_signal(PHY_VARS_gNB *gNB,
...
@@ -263,6 +273,8 @@ int nr_cap_srs_signal(PHY_VARS_gNB *gNB,
fwrite
(
&
(
ns_srs_cap
->
num_ant_ports
),
sizeof
(
int16_t
),
38
+
273
*
12
*
frame_parms
->
nb_antennas_rx
*
N_symb_SRS
*
2
,
output_fd
);
fwrite
(
&
(
ns_srs_cap
->
num_ant_ports
),
sizeof
(
int16_t
),
38
+
273
*
12
*
frame_parms
->
nb_antennas_rx
*
N_symb_SRS
*
2
,
output_fd
);
fclose
(
output_fd
);
fclose
(
output_fd
);
}
}
g_dmrs_caps_idx
++
;
#endif
g_dmrs_caps_idx
=
(
g_dmrs_caps_idx
+
1
)
%
2
;
}
}
\ No newline at end of file
openair1/PHY/defs_RU.h
View file @
e4ed054c
...
@@ -175,6 +175,7 @@ typedef struct {
...
@@ -175,6 +175,7 @@ typedef struct {
struct
RU_t_s
*
ru
;
struct
RU_t_s
*
ru
;
int
startSymbol
;
int
startSymbol
;
int
endSymbol
;
int
endSymbol
;
int
frame
;
int
slot
;
int
slot
;
}
feprx_cmd_t
;
}
feprx_cmd_t
;
...
@@ -649,6 +650,7 @@ typedef struct RU_t_s {
...
@@ -649,6 +650,7 @@ typedef struct RU_t_s {
notifiedFIFO_t
*
respfeprx
;
notifiedFIFO_t
*
respfeprx
;
/// to signal end of feptx
/// to signal end of feptx
notifiedFIFO_t
*
respfeptx
;
notifiedFIFO_t
*
respfeptx
;
notifiedFIFO_t
*
resprurx
;
/// core id for RX fhaul (IF5 ECPRI)
/// core id for RX fhaul (IF5 ECPRI)
int
rxfh_core_id
;
int
rxfh_core_id
;
/// core id for RX fhaul (IF5 ECPRI)
/// core id for RX fhaul (IF5 ECPRI)
...
...
openair1/PHY/defs_nr_common.h
View file @
e4ed054c
...
@@ -374,6 +374,8 @@ typedef struct {
...
@@ -374,6 +374,8 @@ typedef struct {
}
prs_meas_t
;
}
prs_meas_t
;
typedef
struct
{
typedef
struct
{
uint16_t
frame
;
uint16_t
slot
;
uint16_t
num_ant_ports
;
// Number of antenna ports N_SRS_ap [3GPP TS 38.211, Sec 6.4.1.4.1], Value: 0 = 1 port, 1 = 2 ports, 2 = 4 ports
uint16_t
num_ant_ports
;
// Number of antenna ports N_SRS_ap [3GPP TS 38.211, Sec 6.4.1.4.1], Value: 0 = 1 port, 1 = 2 ports, 2 = 4 ports
uint16_t
num_symbols
;
// Number of symbols N_SRS_symb [3GPP TS 38.211, Sec 6.4.1.4.1], Value: 0 = 1 symbol, 1 = 2 symbols, 2 = 4 symbols
uint16_t
num_symbols
;
// Number of symbols N_SRS_symb [3GPP TS 38.211, Sec 6.4.1.4.1], Value: 0 = 1 symbol, 1 = 2 symbols, 2 = 4 symbols
uint16_t
num_repetitions
;
// Repetition factor R [3GPP TS 38.211, Sec 6.4.1.4.3], Value: 0 = 1, 1 = 2, 2 = 4
uint16_t
num_repetitions
;
// Repetition factor R [3GPP TS 38.211, Sec 6.4.1.4.3], Value: 0 = 1, 1 = 2, 2 = 4
...
...
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
e4ed054c
...
@@ -880,7 +880,8 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
...
@@ -880,7 +880,8 @@ int phy_procedures_gNB_uespec_RX(PHY_VARS_gNB *gNB, int frame_rx, int slot_rx) {
generate_srs_nr
(
srs_pdu
,
frame_parms
,
gNB
->
nr_srs_info
[
i
]
->
srs_generated_signal
,
0
,
gNB
->
nr_srs_info
[
i
],
AMP
,
frame_rx
,
slot_rx
);
generate_srs_nr
(
srs_pdu
,
frame_parms
,
gNB
->
nr_srs_info
[
i
]
->
srs_generated_signal
,
0
,
gNB
->
nr_srs_info
[
i
],
AMP
,
frame_rx
,
slot_rx
);
int
srs_est
=
nr_get_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
],
srs_received_signal
);
int
srs_est
=
nr_get_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
],
srs_received_signal
);
static
int
log_first
=
0
;
static
int
log_first
=
0
;
if
((
log_first
==
0
)
&&
((
1
<<
srs_pdu
->
num_ant_ports
)
==
2
))
//if ((log_first == 0) && ((1<<srs_pdu->num_ant_ports)== 2))
if
(
log_first
==
0
)
{
{
nr_cap_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
]);
nr_cap_srs_signal
(
gNB
,
frame_rx
,
slot_rx
,
srs_pdu
,
gNB
->
nr_srs_info
[
i
]);
log_first
++
;
log_first
++
;
...
...
radio/OXGRF/USERSPACE/LIB/oxgrf_lib.c
View file @
e4ed054c
This diff is collapsed.
Click to expand it.
targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.273PRB.1x4.oxgrf.conf
0 → 100644
View file @
e4ed054c
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment