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
Michael Black
OpenXG UE
Commits
c8052216
Commit
c8052216
authored
Nov 27, 2018
by
magounak
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added some extra vcd signals
parent
452a33c4
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
180 additions
and
60 deletions
+180
-60
common/utils/LOG/vcd_signal_dumper.c
common/utils/LOG/vcd_signal_dumper.c
+24
-8
common/utils/LOG/vcd_signal_dumper.h
common/utils/LOG/vcd_signal_dumper.h
+22
-6
common/utils/T/T_defs.h
common/utils/T/T_defs.h
+1
-1
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+100
-20
openair1/PHY/LTE_TRANSPORT/if4_tools.c
openair1/PHY/LTE_TRANSPORT/if4_tools.c
+4
-4
openair1/PHY/defs_eNB.h
openair1/PHY/defs_eNB.h
+4
-2
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+5
-0
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+19
-18
targets/RT/USER/ru_control.c
targets/RT/USER/ru_control.c
+1
-1
No files found.
common/utils/LOG/vcd_signal_dumper.c
View file @
c8052216
...
...
@@ -82,10 +82,26 @@ const char* eurecomVariablesNames[] = {
"frame_number_if4p5_north_out"
,
"subframe_number_if4p5_north_asynch_in"
,
"frame_number_if4p5_north_asynch_in"
,
"subframe_number_if4p5_south_out"
,
"frame_number_if4p5_south_out"
,
"subframe_number_if4p5_south_in"
,
"frame_number_if4p5_south_in"
,
"subframe_number_if4p5_south_out_ru"
,
"subframe_number_if4p5_south_out_ru1"
,
"frame_number_if4p5_south_out_ru"
,
"frame_number_if4p5_south_out_ru1"
,
"subframe_number_if4p5_south_in_ru"
,
"subframe_number_if4p5_south_in_ru1"
,
"frame_number_if4p5_south_in_ru"
,
"frame_number_if4p5_south_in_ru1"
,
"subframe_number_wakeup_l1s_ru"
,
"subframe_number_wakeup_l1s_ru1"
,
"frame_number_wakeup_l1s_ru"
,
"frame_number_wakeup_l1s_ru1"
,
"subframe_number_wakeup_rxtx_rx_ru"
,
"subframe_number_wakeup_rxtx_rx_ru1"
,
"frame_number_wakeup_rxtx_rx_ru"
,
"frame_number_wakeup_rxtx_rx_ru1"
,
"subframe_number_wakeup_rxtx_tx_ru"
,
"subframe_number_wakeup_rxtx_tx_ru1"
,
"frame_number_wakeup_rxtx_tx_ru"
,
"frame_number_wakeup_rxtx_tx_ru1"
,
"ic_enb"
,
"l1_proc_ic"
,
"l1_proc_tx_ic"
,
...
...
@@ -427,10 +443,10 @@ const char* eurecomFunctionsNames[] = {
"test"
,
/* IF4/IF5 signals */
"send_if4"
,
"send_if4_
RU
1"
,
"recv_if4"
,
"recv_if4_
RU
1"
,
"send_if4
_ru
"
,
"send_if4_
ru
1"
,
"recv_if4
_ru
"
,
"recv_if4_
ru
1"
,
"send_if5"
,
"recv_if5"
,
...
...
common/utils/LOG/vcd_signal_dumper.h
View file @
c8052216
...
...
@@ -59,10 +59,26 @@ typedef enum {
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_NORTH_OUT
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU
,
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU1
,
VCD_SIGNAL_DUMPER_VARIABLES_IC_ENB
,
VCD_SIGNAL_DUMPER_VARIABLES_L1_PROC_IC
,
VCD_SIGNAL_DUMPER_VARIABLES_L1_PROC_TX_IC
,
...
...
@@ -407,9 +423,9 @@ typedef enum {
VCD_SIGNAL_DUMPER_FUNCTIONS_TEST
,
/* IF4/IF5 signals */
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
,
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
_RU
,
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU1
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4
_RU
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU1
,
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF5
,
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF5
,
...
...
common/utils/T/T_defs.h
View file @
c8052216
...
...
@@ -44,7 +44,7 @@ typedef struct {
#define VCD_NUM_FUNCTIONS (218)
/* number of VCD variables (to be kept up to date! see in T_messages.txt) */
#define VCD_NUM_VARIABLES (1
39)
/*(136)*//*(128)*/
#define VCD_NUM_VARIABLES (1
55)
/* first VCD function (to be kept up to date! see in T_messages.txt) */
#define VCD_FIRST_FUNCTION ((uintptr_t)T_VCD_FUNCTION_RT_SLEEP)
...
...
common/utils/T/T_messages.txt
View file @
c8052216
...
...
@@ -1051,26 +1051,106 @@ ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_NORTH_ASYNCH_IN
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_if4p5_north_asynch_in
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
_RU
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_if4p5_south_out
ID = VCD_VARIABLE_
FRAME_NUMBER_IF4P5_SOUTH_OUT
DESC = VCD variable
FRAME_NUMBER_IF4P5_SOUTH_OUT
VCD_NAME = subframe_number_if4p5_south_out
_ru
ID = VCD_VARIABLE_
SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
DESC = VCD variable
SUBFRAME_NUMBER_IF4P5_SOUTH_OUT_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME =
frame_number_if4p5_south_out
ID = VCD_VARIABLE_
SUBFRAME_NUMBER_IF4P5_SOUTH_IN
DESC = VCD variable
SUBFRAME_NUMBER_IF4P5_SOUTH_IN
VCD_NAME =
subframe_number_if4p5_south_out_ru1
ID = VCD_VARIABLE_
FRAME_NUMBER_IF4P5_SOUTH_OUT_RU
DESC = VCD variable
FRAME_NUMBER_IF4P5_SOUTH_OUT_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME =
subframe_number_if4p5_south_in
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_
IN
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_
IN
VCD_NAME =
frame_number_if4p5_south_out_ru
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_
OUT_RU1
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_
OUT_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_if4p5_south_in
VCD_NAME = frame_number_if4p5_south_out_ru1
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_if4p5_south_in_ru
ID = VCD_VARIABLE_SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1
DESC = VCD variable SUBFRAME_NUMBER_IF4P5_SOUTH_IN_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_if4p5_south_in_ru1
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_IN_RU
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_IN_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_if4p5_south_in_ru
ID = VCD_VARIABLE_FRAME_NUMBER_IF4P5_SOUTH_IN_RU1
DESC = VCD variable FRAME_NUMBER_IF4P5_SOUTH_IN_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_if4p5_south_in_ru1
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_L1S_RU
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_L1S_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_l1s_ru
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_L1S_RU1
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_L1S_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_l1s_ru1
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_L1S_RU
DESC = VCD variable FRAME_NUMBER_WAKEUP_L1S_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_l1s_ru
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_L1S_RU1
DESC = VCD variable FRAME_NUMBER_WAKEUP_L1S_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_l1s_ru1
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_rxtx_rx_ru
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_rxtx_rx_ru1
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_RX_RU
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_RX_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_rxtx_rx_ru
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_RX_RU1
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_RX_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_rxtx_rx_ru1
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_rxtx_tx_ru
ID = VCD_VARIABLE_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1
DESC = VCD variable SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = subframe_number_wakeup_rxtx_tx_ru1
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_TX_RU
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_TX_RU
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_rxtx_tx_ru
ID = VCD_VARIABLE_FRAME_NUMBER_WAKEUP_RXTX_TX_RU1
DESC = VCD variable FRAME_NUMBER_WAKEUP_RXTX_TX_RU1
GROUP = ALL:VCD:ENB:VCD_VARIABLE
FORMAT = ulong,value
VCD_NAME = frame_number_wakeup_rxtx_tx_ru1
ID = VCD_VARIABLE_IC_ENB
DESC = VCD variable IC_ENB
GROUP = ALL:VCD:ENB:VCD_VARIABLE
...
...
@@ -2654,26 +2734,26 @@ ID = VCD_FUNCTION_TEST
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = test
ID = VCD_FUNCTION_SEND_IF4
DESC = VCD function SEND_IF4
ID = VCD_FUNCTION_SEND_IF4
_RU
DESC = VCD function SEND_IF4
_RU
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = send_if4
VCD_NAME = send_if4
_ru
ID = VCD_FUNCTION_SEND_IF4_RU1
DESC = VCD function SEND_IF4_RU1
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = send_if4_
RU
1
ID = VCD_FUNCTION_RECV_IF4
DESC = VCD function RECV_IF4
VCD_NAME = send_if4_
ru
1
ID = VCD_FUNCTION_RECV_IF4
_RU
DESC = VCD function RECV_IF4
_RU
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = recv_if4
VCD_NAME = recv_if4
_ru
ID = VCD_FUNCTION_RECV_IF4_RU1
DESC = VCD function RECV_IF4_RU1
GROUP = ALL:VCD:ENB:VCD_FUNCTION
FORMAT = int,value
VCD_NAME = recv_if4_
RU
1
VCD_NAME = recv_if4_
ru
1
ID = VCD_FUNCTION_SEND_IF5
DESC = VCD function SEND_IF5
GROUP = ALL:VCD:ENB:VCD_FUNCTION
...
...
openair1/PHY/LTE_TRANSPORT/if4_tools.c
View file @
c8052216
...
...
@@ -64,7 +64,7 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type) {
eth_state_t
*
eth
=
(
eth_state_t
*
)
(
ru
->
ifdevice
.
priv
);
int
nsym
=
fp
->
symbols_per_tti
;
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
+
ru
->
idx
,
1
);
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU
+
ru
->
idx
,
1
);
if
(
packet_type
==
IF4p5_PDLFFT
)
{
LOG_D
(
PHY
,
"send DL_IF4p5: RU %d frame %d, subframe %d
\n
"
,
ru
->
idx
,
frame
,
subframe
);
...
...
@@ -266,7 +266,7 @@ void send_IF4p5(RU_t *ru, int frame, int subframe, uint16_t packet_type) {
AssertFatal
(
1
==
0
,
"send_IF4p5 - Unknown packet_type %x"
,
packet_type
);
}
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4
+
ru
->
idx
,
0
);
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4_RU
+
ru
->
idx
,
0
);
return
;
}
...
...
@@ -285,7 +285,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint
int
slotoffsetF
=
0
,
blockoffsetF
=
0
;
eth_state_t
*
eth
=
(
eth_state_t
*
)
(
ru
->
ifdevice
.
priv
);
int
idx
;
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4
+
ru
->
idx
,
1
);
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU
+
ru
->
idx
,
1
);
if
(
ru
->
function
==
NGFI_RRU_IF4p5
)
{
db_fulllength
=
(
12
*
fp
->
N_RB_DL
)
*
ru
->
nb_tx
;
...
...
@@ -420,7 +420,7 @@ void recv_IF4p5(RU_t *ru, int *frame, int *subframe, uint16_t *packet_type, uint
AssertFatal
(
1
==
0
,
"recv_IF4p5 - Unknown packet_type %x"
,
*
packet_type
);
}
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4
+
ru
->
idx
,
0
);
if
(
ru
->
idx
<=
1
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4_RU
+
ru
->
idx
,
0
);
return
;
}
...
...
openair1/PHY/defs_eNB.h
View file @
c8052216
...
...
@@ -301,7 +301,8 @@ typedef enum {
RU_READY
=
2
,
RU_RUN
=
3
,
RU_ERROR
=
4
,
RU_SYNC
=
5
RU_SYNC
=
5
,
RU_CHECK_SYNC
=
6
}
rru_state_t
;
/// Some commamds to RRU. Not sure we should do it like this !
...
...
@@ -480,7 +481,8 @@ typedef enum {
RRU_stop
=
5
,
RRU_sync_ok
=
6
,
RRU_frame_resynch
=
7
,
RRU_MSG_max_num
=
8
RRU_MSG_max_num
=
8
,
RRU_check_sync
=
9
}
rru_config_msg_type_t
;
typedef
struct
RRU_CONFIG_msg_s
{
...
...
targets/RT/USER/lte-enb.c
View file @
c8052216
...
...
@@ -641,6 +641,11 @@ int wakeup_rxtx(PHY_VARS_eNB *eNB,RU_t *ru) {
pthread_mutex_unlock
(
&
L1_proc
->
mutex
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_RX_RU
+
ru
->
idx
,
L1_proc
->
frame_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_RX_RU
+
ru
->
idx
,
L1_proc
->
subframe_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_RXTX_TX_RU
+
ru
->
idx
,
L1_proc
->
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_RXTX_TX_RU
+
ru
->
idx
,
L1_proc
->
subframe_tx
);
return
(
0
);
}
...
...
targets/RT/USER/lte-ru.c
View file @
c8052216
...
...
@@ -158,14 +158,14 @@ static inline void fh_if4p5_south_out(RU_t *ru) {
if
(
subframe_select
(
&
ru
->
frame_parms
,
ru
->
proc
.
subframe_tx
)
!=
SF_UL
)
{
send_IF4p5
(
ru
,
ru
->
proc
.
frame_tx
,
ru
->
proc
.
subframe_tx
,
IF4p5_PDLFFT
);
ru
->
south_out_cnt
++
;
printf
(
"south_out_cnt %d, frame %d, subframe %d
\n
"
,
ru
->
south_out_cnt
,
ru
->
proc
.
frame_tx
,
ru
->
proc
.
subframe_t
x
);
LOG_I
(
PHY
,
"south_out_cnt %d, frame %d, subframe %d, RU %d
\n
"
,
ru
->
south_out_cnt
,
ru
->
proc
.
frame_tx
,
ru
->
proc
.
subframe_tx
,
ru
->
id
x
);
}
/*if (ru == RC.ru[0] || ru == RC.ru[1]) {
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_TX0_RU+ru->idx, ru->proc.frame_tx );
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_TX0_RU+ru->idx, ru->proc.subframe_tx );
}*/
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT
,
ru
->
proc
.
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
,
ru
->
proc
.
subframe_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_OUT
_RU
+
ru
->
idx
,
ru
->
proc
.
frame_tx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_OUT
_RU
+
ru
->
idx
,
ru
->
proc
.
subframe_tx
);
}
...
...
@@ -218,7 +218,7 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
symbol_mask_full
=
(
1
<<
fp
->
ul_symbols_in_S_subframe
)
-
1
;
else
symbol_mask_full
=
(
1
<<
fp
->
symbols_per_tti
)
-
1
;
//printf(
"fh_if4p5_south_in: RU %d, frame %d, subframe %d, ru %d\n",ru->idx,*frame,*subframe,ru->idx);
LOG_D
(
PHY
,
"fh_if4p5_south_in: RU %d, frame %d, subframe %d, ru %d
\n
"
,
ru
->
idx
,
*
frame
,
*
subframe
,
ru
->
idx
);
AssertFatal
(
proc
->
symbol_mask
[
*
subframe
]
==
0
,
"rx_fh_if4p5: proc->symbol_mask[%d] = %x
\n
"
,
*
subframe
,
proc
->
symbol_mask
[
*
subframe
]);
do
{
recv_IF4p5
(
ru
,
&
f
,
&
sf
,
&
packet_type
,
&
symbol_number
);
...
...
@@ -269,8 +269,8 @@ void fh_if4p5_south_in(RU_t *ru,int *frame,int *subframe) {
}*/
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN
,
f
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN
,
sf
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_IF4P5_SOUTH_IN
_RU
+
ru
->
idx
,
f
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_IF4P5_SOUTH_IN
_RU
+
ru
->
idx
,
sf
);
proc
->
symbol_mask
[
sf
]
=
0
;
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS
,
proc
->
timestamp_rx
&
0xffffffff
);
...
...
@@ -1151,9 +1151,10 @@ void wakeup_L1s(RU_t *ru) {
sprintf
(
string
,
"Incoming RU %d"
,
ru
->
idx
);
AssertFatal
(
0
==
pthread_mutex_lock
(
&
proc
->
mutex_RU
),
""
);
LOG_D
(
PHY
,
"Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x
\n
"
,
LOG_D
(
PHY
,
"
wakeup_L1s:
Frame %d, Subframe %d: RU %d done (wait_cnt %d),RU_mask[%d] %x
\n
"
,
ru
->
proc
.
frame_rx
,
ru
->
proc
.
subframe_rx
,
ru
->
idx
,
ru
->
wait_cnt
,
ru
->
proc
.
subframe_rx
,
proc
->
RU_mask
[
ru
->
proc
.
subframe_rx
]);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU
+
ru
->
idx
,
ru
->
proc
.
frame_rx
);
VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME
(
VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU
+
ru
->
idx
,
ru
->
proc
.
subframe_rx
);
clock_gettime
(
CLOCK_MONOTONIC
,
&
ru
->
proc
.
t
[
ru
->
proc
.
subframe_rx
]);
if
(
proc
->
RU_mask
[
ru
->
proc
.
subframe_rx
]
==
0
){
...
...
@@ -1167,7 +1168,8 @@ void wakeup_L1s(RU_t *ru) {
if
(
ru
==
eNB
->
RU_list
[
i
])
{
// AssertFatal((proc->RU_mask&(1<<i)) == 0, "eNB %d frame %d, subframe %d : previous information from RU %d (num_RU %d,mask %x) has not been served yet!\n",eNB->Mod_id,ru->proc.frame_rx,ru->proc.subframe_rx,ru->idx,eNB->num_RU,proc->RU_mask);
proc
->
RU_mask
[
ru
->
proc
.
subframe_rx
]
|=
(
1
<<
i
);
}
else
if
(
eNB
->
RU_list
[
i
]
->
state
==
RU_SYNC
){
}
else
if
(
eNB
->
RU_list
[
i
]
->
state
==
RU_SYNC
||
(
eNB
->
RU_list
[
i
]
->
is_slave
==
1
&&
eNB
->
RU_list
[
i
]
->
wait_cnt
>
0
)){
proc
->
RU_mask
[
ru
->
proc
.
subframe_rx
]
|=
(
1
<<
i
);
}
...
...
@@ -1193,9 +1195,10 @@ void wakeup_L1s(RU_t *ru) {
//stop_meas(&proc->ru_arrival_time);
AssertFatal
(
t
.
tv_nsec
<
proc
->
t
[
ru
->
proc
.
subframe_rx
].
tv_nsec
+
5000000
,
"Time difference for subframe %d (Frame %d) => %lu > 5ms, this is RU %d
\n
"
,
ru
->
proc
.
subframe_rx
,
ru
->
proc
.
frame_rx
,
t
.
tv_nsec
-
proc
->
t
[
ru
->
proc
.
subframe_rx
].
tv_nsec
,
ru
->
idx
);
ru
->
proc
.
subframe_rx
,
ru
->
proc
.
frame_rx
,
t
.
tv_nsec
-
proc
->
t
[
ru
->
proc
.
subframe_rx
].
tv_nsec
,
ru
->
idx
);
// VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_FRAME_NUMBER_WAKEUP_L1S_RU+ru->idx, ru->proc.frame_rx);
//VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_SUBFRAME_NUMBER_WAKEUP_L1S_RU+ru->idx, ru->proc.subframe_rx);
AssertFatal
(
0
==
pthread_mutex_unlock
(
&
proc
->
mutex_RU
),
""
);
// unlock RUs that are waiting for eNB processing to be completed
...
...
@@ -1509,7 +1512,7 @@ static void* ru_thread_tx( void* param ) {
LOG_D
(
PHY
,
"ru_thread_tx (ru %d): Waiting for TX processing
\n
"
,
ru
->
idx
);
// wait until eNBs are finished subframe RX n and TX n+4
wait_on_condition
(
&
proc
->
mutex_eNBs
,
&
proc
->
cond_eNBs
,
&
proc
->
instance_cnt_eNBs
,
"ru_thread_tx"
);
LOG_
I
(
PHY
,
"ru_thread_tx (ru %d): Woken from condition
\n
"
,
ru
->
idx
);
LOG_
D
(
PHY
,
"ru_thread_tx (ru %d): Woken from condition
\n
"
,
ru
->
idx
);
if
(
oai_exit
)
break
;
//printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~ru_thread_tx is waken up %d.%d having L1 %d\n", proc->frame_tx, proc->subframe_tx, ru->num_eNB);
...
...
@@ -1547,17 +1550,17 @@ static void* ru_thread_tx( void* param ) {
}
}
if
(
eNB_proc
->
RU_mask_tx
!=
(
1
<<
eNB
->
num_RU
)
-
1
)
{
// not all RUs have provided their information so return
printf
(
"Not all RUs have provided their info (mask = %d)
\n
"
,
eNB_proc
->
RU_mask_tx
);
LOG_I
(
PHY
,
"Not all RUs have provided their info (mask = %d)
\n
"
,
eNB_proc
->
RU_mask_tx
);
pthread_mutex_unlock
(
&
eNB_proc
->
mutex_RU_tx
);
}
else
{
// all RUs TX are finished so send the ready signal to eNB processing
printf
(
"All RUs TX are finished. Ready to send wakeup signal to eNB processing
\n
"
);
LOG_I
(
PHY
,
"All RUs TX are finished. Ready to send wakeup signal to eNB processing
\n
"
);
eNB_proc
->
RU_mask_tx
=
0
;
pthread_mutex_unlock
(
&
eNB_proc
->
mutex_RU_tx
);
pthread_mutex_lock
(
&
L1_proc
->
mutex_RUs
);
L1_proc
->
instance_cnt_RUs
=
0
;
printf
(
"ru_thread_tx send signal to L1_thread_tx with (mask = %d)
\n
"
,
eNB_proc
->
RU_mask_tx
);
LOG_I
(
PHY
,
"ru_thread_tx send signal to L1_thread_tx with (mask = %d)
\n
"
,
eNB_proc
->
RU_mask_tx
);
// the thread can now be woken up
if
(
pthread_cond_signal
(
&
L1_proc
->
cond_RUs
)
!=
0
)
{
LOG_E
(
PHY
,
"[eNB] ERROR pthread_cond_signal for eNB TXnp4 thread
\n
"
);
...
...
@@ -1754,7 +1757,7 @@ if(!emulate_rf){
ru
->
wait_cnt
--
;
LOG_
D
(
PHY
,
"RU thread %d, frame %d, subframe %d, wait_cnt %d
\n
"
,
ru
->
idx
,
frame
,
subframe
,
ru
->
wait_cnt
);
LOG_
I
(
PHY
,
"RU thread %d, frame %d, subframe %d, wait_cnt %d
\n
"
,
ru
->
idx
,
frame
,
subframe
,
ru
->
wait_cnt
);
if
(
ru
->
if_south
!=
LOCAL_RF
&&
ru
->
wait_cnt
<=
20
&&
subframe
==
5
&&
frame
!=
RC
.
ru
[
0
]
->
proc
.
frame_rx
&&
resynch_done
==
0
)
{
// Send RRU_frame adjust
...
...
@@ -1767,7 +1770,6 @@ if(!emulate_rf){
AssertFatal
((
ru
->
ifdevice
.
trx_ctlsend_func
(
&
ru
->
ifdevice
,
&
rru_config_msg
,
rru_config_msg
.
len
)
!=-
1
),
"Failed to send msg to RAU
\n
"
);
resynch_done
=
1
;
}
wakeup_L1s
(
ru
);
}
else
{
...
...
@@ -1828,7 +1830,6 @@ if(!emulate_rf){
exit_fun
(
"error unlocking mutex_pre_scd"
);
}
#endif
// wakeup all eNB processes waiting for this RU
if
(
ru
->
num_eNB
>
0
)
wakeup_L1s
(
ru
);
...
...
targets/RT/USER/ru_control.c
View file @
c8052216
...
...
@@ -705,7 +705,7 @@ void* ru_thread_control( void* param ) {
if
(
ru
->
if_south
==
LOCAL_RF
)
LOG_E
(
PHY
,
"Received RRU_config_ok msg...Ignoring
\n
"
);
else
{
if
(
ru
->
is_slave
==
1
){
LOG_I
(
PHY
,
"
Received RRU_sync_ok from RRU %d
\n
"
,
ru
->
idx
);
printf
(
PHY
,
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Received RRU_sync_ok from RRU %d
\n
"
,
ru
->
idx
);
// Just change the state of the RRU to unblock ru_thread()
ru
->
state
=
RU_RUN
;
}
else
LOG_E
(
PHY
,
"Received RRU_sync_ok from a master RRU...Ignoring
\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