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
常顺宇
OpenXG-RAN
Commits
5b970ac4
Commit
5b970ac4
authored
May 16, 2018
by
Guy De Souza
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lte-softmodem NB_timing fix
parent
7e5ee477
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
34 additions
and
30 deletions
+34
-30
openair1/PHY/NR_TRANSPORT/nr_pbch.c
openair1/PHY/NR_TRANSPORT/nr_pbch.c
+1
-1
openair1/PHY/defs_RU.h
openair1/PHY/defs_RU.h
+2
-2
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+1
-1
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+18
-18
targets/RT/USER/nr-gnb.c
targets/RT/USER/nr-gnb.c
+11
-7
targets/RT/USER/nr-ru.c
targets/RT/USER/nr-ru.c
+1
-1
No files found.
openair1/PHY/NR_TRANSPORT/nr_pbch.c
View file @
5b970ac4
...
...
@@ -33,7 +33,7 @@
#include "PHY/phy_extern.h"
#include "PHY/sse_intrin.h"
#define DEBUG_PBCH
//
#define DEBUG_PBCH
short
nr_mod_table
[
MOD_TABLE_SIZE_SHORT
]
=
{
0
,
0
,
23170
,
23170
,
-
23170
,
-
23170
};
...
...
openair1/PHY/defs_RU.h
View file @
5b970ac4
...
...
@@ -388,8 +388,8 @@ typedef struct RU_t_s{
#endif
/// function pointer to NB entry routine
void
(
*
eNB_top
)(
struct
PHY_VARS_eNB_s
*
eNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
);
void
(
*
gNB_top
)(
struct
PHY_VARS_gNB_s
*
eNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
);
void
(
*
eNB_top
)(
struct
PHY_VARS_eNB_s
*
eNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
,
struct
RU_t_s
*
ru
);
void
(
*
gNB_top
)(
struct
PHY_VARS_gNB_s
*
gNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
,
struct
RU_t_s
*
ru
);
/// Timing statistics
time_stats_t
ofdm_demod_stats
;
...
...
targets/RT/USER/lte-enb.c
View file @
5b970ac4
...
...
@@ -448,7 +448,7 @@ void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string,RU_t
{
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
eNB_rxtx_proc_t
*
proc_rxtx
=
&
proc
->
proc_rxtx
[
0
];
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
ru_proc
=&
ru
->
proc
;
proc
->
frame_rx
=
frame_rx
;
...
...
targets/RT/USER/lte-ru.c
View file @
5b970ac4
...
...
@@ -322,7 +322,7 @@ static inline void fh_if5_mobipass_south_out(RU_t *ru) {
static
inline
void
fh_if4p5_south_out
(
RU_t
*
ru
)
{
if
(
ru
==
RC
.
ru
[
0
])
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST
,
ru
->
proc
.
timestamp_tx
&
0xffffffff
);
LOG_D
(
PHY
,
"Sending IF4p5 for frame %d subframe %d
\n
"
,
ru
->
proc
.
frame_tx
,
ru
->
proc
.
subframe_tx
);
if
(
subframe_select
(
&
ru
->
frame_parms
,
ru
->
proc
.
subframe_tx
)
!=
SF_UL
)
if
(
subframe_select
(
ru
->
frame_parms
,
ru
->
proc
.
subframe_tx
)
!=
SF_UL
)
send_IF4p5
(
ru
,
ru
->
proc
.
frame_tx
,
ru
->
proc
.
subframe_tx
,
IF4p5_PDLFFT
);
}
...
...
@@ -332,7 +332,7 @@ static inline void fh_if4p5_south_out(RU_t *ru) {
// Synchronous if5 from south
void
fh_if5_south_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
recv_IF5
(
ru
,
&
proc
->
timestamp_rx
,
*
subframe
,
IF5_RRH_GW_UL
);
...
...
@@ -363,7 +363,7 @@ void fh_if5_south_in(RU_t *ru,int *frame, int *subframe) {
// Synchronous if4p5 from south
void
fh_if4p5_south_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
int
f
,
sf
;
...
...
@@ -447,7 +447,7 @@ void fh_slave_south_in(RU_t *ru,int *frame,int *subframe) {
void
fh_if5_south_asynch_in_mobipass
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
RU_proc_t
*
proc
=
&
ru
->
proc
;
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
recv_IF5
(
ru
,
&
proc
->
timestamp_rx
,
*
subframe
,
IF5_MOBIPASS
);
pthread_mutex_lock
(
&
proc
->
mutex_asynch_rxtx
);
...
...
@@ -489,7 +489,7 @@ void fh_if5_south_asynch_in_mobipass(RU_t *ru,int *frame,int *subframe) {
// asynchronous inbound if4p5 fronthaul from south
void
fh_if4p5_south_asynch_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
uint16_t
packet_type
;
...
...
@@ -568,7 +568,7 @@ void fh_if4p5_north_in(RU_t *ru,int *frame,int *subframe) {
void
fh_if5_north_asynch_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
int
subframe_tx
,
frame_tx
;
openair0_timestamp
timestamp_tx
;
...
...
@@ -594,7 +594,7 @@ void fh_if5_north_asynch_in(RU_t *ru,int *frame,int *subframe) {
void
fh_if4p5_north_asynch_in
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
uint16_t
packet_type
;
...
...
@@ -664,7 +664,7 @@ void fh_if5_north_out(RU_t *ru) {
void
fh_if4p5_north_out
(
RU_t
*
ru
)
{
RU_proc_t
*
proc
=&
ru
->
proc
;
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
const
int
subframe
=
proc
->
subframe_rx
;
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU
,
proc
->
subframe_rx
);
...
...
@@ -711,7 +711,7 @@ static void* emulatedRF_thread(void* param) {
void
rx_rf
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
RU_proc_t
*
proc
=
&
ru
->
proc
;
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
void
*
rxp
[
ru
->
nb_rx
];
unsigned
int
rxs
;
int
i
;
...
...
@@ -807,7 +807,7 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) {
void
tx_rf
(
RU_t
*
ru
)
{
RU_proc_t
*
proc
=
&
ru
->
proc
;
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
void
*
txp
[
ru
->
nb_tx
];
unsigned
int
txs
;
int
i
;
...
...
@@ -920,7 +920,7 @@ static void* ru_thread_asynch_rxtx( void* param ) {
if
(
ru
->
fh_south_asynch_in
)
ru
->
fh_south_asynch_in
(
ru
,
&
frame
,
&
subframe
);
// asynchronous receive from north (RRU IF4/IF5)
else
if
(
ru
->
fh_north_asynch_in
)
{
if
(
subframe_select
(
&
ru
->
frame_parms
,
subframe
)
!=
SF_UL
)
if
(
subframe_select
(
ru
->
frame_parms
,
subframe
)
!=
SF_UL
)
ru
->
fh_north_asynch_in
(
ru
,
&
frame
,
&
subframe
);
}
else
AssertFatal
(
1
==
0
,
"Unknown function in ru_thread_asynch_rxtx
\n
"
);
...
...
@@ -1102,7 +1102,7 @@ int wakeup_synch(RU_t *ru){
void
do_ru_synch
(
RU_t
*
ru
)
{
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
RU_proc_t
*
proc
=
&
ru
->
proc
;
int
i
;
void
*
rxp
[
2
],
*
rxp2
[
2
];
...
...
@@ -1268,7 +1268,7 @@ void fill_rf_config(RU_t *ru, char *rf_config_file) {
int
i
;
LTE_DL_FRAME_PARMS
*
fp
=
&
ru
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
ru
->
frame_parms
;
openair0_config_t
*
cfg
=
&
ru
->
openair0_cfg
;
//printf("////////////////numerology in config = %d\n",numerology);
...
...
@@ -1362,7 +1362,7 @@ int setup_RU_buffers(RU_t *ru) {
LTE_DL_FRAME_PARMS
*
frame_parms
;
if
(
ru
)
{
frame_parms
=
&
ru
->
frame_parms
;
frame_parms
=
ru
->
frame_parms
;
printf
(
"setup_RU_buffers: frame_parms = %p
\n
"
,
frame_parms
);
}
else
{
printf
(
"RU[%d] not initialized
\n
"
,
ru
->
idx
);
...
...
@@ -2113,7 +2113,7 @@ void configure_ru(int idx,
#endif
}
init_frame_parms
(
&
ru
->
frame_parms
,
1
);
init_frame_parms
(
ru
->
frame_parms
,
1
);
phy_init_RU
(
ru
);
}
...
...
@@ -2156,7 +2156,7 @@ void configure_rru(int idx,
#endif
}
init_frame_parms
(
&
ru
->
frame_parms
,
1
);
init_frame_parms
(
ru
->
frame_parms
,
1
);
fill_rf_config
(
ru
,
ru
->
rf_config_file
);
...
...
@@ -2270,7 +2270,7 @@ void set_function_spec_param(RU_t *ru)
/*
if (ru->function == eNodeB_3GPP) { // configure RF parameters only for 3GPP eNodeB, we need to get them from RAU otherwise
fill_rf_config(ru,rf_config_file);
init_frame_parms(
&
ru->frame_parms,1);
init_frame_parms(ru->frame_parms,1);
phy_init_RU(ru);
}
...
...
@@ -2418,7 +2418,7 @@ void init_RU(char *rf_config_file) {
}
}
}
LOG_I
(
PHY
,
"Initializing RRU descriptor %d : (%s,%s,%d)
\n
"
,
ru_id
,
ru_if_types
[
ru
->
if_south
],
e
NB_timing
[
ru
->
if_timing
],
ru
->
function
);
LOG_I
(
PHY
,
"Initializing RRU descriptor %d : (%s,%s,%d)
\n
"
,
ru_id
,
ru_if_types
[
ru
->
if_south
],
NB_timing
[
ru
->
if_timing
],
ru
->
function
);
set_function_spec_param
(
ru
);
LOG_I
(
PHY
,
"Starting ru_thread %d
\n
"
,
ru_id
);
...
...
targets/RT/USER/nr-gnb.c
View file @
5b970ac4
...
...
@@ -357,10 +357,12 @@ static void wait_system_ready (char *message, volatile int *start_flag) {
void
gNB_top
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
)
void
gNB_top
(
PHY_VARS_gNB
*
gNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
,
struct
RU_t_s
*
ru
)
{
gNB_proc_t
*
proc
=
&
gNB
->
proc
;
gNB_rxtx_proc_t
*
proc_rxtx
=
&
proc
->
proc_rxtx
[
0
];
NR_DL_FRAME_PARMS
*
fp
=
ru
->
nr_frame_parms
;
RU_proc_t
*
ru_proc
=&
ru
->
proc
;
proc
->
frame_rx
=
frame_rx
;
proc
->
subframe_rx
=
subframe_rx
;
...
...
@@ -368,14 +370,16 @@ void gNB_top(PHY_VARS_gNB *gNB, int frame_rx, int subframe_rx, char *string)
if
(
!
oai_exit
)
{
T
(
T_ENB_MASTER_TICK
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
subframe_rx
));
proc_rxtx
->
subframe_rx
=
proc
->
subframe_rx
;
proc_rxtx
->
frame_rx
=
proc
->
frame_rx
;
proc_rxtx
->
subframe_tx
=
(
proc
->
subframe_rx
+
sf_ahead
)
%
10
;
proc_rxtx
->
frame_tx
=
(
proc
->
subframe_rx
>
(
9
-
sf_ahead
))
?
(
1
+
proc
->
frame_rx
)
&
1023
:
proc
->
frame_rx
;
proc
->
frame_tx
=
proc_rxtx
->
frame_tx
;
proc_rxtx
->
timestamp_tx
=
proc
->
timestamp_tx
;
proc_rxtx
->
timestamp_tx
=
ru_proc
->
timestamp_rx
+
(
sf_ahead
*
fp
->
samples_per_subframe
);
proc_rxtx
->
frame_rx
=
ru_proc
->
frame_rx
;
proc_rxtx
->
subframe_rx
=
ru_proc
->
subframe_rx
;
proc_rxtx
->
frame_tx
=
(
proc_rxtx
->
subframe_rx
>
(
9
-
sf_ahead
))
?
(
proc_rxtx
->
frame_rx
+
1
)
&
1023
:
proc_rxtx
->
frame_rx
;
proc_rxtx
->
subframe_tx
=
(
proc_rxtx
->
subframe_rx
+
sf_ahead
)
%
10
;
if
(
rxtx
(
gNB
,
proc_rxtx
,
string
)
<
0
)
LOG_E
(
PHY
,
"gNB %d CC_id %d failed during execution
\n
"
,
gNB
->
Mod_id
,
gNB
->
CC_id
);
ru_proc
->
timestamp_tx
=
proc_rxtx
->
timestamp_tx
;
ru_proc
->
subframe_tx
=
proc_rxtx
->
subframe_tx
;
ru_proc
->
frame_tx
=
proc_rxtx
->
frame_tx
;
}
}
...
...
targets/RT/USER/nr-ru.c
View file @
5b970ac4
...
...
@@ -1122,7 +1122,7 @@ void wakeup_gNBs(RU_t *ru) {
char
string
[
20
];
sprintf
(
string
,
"Incoming RU %d"
,
ru
->
idx
);
LOG_D
(
PHY
,
"RU %d Call gNB_top
\n
"
,
ru
->
idx
);
ru
->
gNB_top
(
gNB_list
[
0
],
ru
->
proc
.
frame_rx
,
ru
->
proc
.
subframe_rx
,
string
);
ru
->
gNB_top
(
gNB_list
[
0
],
ru
->
proc
.
frame_rx
,
ru
->
proc
.
subframe_rx
,
string
,
ru
);
}
else
{
...
...
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