Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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 UE
Commits
8c4db624
Commit
8c4db624
authored
Apr 22, 2019
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tested compilation and execution with --simL1 and --rfsim.
parent
8ebeb592
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
84 additions
and
74 deletions
+84
-74
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+6
-3
openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
+1
-1
openair1/SCHED/ru_procedures.c
openair1/SCHED/ru_procedures.c
+2
-0
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
+1
-1
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+22
-21
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+47
-45
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+2
-2
targets/RT/USER/lte-uesoftmodem.c
targets/RT/USER/lte-uesoftmodem.c
+2
-0
targets/RT/USER/rfsim.c
targets/RT/USER/rfsim.c
+1
-1
No files found.
cmake_targets/CMakeLists.txt
View file @
8c4db624
...
...
@@ -1240,12 +1240,12 @@ set(PHY_SRC
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/pcfich.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/pucch.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/pmch.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/ulsch_demodulation.c
#
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/ulsch_decoding.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/rar_tools.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/uci_tools.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/freq_equalization.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
#
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
#
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
# ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
${
OPENAIR1_DIR
}
/PHY/INIT/lte_init.c
...
...
@@ -1255,7 +1255,10 @@ set(PHY_SRC_RU
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/if4_tools.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/if5_tools.c
${
OPENAIR1_DIR
}
/PHY/LTE_UE_TRANSPORT/drs_modulation.c
${
OPENAIR1_DIR
}
/PHY/LTE_TRANSPORT/ulsch_demodulation.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
${
OPENAIR1_DIR
}
/PHY/LTE_ESTIMATION/freq_equalization.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/slot_fep_ul.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/ul_7_5_kHz.c
${
OPENAIR1_DIR
}
/PHY/MODULATION/gen_75KHz.cpp
...
...
openair1/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
View file @
8c4db624
...
...
@@ -869,7 +869,7 @@ int rx_pdsch(PHY_VARS_UE *ue,
pdsch_vars[eNB_id]->llr_offset[symbol],
(int16_t*)pdsch_vars[eNB_id]->llr[0],
pllr_symbol_cw0);
*/
switch
(
dlsch0_harq
->
Qm
)
{
case
2
:
if
((
rx_type
==
rx_standard
)
||
(
codeword_TB1
==
-
1
))
{
...
...
openair1/SCHED/ru_procedures.c
View file @
8c4db624
...
...
@@ -49,6 +49,8 @@
#include "PHY/LTE_TRANSPORT/if4_tools.h"
#include "PHY/LTE_TRANSPORT/if5_tools.h"
#include "PHY/LTE_TRANSPORT/transport_common_proto.h"
#include "PHY/LTE_TRANSPORT/transport_proto.h"
#include "PHY/LTE_ESTIMATION/lte_estimation.h"
#include "LAYER2/MAC/mac.h"
#include "common/utils/LOG/log.h"
...
...
targets/PROJECTS/GENERIC-LTE-EPC/CONF/rru.oaisim.conf
View file @
8c4db624
...
...
@@ -21,7 +21,7 @@ RUs = (
THREAD_STRUCT
= (
{
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
parallel_config
=
"PARALLEL_
RU_L1_TRX_SPLIT
"
;
parallel_config
=
"PARALLEL_
SINGLE_THREAD
"
;
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
worker_config
=
"WORKER_ENABLE"
;
}
...
...
targets/RT/USER/lte-ru.c
View file @
8c4db624
...
...
@@ -624,28 +624,29 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) {
if
(
ru
->
fh_north_asynch_in
==
NULL
)
{
#ifdef PHY_TX_THREAD
proc
->
timestamp_phy_tx
=
proc
->
timestamp_rx
+
((
sf_ahead
-
1
)
*
fp
->
samples_per_tti
);
proc
->
subframe_phy_tx
=
(
proc
->
subframe_rx
+
(
sf_ahead
-
1
))
%
10
;
proc
->
frame_phy_tx
=
(
proc
->
subframe_rx
>
(
9
-
(
sf_ahead
-
1
)))
?
(
proc
->
frame_rx
+
1
)
&
1023
:
proc
->
frame_rx
;
proc
->
timestamp_phy_tx
=
proc
->
timestamp_rx
+
((
sf_ahead
-
1
)
*
fp
->
samples_per_tti
);
proc
->
subframe_phy_tx
=
(
proc
->
subframe_rx
+
(
sf_ahead
-
1
))
%
10
;
proc
->
frame_phy_tx
=
(
proc
->
subframe_rx
>
(
9
-
(
sf_ahead
-
1
)))
?
(
proc
->
frame_rx
+
1
)
&
1023
:
proc
->
frame_rx
;
#endif
LOG_D
(
PHY
,
"RU %d/%d TS %llu (off %d), frame %d, subframe %d
\n
"
,
ru
->
idx
,
0
,
(
unsigned
long
long
int
)
proc
->
timestamp_rx
,
(
int
)
ru
->
ts_offset
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
LOG_D
(
PHY
,
"south_in/rx_rf: RU %d/%d TS %llu (off %d), frame %d, subframe %d
\n
"
,
ru
->
idx
,
0
,
(
unsigned
long
long
int
)
proc
->
timestamp_rx
,
(
int
)
ru
->
ts_offset
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
// dump VCD output for first RU in list
if
(
ru
==
RC
.
ru
[
0
])
{
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_RU
,
proc
->
frame_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU
,
proc
->
subframe_rx
);
if
(
ru
->
fh_north_asynch_in
==
NULL
)
{
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU
,
proc
->
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU
,
proc
->
subframe_tx
);
LOG_D
(
PHY
,
"RU %d/%d TS %llu (off %d), frame %d, subframe %d
\n
"
,
ru
->
idx
,
0
,
(
unsigned
long
long
int
)
proc
->
timestamp_rx
,
(
int
)
ru
->
ts_offset
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
LOG_D
(
PHY
,
"south_in/rx_rf: RU %d/%d TS %llu (off %d), frame %d, subframe %d
\n
"
,
ru
->
idx
,
0
,
(
unsigned
long
long
int
)
proc
->
timestamp_rx
,
(
int
)
ru
->
ts_offset
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
// dump VCD output for first RU in list
if
(
ru
==
RC
.
ru
[
0
])
{
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_RX0_RU
,
proc
->
frame_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_RX0_RU
,
proc
->
subframe_rx
);
if
(
ru
->
fh_north_asynch_in
==
NULL
)
{
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU
,
proc
->
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU
,
proc
->
subframe_tx
);
}
}
}
...
...
targets/RT/USER/lte-softmodem.c
View file @
8c4db624
...
...
@@ -707,20 +707,20 @@ int main( int argc, char **argv ) {
#ifdef XFORMS
int
UE_id
;
printf
(
"XFORMS
\n
"
);
if
(
get_softmodem_params
()
->
do_forms
==
1
)
{
fl_initialize
(
&
argc
,
argv
,
NULL
,
0
,
0
);
form_stats_l2
=
create_form_stats_form
();
fl_show_form
(
form_stats_l2
->
stats_form
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
"l2 stats"
);
form_stats
=
create_form_stats_form
();
fl_show_form
(
form_stats
->
stats_form
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
"stats"
);
for
(
UE_id
=
0
;
UE_id
<
scope_enb_num_ue
;
UE_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
form_enb
[
CC_id
][
UE_id
]
=
create_lte_phy_scope_enb
();
sprintf
(
title
,
"LTE UL SCOPE eNB for CC_id %d, UE %d"
,
CC_id
,
UE_id
);
fl_show_form
(
form_enb
[
CC_id
][
UE_id
]
->
lte_phy_scope_enb
,
FL_PLACE_HOTSPOT
,
FL_FULLBORDER
,
title
);
if
(
otg_enabled
)
{
fl_set_button
(
form_enb
[
CC_id
][
UE_id
]
->
button_0
,
1
);
fl_set_object_label
(
form_enb
[
CC_id
][
UE_id
]
->
button_0
,
"DL Traffic ON"
);
...
...
@@ -730,91 +730,93 @@ int main( int argc, char **argv ) {
}
}
// CC_id
}
// UE_id
ret
=
pthread_create
(
&
forms_thread
,
NULL
,
scope_thread
,
NULL
);
if
(
ret
==
0
)
pthread_setname_np
(
forms_thread
,
"xforms"
);
printf
(
"Scope thread created, ret=%d
\n
"
,
ret
);
}
#endif
rt_sleep_ns
(
10
*
100000000ULL
);
if
(
NFAPI_MODE
!=
NFAPI_MONOLITHIC
)
{
LOG_I
(
ENB_APP
,
"NFAPI*** - mutex and cond created - will block shortly for completion of PNF connection
\n
"
);
pthread_cond_init
(
&
sync_cond
,
NULL
);
pthread_mutex_init
(
&
sync_mutex
,
NULL
);
}
if
(
NFAPI_MODE
==
NFAPI_MODE_VNF
)
{
// VNF
#if defined(PRE_SCD_THREAD)
init_ru_vnf
();
// ru pointer is necessary for pre_scd.
#endif
wait_nfapi_init
(
"main?"
);
}
LOG_I
(
ENB_APP
,
"START MAIN THREADS
\n
"
);
// start the main threads
number_of_cards
=
1
;
printf
(
"RC.nb_L1_inst:%d
\n
"
,
RC
.
nb_L1_inst
);
if
(
RC
.
nb_L1_inst
>
0
)
{
printf
(
"Initializing eNB threads single_thread_flag:%d wait_for_sync:%d
\n
"
,
get_softmodem_params
()
->
single_thread_flag
,
get_softmodem_params
()
->
wait_for_sync
);
init_eNB
(
get_softmodem_params
()
->
single_thread_flag
,
get_softmodem_params
()
->
wait_for_sync
);
// for (inst=0;inst<RC.nb_L1_inst;inst++)
// for (CC_id=0;CC_id<RC.nb_L1_CC[inst];CC_id++) phy_init_lte_eNB(RC.eNB[inst][CC_id],0,0);
}
printf
(
"wait_eNBs()
\n
"
);
wait_eNBs
();
printf
(
"About to Init RU threads RC.nb_RU:%d
\n
"
,
RC
.
nb_RU
);
// RU thread and some L1 procedure aren't necessary in VNF or L2 FAPI simulator.
// but RU thread deals with pre_scd and this is necessary in VNF and simulator.
// some initialization is necessary and init_ru_vnf do this.
if
(
RC
.
nb_RU
>
0
&&
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
{
printf
(
"Initializing RU threads
\n
"
);
init_RU
(
get_softmodem_params
()
->
rf_config_file
,
get_softmodem_params
()
->
clock_source
,
get_softmodem_params
()
->
timing_source
,
get_softmodem_params
()
->
send_dmrs_sync
);
for
(
ru_id
=
0
;
ru_id
<
RC
.
nb_RU
;
ru_id
++
)
{
RC
.
ru
[
ru_id
]
->
rf_map
.
card
=
0
;
RC
.
ru
[
ru_id
]
->
rf_map
.
chain
=
CC_id
+
(
get_softmodem_params
()
->
chain_offset
);
}
config_sync_var
=
0
;
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// PNF
wait_nfapi_init
(
"main?"
);
}
printf
(
"wait RUs
\n
"
);
fflush
(
stdout
);
fflush
(
stderr
);
wait_RUs
();
LOG_I
(
ENB_APP
,
"RC.nb_RU:%d
\n
"
,
RC
.
nb_RU
);
// once all RUs are ready intiailize the rest of the eNBs ((dependence on final RU parameters after configuration)
printf
(
"ALL RUs ready - init eNBs
\n
"
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
&&
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
{
LOG_I
(
ENB_APP
,
"Not NFAPI mode - call init_eNB_afterRU()
\n
"
);
init_eNB_afterRU
();
}
else
{
LOG_I
(
ENB_APP
,
"NFAPI mode - DO NOT call init_eNB_afterRU()
\n
"
);
if
(
NFAPI_MODE
==
NFAPI_MODE_PNF
)
{
// PNF
wait_nfapi_init
(
"main?"
);
}
printf
(
"wait RUs
\n
"
);
fflush
(
stdout
);
fflush
(
stderr
);
wait_RUs
();
LOG_I
(
ENB_APP
,
"RC.nb_RU:%d
\n
"
,
RC
.
nb_RU
);
// once all RUs are ready intiailize the rest of the eNBs ((dependence on final RU parameters after configuration)
printf
(
"ALL RUs ready - init eNBs
\n
"
);
if
(
NFAPI_MODE
!=
NFAPI_MODE_PNF
&&
NFAPI_MODE
!=
NFAPI_MODE_VNF
)
{
LOG_I
(
ENB_APP
,
"Not NFAPI mode - call init_eNB_afterRU()
\n
"
);
init_eNB_afterRU
();
}
else
{
LOG_I
(
ENB_APP
,
"NFAPI mode - DO NOT call init_eNB_afterRU()
\n
"
);
}
LOG_UI
(
ENB_APP
,
"ALL RUs ready - ALL eNBs ready
\n
"
);
// connect the TX/RX buffers
sleep
(
1
);
/* wait for thread activation */
LOG_I
(
ENB_APP
,
"Sending sync to all threads
\n
"
);
pthread_mutex_lock
(
&
sync_mutex
);
sync_var
=
0
;
pthread_cond_broadcast
(
&
sync_cond
);
pthread_mutex_unlock
(
&
sync_mutex
);
config_check_unknown_cmdlineopt
(
CONFIG_CHECKALLSECTIONS
);
}
LOG_UI
(
ENB_APP
,
"ALL RUs ready - ALL eNBs ready
\n
"
);
// connect the TX/RX buffers
sleep
(
1
);
/* wait for thread activation */
LOG_I
(
ENB_APP
,
"Sending sync to all threads
\n
"
);
pthread_mutex_lock
(
&
sync_mutex
);
sync_var
=
0
;
pthread_cond_broadcast
(
&
sync_cond
);
pthread_mutex_unlock
(
&
sync_mutex
);
config_check_unknown_cmdlineopt
(
CONFIG_CHECKALLSECTIONS
);
}
// wait for end of program
// wait for end of program
LOG_UI
(
ENB_APP
,
"TYPE <CTRL-C> TO TERMINATE
\n
"
);
//getchar();
itti_wait_tasks_end
();
...
...
@@ -879,7 +881,7 @@ int main( int argc, char **argv ) {
}
}
}
terminate_opt
();
logClean
();
printf
(
"Bye.
\n
"
);
...
...
targets/RT/USER/lte-ue.c
View file @
8c4db624
...
...
@@ -1731,12 +1731,12 @@ void *UE_thread(void *arg) {
tv
.
tv_sec
=
INT_MAX
;
// operate on thread sf mod 2
if
(
pthread_mutex_timedlock
(
&
proc
->
mutex_rxtx
,
&
tv
)
!=
0
)
{
if
(
(
errno
=
pthread_mutex_timedlock
(
&
proc
->
mutex_rxtx
,
&
tv
)
)
!=
0
)
{
if
(
errno
==
ETIMEDOUT
)
{
LOG_E
(
PHY
,
"Missed real time
\n
"
);
continue
;
}
else
{
LOG_E
(
PHY
,
"System error %s
\n
"
,
strerror
(
errno
)
);
LOG_E
(
PHY
,
"System error %s
(%d)
\n
"
,
strerror
(
errno
),
errno
);
abort
();
}
}
...
...
targets/RT/USER/lte-uesoftmodem.c
View file @
8c4db624
...
...
@@ -405,6 +405,8 @@ static void get_options(void) {
int
dumpframe
=
0
;
int
timingadv
;
uint8_t
nfapi_mode
;
int
simL1flag
;
set_default_frame_parms
(
frame_parms
);
CONFIG_SETRTFLAG
(
CONFIG_NOEXITONHELP
);
...
...
targets/RT/USER/rfsim.c
View file @
8c4db624
...
...
@@ -63,7 +63,7 @@ sim_t sim;
void
init_ru_devices
(
void
);
void
init_RU
(
c
onst
c
har
*
,
clock_source_t
clock_source
,
clock_source_t
time_source
,
int
send_dmrssync
);
void
init_RU
(
char
*
,
clock_source_t
clock_source
,
clock_source_t
time_source
,
int
send_dmrssync
);
void
*
rfsim_top
(
void
*
n_frames
);
...
...
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