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
promise
OpenXG-RAN
Commits
5309b71e
Commit
5309b71e
authored
Jul 31, 2016
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
more separation for RRU/RCC
parent
d6377f1a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
45 additions
and
29 deletions
+45
-29
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+45
-29
No files found.
targets/RT/USER/lte-enb.c
View file @
5309b71e
...
@@ -298,11 +298,10 @@ void tx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
...
@@ -298,11 +298,10 @@ void tx_fh_if4p5(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
send_IF4p5
(
eNB
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
IF4p5_PDLFFT
,
0
);
send_IF4p5
(
eNB
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
IF4p5_PDLFFT
,
0
);
}
}
void
proc_tx_full
(
PHY_VARS_eNB
*
eNB
,
void
proc_tx_high0
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
PHY_VARS_RN
*
rn
)
{
phy_procedures_eNB_TX
(
eNB
,
proc
,
r_type
,
rn
);
phy_procedures_eNB_TX
(
eNB
,
proc
,
r_type
,
rn
);
...
@@ -319,16 +318,42 @@ void proc_tx_full(PHY_VARS_eNB *eNB,
...
@@ -319,16 +318,42 @@ void proc_tx_full(PHY_VARS_eNB *eNB,
exit_fun
(
"nothing to add"
);
exit_fun
(
"nothing to add"
);
}
}
}
void
proc_tx_high
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
do_OFDM_mod_rt
(
proc
->
subframe_tx
,
eNB
);
// do PHY high
proc_tx_high0
(
eNB
,
proc
,
r_type
,
rn
);
// if TX fronthaul go ahead
if
(
eNB
->
tx_fh
)
eNB
->
tx_fh
(
eNB
,
proc
);
}
void
proc_tx_full
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
// do PHY high
proc_tx_high0
(
eNB
,
proc
,
r_type
,
rn
);
// do OFDM modulation
do_OFDM_mod_rt
(
proc
->
subframe_tx
,
eNB
);
// if TX fronthaul go ahead
if
(
eNB
->
tx_fh
)
eNB
->
tx_fh
(
eNB
,
proc
);
if
(
eNB
->
tx_fh
)
eNB
->
tx_fh
(
eNB
,
proc
);
}
}
void
proc_tx_rru_if4p5
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
)
{
void
proc_tx_rru_if4p5
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
uint32_t
symbol_number
=
0
;
uint32_t
symbol_number
=
0
;
uint32_t
symbol_mask
,
symbol_mask_full
;
uint32_t
symbol_mask
,
symbol_mask_full
;
...
@@ -397,13 +422,7 @@ static void* eNB_thread_rxtx( void* param ) {
...
@@ -397,13 +422,7 @@ static void* eNB_thread_rxtx( void* param ) {
FILE
*
tx_time_file
=
NULL
;
FILE
*
tx_time_file
=
NULL
;
char
tx_time_name
[
101
];
char
tx_time_name
[
101
];
void
*
txp
[
fp
->
nb_antennas_tx
];
int
txs
;
uint8_t
seqno
=
0
;
if
(
opp_enabled
==
1
)
{
if
(
opp_enabled
==
1
)
{
snprintf
(
tx_time_name
,
100
,
"/tmp/%s_tx_time_thread_sf"
,
"eNB"
);
snprintf
(
tx_time_name
,
100
,
"/tmp/%s_tx_time_thread_sf"
,
"eNB"
);
...
@@ -628,6 +647,8 @@ static void wait_system_ready (char *message, volatile int *start_flag) {
...
@@ -628,6 +647,8 @@ static void wait_system_ready (char *message, volatile int *start_flag) {
*/
*/
static
void
*
eNB_thread_asynch_rx
(
void
*
param
)
{
static
void
*
eNB_thread_asynch_rx
(
void
*
param
)
{
static
int
eNB_thread_asynch_rx_status
;
eNB_proc_t
*
proc
=
(
eNB_proc_t
*
)
param
;
eNB_proc_t
*
proc
=
(
eNB_proc_t
*
)
param
;
PHY_VARS_eNB
*
eNB
=
PHY_vars_eNB_g
[
0
][
proc
->
CC_id
];
PHY_VARS_eNB
*
eNB
=
PHY_vars_eNB_g
[
0
][
proc
->
CC_id
];
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
...
@@ -813,6 +834,8 @@ static void* eNB_thread_asynch_rx( void* param ) {
...
@@ -813,6 +834,8 @@ static void* eNB_thread_asynch_rx( void* param ) {
AssertFatal
(
1
==
0
,
"Unknown eNB->node_function %d"
,
eNB
->
node_function
);
AssertFatal
(
1
==
0
,
"Unknown eNB->node_function %d"
,
eNB
->
node_function
);
}
}
eNB_thread_asynch_rx_status
=
0
;
return
(
&
eNB_thread_asynch_rx_status
);
}
}
void
rx_rf
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
,
int
*
frame
,
int
*
subframe
)
{
void
rx_rf
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
,
int
*
frame
,
int
*
subframe
)
{
...
@@ -900,19 +923,19 @@ void rx_fh_if5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *frame, int *subframe) {
...
@@ -900,19 +923,19 @@ void rx_fh_if5(PHY_VARS_eNB *eNB,eNB_proc_t *proc,int *frame, int *subframe) {
proc
->
subframe_rx
=
(
proc
->
timestamp_rx
/
fp
->
samples_per_tti
)
%
10
;
proc
->
subframe_rx
=
(
proc
->
timestamp_rx
/
fp
->
samples_per_tti
)
%
10
;
if
(
proc
->
first_rx
==
0
)
{
if
(
proc
->
first_rx
==
0
)
{
if
(
proc
->
subframe_rx
!=
subframe
){
if
(
proc
->
subframe_rx
!=
*
subframe
){
LOG_E
(
PHY
,
"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)
\n
"
,
proc
->
subframe_rx
,
subframe
);
LOG_E
(
PHY
,
"Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)
\n
"
,
proc
->
subframe_rx
,
subframe
);
exit_fun
(
"Exiting"
);
exit_fun
(
"Exiting"
);
}
}
if
(
proc
->
frame_rx
!=
frame
)
{
if
(
proc
->
frame_rx
!=
*
frame
)
{
LOG_E
(
PHY
,
"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)
\n
"
,
proc
->
frame_rx
,
frame
);
LOG_E
(
PHY
,
"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)
\n
"
,
proc
->
frame_rx
,
frame
);
exit_fun
(
"Exiting"
);
exit_fun
(
"Exiting"
);
}
}
}
else
{
}
else
{
proc
->
first_rx
=
0
;
proc
->
first_rx
=
0
;
frame
=
proc
->
frame_rx
;
*
frame
=
proc
->
frame_rx
;
subframe
=
proc
->
subframe_rx
;
*
subframe
=
proc
->
subframe_rx
;
}
}
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS
,
proc
->
timestamp_rx
&
0xffffffff
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS
,
proc
->
timestamp_rx
&
0xffffffff
);
...
@@ -1075,15 +1098,8 @@ static void* eNB_thread_FH( void* param ) {
...
@@ -1075,15 +1098,8 @@ static void* eNB_thread_FH( void* param ) {
FILE
*
rx_time_file
=
NULL
;
FILE
*
rx_time_file
=
NULL
;
char
rx_time_name
[
101
];
char
rx_time_name
[
101
];
int
i
;
int
subframe
=
0
,
frame
=
0
;
int
subframe
=
0
,
frame
=
0
;
struct
timespec
wait
;
wait
.
tv_sec
=
0
;
wait
.
tv_nsec
=
5000000L
;
if
(
opp_enabled
==
1
)
{
if
(
opp_enabled
==
1
)
{
snprintf
(
rx_time_name
,
100
,
"/tmp/%s_rx_time_thread_sf"
,
"eNB"
);
snprintf
(
rx_time_name
,
100
,
"/tmp/%s_rx_time_thread_sf"
,
"eNB"
);
rx_time_file
=
fopen
(
rx_time_name
,
"w"
);
rx_time_file
=
fopen
(
rx_time_name
,
"w"
);
...
@@ -1723,9 +1739,9 @@ int start_rf(PHY_VARS_eNB *eNB) {
...
@@ -1723,9 +1739,9 @@ int start_rf(PHY_VARS_eNB *eNB) {
return
(
eNB
->
rfdevice
.
trx_start_func
(
&
eNB
->
rfdevice
));
return
(
eNB
->
rfdevice
.
trx_start_func
(
&
eNB
->
rfdevice
));
}
}
extern
eNB_fep_rru_if5
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
void
eNB_fep_rru_if5
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
eNB_fep_full
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
void
eNB_fep_full
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
do_prach
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
void
do_prach
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
void
init_eNB
(
eNB_func_t
node_function
[],
eNB_timing_t
node_timing
[],
int
nb_inst
)
{
void
init_eNB
(
eNB_func_t
node_function
[],
eNB_timing_t
node_timing
[],
int
nb_inst
)
{
...
@@ -1785,7 +1801,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
...
@@ -1785,7 +1801,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
do_prach
=
do_prach
;
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
NULL
;
eNB
->
fep
=
NULL
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_
full
;
eNB
->
proc_tx
=
proc_tx_
high
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
eNB
->
rx_fh
=
rx_fh_if4p5
;
eNB
->
rx_fh
=
rx_fh_if4p5
;
eNB
->
start_rf
=
NULL
;
eNB
->
start_rf
=
NULL
;
...
@@ -1796,7 +1812,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
...
@@ -1796,7 +1812,7 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
eNB
->
do_prach
=
do_prach
;
eNB
->
do_prach
=
do_prach
;
eNB
->
fep
=
NULL
;
eNB
->
fep
=
NULL
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_uespec_rx
=
phy_procedures_eNB_uespec_RX
;
eNB
->
proc_tx
=
proc_tx_
full
;
eNB
->
proc_tx
=
proc_tx_
high
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
eNB
->
tx_fh
=
tx_fh_if4p5
;
eNB
->
rx_fh
=
rx_fh_if4p5
;
eNB
->
rx_fh
=
rx_fh_if4p5
;
eNB
->
start_rf
=
NULL
;
eNB
->
start_rf
=
NULL
;
...
...
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