Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
openairinterface5G
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
150
Issues
150
List
Board
Labels
Milestones
Merge Requests
11
Merge Requests
11
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
oai
openairinterface5G
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
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) {
send_IF4p5
(
eNB
,
proc
->
frame_tx
,
proc
->
subframe_tx
,
IF4p5_PDLFFT
,
0
);
}
void
proc_tx_full
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
uint8_t
abstraction_flag
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
void
proc_tx_high0
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
relaying_type_t
r_type
,
PHY_VARS_RN
*
rn
)
{
phy_procedures_eNB_TX
(
eNB
,
proc
,
r_type
,
rn
);
...
...
@@ -319,16 +318,42 @@ void proc_tx_full(PHY_VARS_eNB *eNB,
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
);
}
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_mask
,
symbol_mask_full
;
...
...
@@ -397,13 +422,7 @@ static void* eNB_thread_rxtx( void* param ) {
FILE
*
tx_time_file
=
NULL
;
char
tx_time_name
[
101
];
void
*
txp
[
fp
->
nb_antennas_tx
];
int
txs
;
uint8_t
seqno
=
0
;
if
(
opp_enabled
==
1
)
{
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) {
*/
static
void
*
eNB_thread_asynch_rx
(
void
*
param
)
{
static
int
eNB_thread_asynch_rx_status
;
eNB_proc_t
*
proc
=
(
eNB_proc_t
*
)
param
;
PHY_VARS_eNB
*
eNB
=
PHY_vars_eNB_g
[
0
][
proc
->
CC_id
];
LTE_DL_FRAME_PARMS
*
fp
=
&
eNB
->
frame_parms
;
...
...
@@ -813,6 +834,8 @@ static void* eNB_thread_asynch_rx( void* param ) {
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
)
{
...
...
@@ -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
;
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
);
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
);
exit_fun
(
"Exiting"
);
}
}
else
{
proc
->
first_rx
=
0
;
frame
=
proc
->
frame_rx
;
subframe
=
proc
->
subframe_rx
;
*
frame
=
proc
->
frame_rx
;
*
subframe
=
proc
->
subframe_rx
;
}
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 ) {
FILE
*
rx_time_file
=
NULL
;
char
rx_time_name
[
101
];
int
i
;
int
subframe
=
0
,
frame
=
0
;
struct
timespec
wait
;
wait
.
tv_sec
=
0
;
wait
.
tv_nsec
=
5000000L
;
if
(
opp_enabled
==
1
)
{
snprintf
(
rx_time_name
,
100
,
"/tmp/%s_rx_time_thread_sf"
,
"eNB"
);
rx_time_file
=
fopen
(
rx_time_name
,
"w"
);
...
...
@@ -1723,9 +1739,9 @@ int start_rf(PHY_VARS_eNB *eNB) {
return
(
eNB
->
rfdevice
.
trx_start_func
(
&
eNB
->
rfdevice
));
}
extern
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
do_prach
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
void
eNB_fep_rru_if5
(
PHY_VARS_eNB
*
eNB
,
eNB_proc_t
*
proc
);
extern
void
eNB_fep_full
(
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
)
{
...
...
@@ -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
->
fep
=
NULL
;
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
->
rx_fh
=
rx_fh_if4p5
;
eNB
->
start_rf
=
NULL
;
...
...
@@ -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
->
fep
=
NULL
;
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
->
rx_fh
=
rx_fh_if4p5
;
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