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
canghaiwuhen
OpenXG-RAN
Commits
56a32a22
Commit
56a32a22
authored
Feb 21, 2018
by
Wang Tsu-Han
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
changing emulate-rf into an executional option instead of compiler option
parent
869b9a5c
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
113 additions
and
108 deletions
+113
-108
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+0
-1
common/utils/itti/intertask_interface.c
common/utils/itti/intertask_interface.c
+11
-11
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
+1
-0
openair2/LAYER2/MAC/eNB_scheduler_phytest.c
openair2/LAYER2/MAC/eNB_scheduler_phytest.c
+3
-5
targets/COMMON/create_tasks.c
targets/COMMON/create_tasks.c
+6
-6
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+12
-7
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+70
-73
targets/RT/USER/lte-softmodem.c
targets/RT/USER/lte-softmodem.c
+3
-2
targets/RT/USER/lte-softmodem.h
targets/RT/USER/lte-softmodem.h
+7
-3
No files found.
cmake_targets/CMakeLists.txt
View file @
56a32a22
...
@@ -597,7 +597,6 @@ add_boolean_option(NAS_ADDRESS_FIX False "specific to oaisim: for nasmesh driver
...
@@ -597,7 +597,6 @@ add_boolean_option(NAS_ADDRESS_FIX False "specific to oaisim: for nasmesh driver
add_boolean_option
(
NAS_NETLINK False
"???? Must be True to compile nasmesh driver without rtai"
)
add_boolean_option
(
NAS_NETLINK False
"???? Must be True to compile nasmesh driver without rtai"
)
add_boolean_option
(
OAISIM False
"specific to oaisim"
)
add_boolean_option
(
OAISIM False
"specific to oaisim"
)
add_boolean_option
(
OAI_NW_DRIVER_USE_NETLINK True
"????"
)
add_boolean_option
(
OAI_NW_DRIVER_USE_NETLINK True
"????"
)
add_boolean_option
(
EMULATE_RF True
"allows to run lte-softmodem without HW"
)
add_boolean_option
(
USE_MME False
"this flag is used only one time in lte-softmodem.c"
)
add_boolean_option
(
USE_MME False
"this flag is used only one time in lte-softmodem.c"
)
add_list_string_option
(
PACKAGE_NAME
"NotDefined"
"As per attribute name"
)
add_list_string_option
(
PACKAGE_NAME
"NotDefined"
"As per attribute name"
)
...
...
common/utils/itti/intertask_interface.c
View file @
56a32a22
...
@@ -99,6 +99,7 @@ const int itti_debug = (ITTI_DEBUG_ISSUES | ITTI_DEBUG_MP_STATISTICS);
...
@@ -99,6 +99,7 @@ const int itti_debug = (ITTI_DEBUG_ISSUES | ITTI_DEBUG_MP_STATISTICS);
# define ITTI_MEM_SIZE (16 * 1024 * 1024)
# define ITTI_MEM_SIZE (16 * 1024 * 1024)
#endif
#endif
extern
int
emulate_rf
;
typedef
enum
task_state_s
{
typedef
enum
task_state_s
{
TASK_STATE_NOT_CONFIGURED
,
TASK_STATE_STARTING
,
TASK_STATE_READY
,
TASK_STATE_ENDED
,
TASK_STATE_MAX
,
TASK_STATE_NOT_CONFIGURED
,
TASK_STATE_STARTING
,
TASK_STATE_READY
,
TASK_STATE_ENDED
,
TASK_STATE_MAX
,
...
@@ -437,8 +438,7 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
...
@@ -437,8 +438,7 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
destination_task_id
,
destination_task_id
,
itti_get_task_name
(
destination_task_id
));
itti_get_task_name
(
destination_task_id
));
}
else
{
}
else
{
#ifdef EMULATE_RF
if
(
!
emulate_rf
){
#else
/* We cannot send a message if the task is not running */
/* We cannot send a message if the task is not running */
AssertFatal
(
itti_desc
.
threads
[
destination_thread_id
].
task_state
==
TASK_STATE_READY
,
AssertFatal
(
itti_desc
.
threads
[
destination_thread_id
].
task_state
==
TASK_STATE_READY
,
"Task %s Cannot send message %s (%d) to thread %d, it is not in ready state (%d)!
\n
"
,
"Task %s Cannot send message %s (%d) to thread %d, it is not in ready state (%d)!
\n
"
,
...
@@ -447,7 +447,7 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
...
@@ -447,7 +447,7 @@ int itti_send_msg_to_task(task_id_t destination_task_id, instance_t instance, Me
message_id
,
message_id
,
destination_thread_id
,
destination_thread_id
,
itti_desc
.
threads
[
destination_thread_id
].
task_state
);
itti_desc
.
threads
[
destination_thread_id
].
task_state
);
#endif
}
/* Allocate new list element */
/* Allocate new list element */
new
=
(
message_list_t
*
)
itti_malloc
(
origin_task_id
,
destination_task_id
,
sizeof
(
struct
message_list_s
));
new
=
(
message_list_t
*
)
itti_malloc
(
origin_task_id
,
destination_task_id
,
sizeof
(
struct
message_list_s
));
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_decoding.c
View file @
56a32a22
...
@@ -643,6 +643,7 @@ int ulsch_decoding_data_2thread(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr
...
@@ -643,6 +643,7 @@ int ulsch_decoding_data_2thread(PHY_VARS_eNB *eNB,int UE_id,int harq_pid,int llr
break
;
break
;
}
}
stop_meas
(
&
eNB
->
ulsch_turbo_decoding_stats
);
stop_meas
(
&
eNB
->
ulsch_turbo_decoding_stats
);
printf
(
"/////////////////////////////////////////**************************loop for %d time in ulsch_decoding main
\n
"
,
r
);
}
}
// wait for worker to finish
// wait for worker to finish
...
...
openair2/LAYER2/MAC/eNB_scheduler_phytest.c
View file @
56a32a22
...
@@ -196,13 +196,13 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
...
@@ -196,13 +196,13 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
int
UE_id
=
0
;
int
UE_id
=
0
;
uint8_t
aggregation
=
2
;
uint8_t
aggregation
=
2
;
rnti_t
rnti
=
0x1235
;
rnti_t
rnti
=
0x1235
;
uint8_t
mcs
=
2
8
;
uint8_t
mcs
=
2
0
;
uint8_t
harq_pid
=
0
;
uint8_t
harq_pid
=
0
;
uint32_t
cqi_req
=
0
,
cshift
,
ndi
,
tpc
=
1
;
uint32_t
cqi_req
=
0
,
cshift
,
ndi
,
tpc
=
1
;
int32_t
normalized_rx_power
;
int32_t
normalized_rx_power
;
int32_t
target_rx_power
=
178
;
int32_t
target_rx_power
=
178
;
int
CC_id
=
0
;
int
CC_id
=
0
;
int
nb_rb
=
20
;
int
nb_rb
=
96
;
eNB_MAC_INST
*
eNB
=
RC
.
mac
[
module_idP
];
eNB_MAC_INST
*
eNB
=
RC
.
mac
[
module_idP
];
COMMON_channels_t
*
cc
=
eNB
->
common_channels
;
COMMON_channels_t
*
cc
=
eNB
->
common_channels
;
UE_list_t
*
UE_list
=&
eNB
->
UE_list
;
UE_list_t
*
UE_list
=&
eNB
->
UE_list
;
...
@@ -236,10 +236,9 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
...
@@ -236,10 +236,9 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
UE_sched_ctrl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
UE_sched_ctrl
=
&
UE_list
->
UE_sched_ctrl
[
UE_id
];
harq_pid
=
subframe2harqpid
(
&
cc
[
CC_id
],
sched_frame
,
sched_subframe
);
harq_pid
=
subframe2harqpid
(
&
cc
[
CC_id
],
sched_frame
,
sched_subframe
);
LOG_
I
(
MAC
,
"Scheduling for frame %d, subframe %d => harq_pid %d
\n
"
,
sched_frame
,
sched_subframe
,
harq_pid
);
LOG_
D
(
MAC
,
"Scheduling for frame %d, subframe %d => harq_pid %d
\n
"
,
sched_frame
,
sched_subframe
,
harq_pid
);
RC
.
eNB
[
module_idP
][
CC_id
]
->
pusch_stats_BO
[
UE_id
][(
frameP
*
10
)
+
subframeP
]
=
UE_template
->
ul_total_buffer
;
RC
.
eNB
[
module_idP
][
CC_id
]
->
pusch_stats_BO
[
UE_id
][(
frameP
*
10
)
+
subframeP
]
=
UE_template
->
ul_total_buffer
;
//printf("////////////////////////////////////*************************ul_total_buffer = %d\n",UE_template->ul_total_buffer);
...
@@ -248,7 +247,6 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
...
@@ -248,7 +247,6 @@ void schedule_ulsch_phy_test(module_id_t module_idP,frame_t frameP,sub_frame_t s
// this is the normalized RX power and this should be constant (regardless of mcs
// this is the normalized RX power and this should be constant (regardless of mcs
normalized_rx_power
=
UE_sched_ctrl
->
pusch_snr
[
CC_id
];
normalized_rx_power
=
UE_sched_ctrl
->
pusch_snr
[
CC_id
];
//printf("////////////////////////////////////*************************normalized_rx_power = %d\n",normalized_rx_power);
// new transmission
// new transmission
...
...
targets/COMMON/create_tasks.c
View file @
56a32a22
...
@@ -40,6 +40,7 @@
...
@@ -40,6 +40,7 @@
# endif
# endif
# include "enb_app.h"
# include "enb_app.h"
extern
int
emulate_rf
;
int
create_tasks
(
uint32_t
enb_nb
,
uint32_t
ue_nb
)
int
create_tasks
(
uint32_t
enb_nb
,
uint32_t
ue_nb
)
{
{
...
@@ -72,13 +73,12 @@ int create_tasks(uint32_t enb_nb, uint32_t ue_nb)
...
@@ -72,13 +73,12 @@ int create_tasks(uint32_t enb_nb, uint32_t ue_nb)
LOG_E
(
S1AP
,
"Create task for S1AP failed
\n
"
);
LOG_E
(
S1AP
,
"Create task for S1AP failed
\n
"
);
return
-
1
;
return
-
1
;
}
}
#ifdef EMULATE_RF
if
(
!
emulate_rf
){
#else
if
(
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
)
<
0
)
{
if
(
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
UDP_
,
"Create task for UDP failed
\n
"
);
LOG_E
(
UDP_
,
"Create task for UDP failed
\n
"
);
return
-
1
;
return
-
1
;
}
}
#endif
}
if
(
itti_create_task
(
TASK_GTPV1_U
,
&
gtpv1u_eNB_task
,
NULL
)
<
0
)
{
if
(
itti_create_task
(
TASK_GTPV1_U
,
&
gtpv1u_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
GTPU
,
"Create task for GTPV1U failed
\n
"
);
LOG_E
(
GTPU
,
"Create task for GTPV1U failed
\n
"
);
...
...
targets/RT/USER/lte-enb.c
View file @
56a32a22
...
@@ -365,6 +365,10 @@ int wakeup_txfh(eNB_rxtx_proc_t *proc,RU_proc_t *ru_proc) {
...
@@ -365,6 +365,10 @@ int wakeup_txfh(eNB_rxtx_proc_t *proc,RU_proc_t *ru_proc) {
wait
.
tv_nsec
=
5000000L
;
wait
.
tv_nsec
=
5000000L
;
if
(
ru_proc
->
instance_cnt_eNBs
==
0
)
{
LOG_E
(
PHY
,
"Frame %d, subframe %d: TX FH thread busy, dropping
\n
"
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
return
(
-
1
);
}
if
(
pthread_mutex_timedlock
(
&
ru_proc
->
mutex_eNBs
,
&
wait
)
!=
0
)
{
if
(
pthread_mutex_timedlock
(
&
ru_proc
->
mutex_eNBs
,
&
wait
)
!=
0
)
{
LOG_E
(
PHY
,
"[eNB] ERROR pthread_mutex_lock for eNB TX1 thread %d (IC %d)
\n
"
,
ru_proc
->
subframe_rx
&
1
,
ru_proc
->
instance_cnt_eNBs
);
LOG_E
(
PHY
,
"[eNB] ERROR pthread_mutex_lock for eNB TX1 thread %d (IC %d)
\n
"
,
ru_proc
->
subframe_rx
&
1
,
ru_proc
->
instance_cnt_eNBs
);
exit_fun
(
"error locking mutex_eNB"
);
exit_fun
(
"error locking mutex_eNB"
);
...
@@ -834,6 +838,13 @@ void init_eNB_proc(int inst) {
...
@@ -834,6 +838,13 @@ void init_eNB_proc(int inst) {
attr_td
=
&
proc
->
attr_td
;
attr_td
=
&
proc
->
attr_td
;
//attr_te = &proc->attr_te[0];
//attr_te = &proc->attr_te[0];
//attr_te1 = &proc->attr_te[1];
//attr_te1 = &proc->attr_te[1];
//////////////////////////////////////need to modified////////////////*****
if
(
get_nprocs
()
>
2
&&
codingw
)
{
init_te_thread
(
eNB
);
init_td_thread
(
eNB
,
attr_td
);
}
//////////////////////////////////////need to modified////////////////*****
pthread_create
(
&
proc_rxtx
[
0
].
pthread_rxtx
,
attr0
,
eNB_thread_rxtx
,
proc
);
pthread_create
(
&
proc_rxtx
[
0
].
pthread_rxtx
,
attr0
,
eNB_thread_rxtx
,
proc
);
pthread_create
(
&
proc_rxtx
[
1
].
pthread_rxtx
,
attr1
,
tx_thread
,
proc
);
pthread_create
(
&
proc_rxtx
[
1
].
pthread_rxtx
,
attr1
,
tx_thread
,
proc
);
if
(
eNB
->
single_thread_flag
==
0
)
{
if
(
eNB
->
single_thread_flag
==
0
)
{
...
@@ -855,12 +866,6 @@ void init_eNB_proc(int inst) {
...
@@ -855,12 +866,6 @@ void init_eNB_proc(int inst) {
AssertFatal
(
proc
->
instance_cnt_prach
==
-
1
,
"instance_cnt_prach = %d
\n
"
,
proc
->
instance_cnt_prach
);
AssertFatal
(
proc
->
instance_cnt_prach
==
-
1
,
"instance_cnt_prach = %d
\n
"
,
proc
->
instance_cnt_prach
);
//////////////////////////////////////need to modified////////////////*****
if
(
get_nprocs
()
>
2
&&
codingw
)
{
init_te_thread
(
eNB
);
init_td_thread
(
eNB
,
attr_td
);
}
if
(
opp_enabled
==
1
)
pthread_create
(
&
proc
->
process_stats_thread
,
NULL
,
process_stats_thread
,(
void
*
)
eNB
);
if
(
opp_enabled
==
1
)
pthread_create
(
&
proc
->
process_stats_thread
,
NULL
,
process_stats_thread
,(
void
*
)
eNB
);
...
...
targets/RT/USER/lte-ru.c
View file @
56a32a22
...
@@ -112,6 +112,7 @@ unsigned short config_frames[4] = {2,9,11,13};
...
@@ -112,6 +112,7 @@ unsigned short config_frames[4] = {2,9,11,13};
extern
volatile
int
oai_exit
;
extern
volatile
int
oai_exit
;
extern
int
emulate_rf
;
extern
int
numerology
;
extern
int
numerology
;
extern
int
fepw
;
extern
int
fepw
;
...
@@ -681,7 +682,6 @@ void fh_if4p5_north_out(RU_t *ru) {
...
@@ -681,7 +682,6 @@ void fh_if4p5_north_out(RU_t *ru) {
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
}
}
#ifdef EMULATE_RF
static
void
*
emulatedRF_thread
(
void
*
param
)
{
static
void
*
emulatedRF_thread
(
void
*
param
)
{
RU_proc_t
*
proc
=
(
RU_proc_t
*
)
param
;
RU_proc_t
*
proc
=
(
RU_proc_t
*
)
param
;
int
microsec
=
500
;
// length of time to sleep, in miliseconds
int
microsec
=
500
;
// length of time to sleep, in miliseconds
...
@@ -709,7 +709,6 @@ static void* emulatedRF_thread(void* param) {
...
@@ -709,7 +709,6 @@ static void* emulatedRF_thread(void* param) {
}
}
return
0
;
return
0
;
}
}
#endif
void
rx_rf
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
void
rx_rf
(
RU_t
*
ru
,
int
*
frame
,
int
*
subframe
)
{
...
@@ -726,17 +725,18 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) {
...
@@ -726,17 +725,18 @@ void rx_rf(RU_t *ru,int *frame,int *subframe) {
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ
,
1
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ
,
1
);
old_ts
=
proc
->
timestamp_rx
;
old_ts
=
proc
->
timestamp_rx
;
#ifdef EMULATE_RF
if
(
emulate_rf
){
wait_on_condition
(
&
proc
->
mutex_emulateRF
,
&
proc
->
cond_emulateRF
,
&
proc
->
instance_cnt_emulateRF
,
"emulatedRF_thread"
);
wait_on_condition
(
&
proc
->
mutex_emulateRF
,
&
proc
->
cond_emulateRF
,
&
proc
->
instance_cnt_emulateRF
,
"emulatedRF_thread"
);
release_thread
(
&
proc
->
mutex_emulateRF
,
&
proc
->
instance_cnt_emulateRF
,
"emulatedRF_thread"
);
release_thread
(
&
proc
->
mutex_emulateRF
,
&
proc
->
instance_cnt_emulateRF
,
"emulatedRF_thread"
);
rxs
=
fp
->
samples_per_tti
;
rxs
=
fp
->
samples_per_tti
;
#else
}
else
{
rxs
=
ru
->
rfdevice
.
trx_read_func
(
&
ru
->
rfdevice
,
rxs
=
ru
->
rfdevice
.
trx_read_func
(
&
ru
->
rfdevice
,
&
ts
,
&
ts
,
rxp
,
rxp
,
fp
->
samples_per_tti
,
fp
->
samples_per_tti
,
ru
->
nb_rx
);
ru
->
nb_rx
);
#endif
}
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ
,
0
);
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_READ
,
0
);
...
@@ -1434,13 +1434,12 @@ static void* ru_thread_tx( void* param ) {
...
@@ -1434,13 +1434,12 @@ static void* ru_thread_tx( void* param ) {
// do OFDM if needed
// do OFDM if needed
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
feptx_ofdm
))
ru
->
feptx_ofdm
(
ru
);
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
feptx_ofdm
))
ru
->
feptx_ofdm
(
ru
);
#ifdef EMULATE_RF
if
(
!
emulate_rf
){
#else
// do outgoing fronthaul (south) if needed
// do outgoing fronthaul (south) if needed
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
fh_south_out
))
ru
->
fh_south_out
(
ru
);
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
fh_south_out
))
ru
->
fh_south_out
(
ru
);
if
(
ru
->
fh_north_out
)
ru
->
fh_north_out
(
ru
);
if
(
ru
->
fh_north_out
)
ru
->
fh_north_out
(
ru
);
#endif
}
release_thread
(
&
proc
->
mutex_eNBs
,
&
proc
->
instance_cnt_eNBs
,
"ru_thread_tx"
);
release_thread
(
&
proc
->
mutex_eNBs
,
&
proc
->
instance_cnt_eNBs
,
"ru_thread_tx"
);
}
}
...
@@ -1476,7 +1475,7 @@ static void* ru_thread( void* param ) {
...
@@ -1476,7 +1475,7 @@ static void* ru_thread( void* param ) {
LOG_I
(
PHY
,
"Starting RU %d (%s,%s),
\n
"
,
ru
->
idx
,
eNB_functions
[
ru
->
function
],
eNB_timing
[
ru
->
if_timing
]);
LOG_I
(
PHY
,
"Starting RU %d (%s,%s),
\n
"
,
ru
->
idx
,
eNB_functions
[
ru
->
function
],
eNB_timing
[
ru
->
if_timing
]);
#ifdef EMULATE_RF
if
(
emulate_rf
){
fill_rf_config
(
ru
,
ru
->
rf_config_file
);
fill_rf_config
(
ru
,
ru
->
rf_config_file
);
init_frame_parms
(
&
ru
->
frame_parms
,
1
);
init_frame_parms
(
&
ru
->
frame_parms
,
1
);
phy_init_RU
(
ru
);
phy_init_RU
(
ru
);
...
@@ -1484,7 +1483,8 @@ static void* ru_thread( void* param ) {
...
@@ -1484,7 +1483,8 @@ static void* ru_thread( void* param ) {
printf
(
"Exiting, cannot initialize RU Buffers
\n
"
);
printf
(
"Exiting, cannot initialize RU Buffers
\n
"
);
exit
(
-
1
);
exit
(
-
1
);
}
}
#else
}
else
{
// Start IF device if any
// Start IF device if any
if
(
ru
->
start_if
)
{
if
(
ru
->
start_if
)
{
LOG_I
(
PHY
,
"Starting IF interface for RU %d
\n
"
,
ru
->
idx
);
LOG_I
(
PHY
,
"Starting IF interface for RU %d
\n
"
,
ru
->
idx
);
...
@@ -1505,7 +1505,7 @@ static void* ru_thread( void* param ) {
...
@@ -1505,7 +1505,7 @@ static void* ru_thread( void* param ) {
printf
(
"Exiting, cannot initialize RU Buffers
\n
"
);
printf
(
"Exiting, cannot initialize RU Buffers
\n
"
);
exit
(
-
1
);
exit
(
-
1
);
}
}
#endif
}
LOG_I
(
PHY
,
"Signaling main thread that RU %d is ready
\n
"
,
ru
->
idx
);
LOG_I
(
PHY
,
"Signaling main thread that RU %d is ready
\n
"
,
ru
->
idx
);
pthread_mutex_lock
(
&
RC
.
ru_mutex
);
pthread_mutex_lock
(
&
RC
.
ru_mutex
);
...
@@ -1517,8 +1517,7 @@ static void* ru_thread( void* param ) {
...
@@ -1517,8 +1517,7 @@ static void* ru_thread( void* param ) {
#ifdef EMULATE_RF
if
(
!
emulate_rf
){
#else
// Start RF device if any
// Start RF device if any
if
(
ru
->
start_rf
)
{
if
(
ru
->
start_rf
)
{
if
(
ru
->
start_rf
(
ru
)
!=
0
)
if
(
ru
->
start_rf
(
ru
)
!=
0
)
...
@@ -1540,12 +1539,12 @@ static void* ru_thread( void* param ) {
...
@@ -1540,12 +1539,12 @@ static void* ru_thread( void* param ) {
// if this is a slave RRU, try to synchronize on the DL frequency
// if this is a slave RRU, try to synchronize on the DL frequency
if
((
ru
->
is_slave
)
&&
(
ru
->
if_south
==
LOCAL_RF
))
do_ru_synch
(
ru
);
if
((
ru
->
is_slave
)
&&
(
ru
->
if_south
==
LOCAL_RF
))
do_ru_synch
(
ru
);
}
pthread_mutex_lock
(
&
proc
->
mutex_FH1
);
pthread_mutex_lock
(
&
proc
->
mutex_FH1
);
proc
->
instance_cnt_FH1
=
0
;
proc
->
instance_cnt_FH1
=
0
;
pthread_mutex_unlock
(
&
proc
->
mutex_FH1
);
pthread_mutex_unlock
(
&
proc
->
mutex_FH1
);
pthread_cond_signal
(
&
proc
->
cond_FH1
);
pthread_cond_signal
(
&
proc
->
cond_FH1
);
#endif
// This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
// This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
...
@@ -1602,8 +1601,7 @@ static void* ru_thread( void* param ) {
...
@@ -1602,8 +1601,7 @@ static void* ru_thread( void* param ) {
if
(
get_nprocs
()
<=
4
)
if
(
get_nprocs
()
<=
4
)
{
{
#ifdef EMULATE_RF
if
(
!
emulate_rf
){
#else
// do TX front-end processing if needed (precoding and/or IDFTs)
// do TX front-end processing if needed (precoding and/or IDFTs)
if
(
ru
->
feptx_prec
)
ru
->
feptx_prec
(
ru
);
if
(
ru
->
feptx_prec
)
ru
->
feptx_prec
(
ru
);
...
@@ -1613,7 +1611,7 @@ static void* ru_thread( void* param ) {
...
@@ -1613,7 +1611,7 @@ static void* ru_thread( void* param ) {
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
fh_south_out
))
ru
->
fh_south_out
(
ru
);
if
((
ru
->
fh_north_asynch_in
==
NULL
)
&&
(
ru
->
fh_south_out
))
ru
->
fh_south_out
(
ru
);
if
(
ru
->
fh_north_out
)
ru
->
fh_north_out
(
ru
);
if
(
ru
->
fh_north_out
)
ru
->
fh_north_out
(
ru
);
#endif
}
}
}
}
}
...
@@ -1799,9 +1797,8 @@ void init_RU_proc(RU_t *ru) {
...
@@ -1799,9 +1797,8 @@ void init_RU_proc(RU_t *ru) {
#endif
#endif
pthread_create
(
&
proc
->
pthread_FH
,
attr_FH
,
ru_thread
,
(
void
*
)
ru
);
pthread_create
(
&
proc
->
pthread_FH
,
attr_FH
,
ru_thread
,
(
void
*
)
ru
);
#ifdef EMULATE_RF
if
(
emulate_rf
)
pthread_create
(
&
proc
->
pthread_emulateRF
,
attr_emulateRF
,
emulatedRF_thread
,
(
void
*
)
proc
);
pthread_create
(
&
proc
->
pthread_emulateRF
,
attr_emulateRF
,
emulatedRF_thread
,
(
void
*
)
proc
);
#endif
if
(
get_nprocs
()
>
4
)
if
(
get_nprocs
()
>
4
)
pthread_create
(
&
proc
->
pthread_FH1
,
attr_FH1
,
ru_thread_tx
,
(
void
*
)
ru
);
pthread_create
(
&
proc
->
pthread_FH1
,
attr_FH1
,
ru_thread_tx
,
(
void
*
)
ru
);
...
...
targets/RT/USER/lte-softmodem.c
View file @
56a32a22
...
@@ -206,9 +206,10 @@ extern void reset_opp_meas(void);
...
@@ -206,9 +206,10 @@ extern void reset_opp_meas(void);
extern
void
print_opp_meas
(
void
);
extern
void
print_opp_meas
(
void
);
int
transmission_mode
=
1
;
int
transmission_mode
=
1
;
int
emulate_rf
=
0
;
int
numerology
=
0
;
int
numerology
=
0
;
int
codingw
=
1
;
int
codingw
=
0
;
int
fepw
=
1
;
int
fepw
=
0
;
...
...
targets/RT/USER/lte-softmodem.h
View file @
56a32a22
...
@@ -84,8 +84,9 @@
...
@@ -84,8 +84,9 @@
#define CONFIG_HLP_NOTWAIT "don't wait for tracer, start immediately\n"
#define CONFIG_HLP_NOTWAIT "don't wait for tracer, start immediately\n"
#define CONFIG_HLP_TNOFORK "to ease debugging with gdb\n"
#define CONFIG_HLP_TNOFORK "to ease debugging with gdb\n"
#define CONFIG_HLP_NUMEROLOGY "adding numerology for 5G\n"
#define CONFIG_HLP_NUMEROLOGY "adding numerology for 5G\n"
#define CONFIG_HLP_CODINGW "coding worker thread disabled(enable by defult)\n"
#define CONFIG_HLP_CODINGW "coding worker thread enable(disable by defult)\n"
#define CONFIG_HLP_FEPW "FEP worker thread disabled(enable by defult)\n"
#define CONFIG_HLP_FEPW "FEP worker thread enabled(disable by defult)\n"
#define CONFIG_HLP_EMULATE_RF "Emulated RF enabled(disable by defult)\n"
/***************************************************************************************************************************************/
/***************************************************************************************************************************************/
...
@@ -170,7 +171,10 @@ extern int16_t dlsch_demod_shift;
...
@@ -170,7 +171,10 @@ extern int16_t dlsch_demod_shift;
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
{"S" , CONFIG_HLP_MSLOTS, PARAMFLAG_BOOL, u8ptr:&exit_missed_slots, defintval:1, TYPE_UINT8, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0} \
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
{"codingw" , CONFIG_HLP_CODINGW, PARAMFLAG_BOOL, iptr:&codingw, defintval:0, TYPE_INT, 0}, \
{"fepw" , CONFIG_HLP_FEPW, PARAMFLAG_BOOL, iptr:&fepw, defintval:0, TYPE_INT, 0} \
}
}
#define CONFIG_HLP_FLOG "Enable online log \n"
#define CONFIG_HLP_FLOG "Enable online log \n"
...
...
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