Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
O
OAI-RAN-5G-sheduler_MaxTBS
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
MAQ5G-PFC
OAI-RAN-5G-sheduler_MaxTBS
Commits
5309b71e
Commit
5309b71e
authored
8 years ago
by
Raymond Knopp
Browse files
Options
Downloads
Patches
Plain Diff
more separation for RRU/RCC
parent
d6377f1a
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
targets/RT/USER/lte-enb.c
+45
-29
45 additions, 29 deletions
targets/RT/USER/lte-enb.c
with
45 additions
and
29 deletions
targets/RT/USER/lte-enb.c
+
45
−
29
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
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment