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
spbro
OpenXG-RAN
Commits
e6936f1b
Commit
e6936f1b
authored
Sep 27, 2017
by
Cedric Roux
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update T tracer
not finished, UE may not work, many things bad/to fix properly
parent
d46dd64f
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
186 additions
and
99 deletions
+186
-99
common/utils/T/T_messages.txt
common/utils/T/T_messages.txt
+27
-27
common/utils/T/tracer/enb.c
common/utils/T/tracer/enb.c
+61
-9
common/utils/T/tracer/filter/filter.c
common/utils/T/tracer/filter/filter.c
+26
-0
common/utils/T/tracer/filter/filter.h
common/utils/T/tracer/filter/filter.h
+2
-0
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
+4
-5
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
+1
-1
openair1/PHY/LTE_TRANSPORT/dci.c
openair1/PHY/LTE_TRANSPORT/dci.c
+2
-4
openair1/PHY/LTE_TRANSPORT/dci_tools.c
openair1/PHY/LTE_TRANSPORT/dci_tools.c
+25
-10
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
+4
-6
openair1/PHY/LTE_TRANSPORT/phich.c
openair1/PHY/LTE_TRANSPORT/phich.c
+3
-3
openair1/PHY/LTE_TRANSPORT/pucch.c
openair1/PHY/LTE_TRANSPORT/pucch.c
+2
-2
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
+1
-1
openair1/SCHED/phy_procedures_lte_eNb.c
openair1/SCHED/phy_procedures_lte_eNb.c
+12
-5
openair1/SCHED/phy_procedures_lte_ue.c
openair1/SCHED/phy_procedures_lte_ue.c
+10
-11
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
+1
-1
targets/RT/USER/lte-enb.c
targets/RT/USER/lte-enb.c
+5
-12
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+0
-2
No files found.
common/utils/T/T_messages.txt
View file @
e6936f1b
...
...
@@ -16,31 +16,31 @@ ID = ENB_PHY_DL_TICK
ID = ENB_PHY_DLSCH_UE_DCI
DESC = eNodeB downlink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
ID = ENB_PHY_DLSCH_UE_ACK
DESC = eNodeB downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = ENB_PHY_DLSCH_UE_NACK
DESC = eNodeB downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = ENB_PHY_ULSCH_UE_DCI
DESC = eNodeB uplink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS : int,L : int,firstCCE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS : int,L : int,firstCCE
ID = ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION
DESC = eNodeB uplink UE retransmission due to PHICH NACK (see generate_phich_top)
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = ENB_PHY_ULSCH_UE_ACK
DESC = eNodeB uplink UE ACK as seen by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = ENB_PHY_ULSCH_UE_NACK
DESC = eNodeB uplink UE NACK as seen by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = ENB_PHY_INPUT_SIGNAL
DESC = eNodeB received signal in the time domain for a duration of 1ms
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
...
...
@@ -52,31 +52,31 @@ ID = ENB_PHY_OUTPUT_SIGNAL
ID = ENB_PHY_UL_CHANNEL_ESTIMATE
DESC = eNodeB channel estimation in the time domain
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
FORMAT = int,eNB_ID : int,
UE_ID
: int,frame : int,subframe : int,antenna : buffer,chest_t
FORMAT = int,eNB_ID : int,
rnti
: int,frame : int,subframe : int,antenna : buffer,chest_t
ID = ENB_PHY_PUSCH_IQ
DESC = eNodeB PUSCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
FORMAT = int,eNB_ID : int,
UE_ID
: int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
FORMAT = int,eNB_ID : int,
rnti
: int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
ID = ENB_PHY_PUCCH_1AB_IQ
DESC = eNodeB PUCCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
FORMAT = int,eNB_ID : int,
UE_ID
: int,frame : int,subframe : int,I : int,Q
FORMAT = int,eNB_ID : int,
rnti
: int,frame : int,subframe : int,I : int,Q
ID = ENB_PHY_PUCCH_1_ENERGY
DESC = eNodeB PUCCH 1 energy and threshold
GROUP = ALL:PHY:GRAPHIC:HEAVY:ENB
FORMAT = int,eNB_ID : int,
UE_ID
: int,frame : int,subframe : int,energy : int,threshold
FORMAT = int,eNB_ID : int,
rnti
: int,frame : int,subframe : int,energy : int,threshold
ID = ENB_PHY_PHICH
DESC = eNodeB PHICH
GROUP = ALL:PHY:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid : int,NGROUP : int,NSF : int,ngroup : int,nseq : int,ACK : int,first_rb : int,n_DMRS
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,NGROUP : int,NSF : int,ngroup : int,nseq : int,ACK : int,first_rb : int,n_DMRS
ID = ENB_PHY_MSG3_ALLOCATION
DESC = eNodeB Msg3 allocation/reallocation
GROUP = ALL:PHY:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,first_transmission : int,Msg3_frame : int,Msg3_subframe
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,first_transmission : int,Msg3_frame : int,Msg3_subframe
ID = ENB_PHY_INITIATE_RA_PROCEDURE
DESC = eNodeB initiates a random access procedure after detecting enough energy for one of the preambles
GROUP = ALL:PHY:ENB
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
preamble : int,energy : int,delay
FORMAT = int,eNB_ID : int,frame : int,subframe : int,preamble : int,energy : int,delay
#MAC logs
ID = ENB_MAC_UE_DL_SDU
...
...
@@ -834,27 +834,27 @@ ID = UE_PHY_DL_TICK
ID = UE_PHY_DLSCH_UE_DCI
DESC = UE downlink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,dci_format : int,harq_pid : int,mcs : int,TBS
ID = UE_PHY_DLSCH_UE_ACK
DESC = UE downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = UE_PHY_DLSCH_UE_NACK
DESC = UE downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = UE_PHY_ULSCH_UE_DCI
DESC = UE uplink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid : int,mcs : int,round : int,first_rb : int,nb_rb : int,TBS
ID = UE_PHY_ULSCH_UE_ACK
DESC = UE uplink UE ACK as seen by the PHY layer
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = UE_PHY_ULSCH_UE_NACK
DESC = UE uplink UE NACK as seen by the PHY layer
GROUP = ALL:PHY:GRAPHIC:UE
FORMAT = int,eNB_ID : int,frame : int,subframe : int,
UE_id : int,
rnti : int,harq_pid
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rnti : int,harq_pid
ID = UE_PHY_INPUT_SIGNAL
DESC = UE received signal in the time domain for a duration of 1ms
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
...
...
@@ -862,7 +862,7 @@ ID = UE_PHY_INPUT_SIGNAL
ID = UE_PHY_DL_CHANNEL_ESTIMATE
DESC = UE channel estimation in the time domain
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_ID : int,
frame : int,subframe : int,antenna : buffer,chest_t
FORMAT = int,eNB_ID : int,frame : int,subframe : int,antenna : buffer,chest_t
ID = UE_PHY_PDCCH_IQ
DESC = UE PDCCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
...
...
@@ -870,27 +870,27 @@ ID = UE_PHY_PDCCH_IQ
ID = UE_PHY_PDCCH_ENERGY
DESC = UE PDSCH 1 energy and threshold
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_ID : int,
frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
FORMAT = int,eNB_ID : int,frame : int,subframe : int,pdcch_ch_level00 : int,pdcch_ch_level01 : int,pdcch_ch_level10: int,pdcch_ch_level11
ID = UE_PHY_PDSCH_IQ
DESC = UE PDSCH received IQ data
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_ID : int,
frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
FORMAT = int,eNB_ID : int,frame : int,subframe : int,nb_rb : int,N_RB_UL : int,symbols_per_tti : buffer,pusch_comp
ID = UE_PHY_PDSCH_ENERGY
DESC = UE PDSCH 1 energy and threshold
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_ID : int,
frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
FORMAT = int,eNB_ID : int,frame : int,subframe : int,pdsch_ch_level00 : int,pdsch_ch_level01 : int,pdsch_ch_level10: int,pdsch_ch_level11
ID = UE_PHY_PUSCH_TX_POWER
DESC = UE PUSCH tx power
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_id : int,
frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
FORMAT = int,eNB_ID : int,frame : int,subframe : int,p0_pusch : int,ampl: int,g_pusch: int,pl: int,nb_rb
ID = UE_PHY_PUCCH_TX_POWER
DESC = UE PDSCH 1 energy and threshold
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_id : int,
frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
FORMAT = int,eNB_ID : int,frame : int,subframe : int,p0_pucch : int,ampl: int,g_pucch: int,pl
ID = UE_PHY_MEAS
DESC = UE PHY measurements
GROUP = ALL:PHY:GRAPHIC:HEAVY:UE
FORMAT = int,eNB_ID : int,
UE_ID : int,
frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
FORMAT = int,eNB_ID : int,frame : int,subframe : int,rsrp : int,rssi : int,snr: int,rx_power: int,noise_power: int,w_cqi: int,freq_offset
#for debug/test - not used
ID = first
...
...
common/utils/T/tracer/enb.c
View file @
e6936f1b
...
...
@@ -17,6 +17,40 @@
#include "openair_logo.h"
#include "config.h"
/****************************************************************************/
/* conversion from rnti to "ue_id" (which does not really exists) */
/* the idea is to assign an ue_id to an rnti as soon as we get an event */
/* for the rnti */
/****************************************************************************/
int
ue_id
[
65536
];
int
next_ue_id
;
void
reset_ue_ids
(
void
)
{
int
i
;
printf
(
"resetting known UEs
\n
"
);
for
(
i
=
0
;
i
<
65536
;
i
++
)
ue_id
[
i
]
=
-
1
;
next_ue_id
=
0
;
}
int
ue_id_from_rnti
(
void
*
_priv
,
int
rnti
)
{
rnti
=
0
;
/* HACK, to be removed */
if
(
rnti
<
0
||
rnti
>
65535
)
{
printf
(
"bad rnti %d
\n
"
,
rnti
);
exit
(
1
);
}
/* rnti not seen yet? give it a new ue_id */
if
(
ue_id
[
rnti
]
==
-
1
)
{
ue_id
[
rnti
]
=
next_ue_id
;
next_ue_id
++
;
}
return
ue_id
[
rnti
];
}
/****************************************************************************/
/* end of rnti->ue_id conversion */
/****************************************************************************/
typedef
struct
{
view
*
phyview
;
view
*
macview
;
...
...
@@ -25,6 +59,7 @@ typedef struct {
view
*
rrcview
;
view
*
legacy
;
widget
*
current_ue_label
;
widget
*
current_ue_button
;
widget
*
prev_ue_button
;
widget
*
next_ue_button
;
widget
*
pusch_iq_ue_xy_plot
;
...
...
@@ -116,11 +151,15 @@ static void *gui_thread(void *_g)
static
filter
*
ticktime_filter
(
void
*
database
,
char
*
event
,
int
i
,
int
ue
)
{
/* filter is "harq_pid == i && UE_id == 0 && eNB_id == 0" */
/* we get the UE_id from the rnti */
return
filter_and
(
filter_eq
(
filter_evarg
(
database
,
event
,
"harq_pid"
),
filter_int
(
i
)),
filter_and
(
filter_eq
(
filter_evarg
(
database
,
event
,
"UE_id"
),
filter_int
(
ue
)),
filter_eq
(
filter_evfun
(
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
database
,
event
,
"rnti"
)),
filter_int
(
ue
)),
filter_eq
(
filter_evarg
(
database
,
event
,
"eNB_ID"
),
filter_int
(
0
))));
}
...
...
@@ -148,23 +187,28 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
logger_set_filter
(
e
->
e
->
pusch_iq_ue_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_PUSCH_IQ"
,
"UE_ID"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_PUSCH_IQ"
,
"rnti"
)),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
ul_estimate_ue_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_UL_CHANNEL_ESTIMATE"
,
"UE_ID"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_UL_CHANNEL_ESTIMATE"
,
"rnti"
)),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pucch1_energy_ue_threshold_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"UE_ID"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"rnti"
)),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pucch1_energy_ue_energy_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"UE_ID"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1_ENERGY"
,
"rnti"
)),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pucch_iq_ue_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1AB_IQ"
,
"UE_ID"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_PUCCH_1AB_IQ"
,
"rnti"
)),
filter_int
(
ue
)));
for
(
i
=
0
;
i
<
8
;
i
++
)
{
logger_set_filter
(
e
->
e
->
dl_dci_logger
[
i
],
...
...
@@ -185,11 +229,13 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
}
logger_set_filter
(
e
->
e
->
dl_mcs_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_DLSCH_UE_DCI"
,
"UE_id"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_DLSCH_UE_DCI"
,
"rnti"
)),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
ul_mcs_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"ENB_PHY_ULSCH_UE_DCI"
,
"UE_id"
),
filter_evfun
(
e
->
database
,
ue_id_from_rnti
,
NULL
,
filter_evarg
(
e
->
database
,
"ENB_PHY_ULSCH_UE_DCI"
,
"rnti"
)),
filter_int
(
ue
)));
}
...
...
@@ -205,6 +251,7 @@ static void click(void *private, gui *g,
if
(
button
!=
1
)
return
;
if
(
w
==
e
->
prev_ue_button
)
{
ue
--
;
if
(
ue
<
0
)
ue
=
0
;
}
if
(
w
==
e
->
next_ue_button
)
ue
++
;
if
(
w
==
e
->
current_ue_button
)
reset_ue_ids
();
if
(
pthread_mutex_lock
(
&
ed
->
lock
))
abort
();
if
(
ue
!=
ed
->
ue
)
{
...
...
@@ -248,10 +295,12 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
widget_add_child
(
g
,
col
,
logo
,
-
1
);
w
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
col
,
w
,
-
1
);
/* TODO: use button widget, not label widget */
w2
=
new_label
(
g
,
""
);
widget_add_child
(
g
,
w
,
w2
,
-
1
);
label_set_clickable
(
g
,
w2
,
1
);
e
->
current_ue_button
=
w2
;
e
->
current_ue_label
=
w2
;
/* TODO: use button widget, not label widget */
w2
=
new_label
(
g
,
" [prev UE] "
);
widget_add_child
(
g
,
w
,
w2
,
-
1
);
label_set_clickable
(
g
,
w2
,
1
);
...
...
@@ -590,6 +639,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
e
->
legacy
=
new_view_textlist
(
10000
,
10
,
g
,
text
);
set_current_ue
(
g
,
ed
,
0
);
register_notifier
(
g
,
"click"
,
e
->
current_ue_button
,
click
,
ed
);
register_notifier
(
g
,
"click"
,
e
->
prev_ue_button
,
click
,
ed
);
register_notifier
(
g
,
"click"
,
e
->
next_ue_button
,
click
,
ed
);
}
...
...
@@ -628,6 +678,8 @@ int main(int n, char **v)
enb_gui
eg
;
enb_data
enb_data
;
reset_ue_ids
();
/* write on a socket fails if the other end is closed and we get SIGPIPE */
if
(
signal
(
SIGPIPE
,
SIG_IGN
)
==
SIG_ERR
)
abort
();
...
...
common/utils/T/tracer/filter/filter.c
View file @
e6936f1b
...
...
@@ -10,6 +10,8 @@ struct filter {
struct
{
struct
filter
*
a
,
*
b
;
}
op2
;
int
v
;
struct
{
int
event_type
;
int
arg_index
;
}
evarg
;
struct
{
int
(
*
fun
)(
void
*
priv
,
int
v
);
void
*
priv
;
struct
filter
*
x
;
}
evfun
;
}
v
;
int
(
*
eval
)(
struct
filter
*
this
,
event
e
);
...
...
@@ -52,6 +54,11 @@ int eval_evarg(struct filter *f, event e)
return
e
.
e
[
f
->
v
.
evarg
.
arg_index
].
i
;
}
int
eval_evfun
(
struct
filter
*
f
,
event
e
)
{
return
f
->
v
.
evfun
.
fun
(
f
->
v
.
evfun
.
priv
,
f
->
v
.
evfun
.
x
->
eval
(
f
->
v
.
evfun
.
x
,
e
));
}
/****************************************************************************/
/* free memory functions */
/****************************************************************************/
...
...
@@ -63,6 +70,12 @@ void free_op2(struct filter *f)
free
(
f
);
}
void
free_evfun
(
struct
filter
*
f
)
{
free_filter
(
f
->
v
.
evfun
.
x
);
free
(
f
);
}
void
free_noop
(
struct
filter
*
f
)
{
free
(
f
);
...
...
@@ -135,6 +148,19 @@ filter *filter_evarg(void *database, char *event_name, char *varname)
return
ret
;
}
filter
*
filter_evfun
(
void
*
database
,
int
(
*
fun
)(
void
*
priv
,
int
v
),
void
*
priv
,
filter
*
x
)
{
struct
filter
*
ret
=
calloc
(
1
,
sizeof
(
struct
filter
));
if
(
ret
==
NULL
)
abort
();
ret
->
eval
=
eval_evfun
;
ret
->
free
=
free_evfun
;
ret
->
v
.
evfun
.
fun
=
fun
;
ret
->
v
.
evfun
.
priv
=
priv
;
ret
->
v
.
evfun
.
x
=
x
;
return
ret
;
}
void
free_filter
(
filter
*
_f
)
{
struct
filter
*
f
;
...
...
common/utils/T/tracer/filter/filter.h
View file @
e6936f1b
...
...
@@ -9,6 +9,8 @@ filter *filter_and(filter *a, filter *b);
filter
*
filter_eq
(
filter
*
a
,
filter
*
b
);
filter
*
filter_int
(
int
v
);
filter
*
filter_evarg
(
void
*
database
,
char
*
event_name
,
char
*
varname
);
filter
*
filter_evfun
(
void
*
database
,
int
(
*
fun
)(
void
*
priv
,
int
v
),
void
*
priv
,
filter
*
x
);
int
filter_eval
(
filter
*
f
,
event
e
);
...
...
openair1/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
View file @
e6936f1b
...
...
@@ -811,11 +811,10 @@ int lte_dl_channel_estimation(PHY_VARS_UE *ue,
}
}
}
#if T_TRACER
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
subframe_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
#endif
T
(
T_UE_PHY_DL_CHANNEL_ESTIMATE
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
frame_rx
%
1024
),
T_INT
(
ue
->
proc
.
proc_rxtx
[
ue
->
current_thread_id
[
Ns
>>
1
]].
subframe_rx
),
T_INT
(
0
),
T_BUFFER
(
&
ue
->
common_vars
.
common_vars_rx_data_per_thread
[
ue
->
current_thread_id
[
Ns
>>
1
]].
dl_ch_estimates_time
[
eNB_offset
][
0
][
0
],
512
*
4
));
return
(
0
);
}
...
...
openair1/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
View file @
e6936f1b
...
...
@@ -302,7 +302,7 @@ int32_t temp_in_ifft_0[2048*2] __attribute__((aligned(32)));
#if T_TRACER
if
(
aa
==
0
)
T
(
T_ENB_PHY_UL_CHANNEL_ESTIMATE
,
T_INT
(
0
),
T_INT
(
UE_id
),
T
(
T_ENB_PHY_UL_CHANNEL_ESTIMATE
,
T_INT
(
0
),
T_INT
(
-
1
/* TODO: rnti */
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
subframe
),
T_INT
(
0
),
T_BUFFER
(
ul_ch_estimates_time
[
0
],
512
*
4
));
#endif
...
...
openair1/PHY/LTE_TRANSPORT/dci.c
View file @
e6936f1b
...
...
@@ -1765,10 +1765,8 @@ int32_t rx_pdcch(PHY_VARS_UE *ue,
LOG_D
(
PHY
,
"subframe %d: pdcch log2_maxh = %d (%d,%d)
\n
"
,
subframe
,
log2_maxh
,
avgP
[
0
],
avgs
);
#endif
#if T_TRACER
T
(
T_UE_PHY_PDCCH_ENERGY
,
T_INT
(
eNB_id
),
T_INT
(
0
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
avgP
[
0
]),
T_INT
(
avgP
[
1
]),
T_INT
(
avgP
[
2
]),
T_INT
(
avgP
[
3
]));
#endif
T
(
T_UE_PHY_PDCCH_ENERGY
,
T_INT
(
eNB_id
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
avgP
[
0
]),
T_INT
(
avgP
[
1
]),
T_INT
(
avgP
[
2
]),
T_INT
(
avgP
[
3
]));
// compute LLRs for ofdm symbol 0 only
pdcch_channel_compensation
(
pdcch_vars
[
eNB_id
]
->
rxdataF_ext
,
...
...
openair1/PHY/LTE_TRANSPORT/dci_tools.c
View file @
e6936f1b
...
...
@@ -881,7 +881,6 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci
dci_alloc
->
harq_pid
=
rel8
->
harq_process
;
dci_alloc
->
ra_flag
=
0
;
LOG_D
(
PHY
,
"NFAPI: DCI format %d, nCCE %d, L %d, rnti %x,harq_pid %d
\n
"
,
rel8
->
dci_format
,
rel8
->
cce_idx
,
rel8
->
aggregation_level
,
rel8
->
rnti
,
rel8
->
harq_process
);
if
((
rel8
->
rnti_type
==
2
)
&&
(
rel8
->
rnti
!=
SI_RNTI
)
&&
(
rel8
->
rnti
!=
P_RNTI
))
dci_alloc
->
ra_flag
=
1
;
...
...
@@ -1987,6 +1986,13 @@ void fill_dci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci
}
#if T_TRACER
if
(
dlsch0
!=
NULL
)
T
(
T_ENB_PHY_DLSCH_UE_DCI
,
T_INT
(
0
),
T_INT
(
proc
->
frame_tx
),
T_INT
(
proc
->
subframe_tx
),
T_INT
(
rel8
->
rnti
),
T_INT
(
rel8
->
dci_format
),
T_INT
(
rel8
->
harq_process
),
T_INT
(
rel8
->
mcs_1
),
T_INT
(
dlsch0_harq
->
TBS
));
#endif
}
void
fill_mdci_and_dlsch
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
mDCI_ALLOC_t
*
dci_alloc
,
nfapi_dl_config_mpdcch_pdu
*
pdu
)
{
...
...
@@ -2230,8 +2236,8 @@ void fill_mdci_and_dlsch(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,mDCI_ALLOC_t *d
}
void
fill_dci0
(
PHY_VARS_eNB
*
eNB
,
eNB_rxtx_proc_t
*
proc
,
DCI_ALLOC_t
*
dci_alloc
,
nfapi_hi_dci0_dci_pdu
*
pdu
)
{
nfapi_hi_dci0_dci_pdu
*
pdu
)
{
uint8_t
UE_id
;
AssertFatal
((
UE_id
=
find_ulsch
(
pdu
->
dci_pdu_rel8
.
rnti
,
eNB
,
SEARCH_EXIST_OR_FREE
))
>=
0
,
...
...
@@ -2251,6 +2257,15 @@ void fill_dci0(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,DCI_ALLOC_t *dci_alloc,
uint32_t
ndi
=
pdu
->
dci_pdu_rel8
.
new_data_indication_1
;
T
(
T_ENB_PHY_ULSCH_UE_DCI
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
proc
->
frame_tx
),
T_INT
(
proc
->
subframe_tx
),
T_INT
(
pdu
->
dci_pdu_rel8
.
rnti
),
T_INT
(((
proc
->
frame_tx
*
10
+
proc
->
subframe_tx
+
4
)
%
8
)
/* TODO: correct harq pid */
),
T_INT
(
mcs
),
T_INT
(
-
1
/* TODO: remove round? */
),
T_INT
(
pdu
->
dci_pdu_rel8
.
resource_block_start
),
T_INT
(
pdu
->
dci_pdu_rel8
.
number_of_resource_block
),
T_INT
(
-
1
/* TODO: get TBS */
),
T_INT
(
pdu
->
dci_pdu_rel8
.
aggregation_level
),
T_INT
(
pdu
->
dci_pdu_rel8
.
cce_index
));
void
*
dci_pdu
=
(
void
*
)
dci_alloc
->
dci_pdu
;
LOG_I
(
PHY
,
"Filling DCI0 with cqi %d, mcs %d, hopping %d, rballoc %x (%d,%d) ndi %d TPC %d cshift %d
\n
"
,
cqi_req
,
...
...
@@ -6198,16 +6213,16 @@ int generate_ue_dlsch_params_from_dci(int frame,
}
#endif
#if T_TRACER
#if T_TRACER
if
(
(
dlsch
[
0
]
->
rnti
!=
si_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
ra_rnti
)
&&
(
dlsch
[
0
]
->
rnti
!=
p_rnti
))
{
T
(
T_UE_PHY_DLSCH_UE_DCI
,
T_INT
(
0
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
0
),
T_INT
(
dlsch
[
0
]
->
rnti
),
T_INT
(
dci_format
),
T_INT
(
harq_pid
),
T_INT
(
dlsch0_harq
->
mcs
),
T_INT
(
dlsch0_harq
->
TBS
));
T
(
T_UE_PHY_DLSCH_UE_DCI
,
T_INT
(
0
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
dlsch
[
0
]
->
rnti
),
T_INT
(
dci_format
),
T_INT
(
harq_pid
),
T_INT
(
dlsch0_harq
->
mcs
),
T_INT
(
dlsch0_harq
->
TBS
));
}
#endif
#endif
// compute DL power control parameters
...
...
openair1/PHY/LTE_TRANSPORT/dlsch_demodulation.c
View file @
e6936f1b
...
...
@@ -535,8 +535,8 @@ int rx_pdsch(PHY_VARS_UE *ue,
#if T_TRACER
if
(
type
==
PDSCH
)
{
T
(
T_UE_PHY_PDSCH_ENERGY
,
T_INT
(
eNB_id
),
T_INT
(
0
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
avg
[
0
]),
T_INT
(
avg
[
1
]),
T_INT
(
avg
[
2
]),
T_INT
(
avg
[
3
]));
T
(
T_UE_PHY_PDSCH_ENERGY
,
T_INT
(
eNB_id
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
avg
[
0
]),
T_INT
(
avg
[
1
]),
T_INT
(
avg
[
2
]),
T_INT
(
avg
[
3
]));
}
#endif
...
...
@@ -1232,15 +1232,13 @@ int rx_pdsch(PHY_VARS_UE *ue,
}
#endif
#if T_TRACER
T
(
T_UE_PHY_PDSCH_IQ
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T_INT
(
frame
%
1024
),
T
(
T_UE_PHY_PDSCH_IQ
,
T_INT
(
eNB_id
),
T_INT
(
frame
%
1024
),
T_INT
(
subframe
),
T_INT
(
nb_rb
),
T_INT
(
frame_parms
->
N_RB_UL
),
T_INT
(
frame_parms
->
symbols_per_tti
),
T_BUFFER
(
&
pdsch_vars
[
eNB_id
]
->
rxdataF_comp0
[
eNB_id
][
0
],
2
*
/* ulsch[UE_id]->harq_processes[harq_pid]->nb_rb */
frame_parms
->
N_RB_UL
*
12
*
frame_parms
->
symbols_per_tti
*
2
));
#endif
return
(
0
);
return
0
;
}
//==============================================================================================
...
...
openair1/PHY/LTE_TRANSPORT/phich.c
View file @
e6936f1b
...
...
@@ -1452,7 +1452,7 @@ void rx_phich(PHY_VARS_UE *ue,
}
}
#if T_TRACER
T
(
T_UE_PHY_ULSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
subframe
),
T_INT
(
u
e
->
Mod_id
),
T_INT
(
u
lsch
->
rnti
),
T
(
T_UE_PHY_ULSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
subframe
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
#endif
...
...
@@ -1491,7 +1491,7 @@ void rx_phich(PHY_VARS_UE *ue,
ue
->
ulsch_Msg3_active
[
eNB_id
]
=
0
;
#if T_TRACER
T
(
T_UE_PHY_ULSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
subframe
),
T_INT
(
u
e
->
Mod_id
),
T_INT
(
u
lsch
->
rnti
),
T
(
T_UE_PHY_ULSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
subframe
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
#endif
...
...
@@ -1552,7 +1552,7 @@ void generate_phich_top(PHY_VARS_eNB *eNB,
phich
->
first_rb
);
T
(
T_ENB_PHY_PHICH
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
proc
->
frame_tx
),
T_INT
(
subframe
),
T_INT
(
i
),
T_INT
(
0
),
T_INT
(
harq_pid
),
T_INT
(
-
1
/* TODO: rnti */
),
T_INT
(
harq_pid
),
T_INT
(
Ngroup_PHICH
),
T_INT
(
NSF_PHICH
),
T_INT
(
ngroup_PHICH
),
T_INT
(
nseq_PHICH
),
T_INT
(
phich
->
hi
),
...
...
openair1/PHY/LTE_TRANSPORT/pucch.c
View file @
e6936f1b
...
...
@@ -2154,7 +2154,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
eNB
->
pucch1_stats_thres
[
UE_id
][(
subframe
<<
10
)
+
eNB
->
pucch1_stats_cnt
[
UE_id
][
subframe
]]
=
sigma2_dB
+
pucch1_thres
;
eNB
->
pucch1_stats_cnt
[
UE_id
][
subframe
]
=
(
eNB
->
pucch1_stats_cnt
[
UE_id
][
subframe
]
+
1
)
&
1023
;
T
(
T_ENB_PHY_PUCCH_1_ENERGY
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
UE_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T
(
T_ENB_PHY_PUCCH_1_ENERGY
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
-
1
/* TODO: rnti */
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
stat_max
),
T_INT
(
sigma2_dB
+
pucch1_thres
));
/*
...
...
@@ -2399,7 +2399,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *eNB,
eNB
->
pucch1ab_stats_cnt
[
UE_id
][
subframe
]
=
(
eNB
->
pucch1ab_stats_cnt
[
UE_id
][
subframe
]
+
1
)
&
1023
;
/* frame not available here - set to -1 for the moment */
T
(
T_ENB_PHY_PUCCH_1AB_IQ
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
UE_id
),
T_INT
(
-
1
),
T_INT
(
subframe
),
T_INT
(
stat_re
),
T_INT
(
stat_im
));
T
(
T_ENB_PHY_PUCCH_1AB_IQ
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
-
1
/* TODO: rnti */
),
T_INT
(
-
1
),
T_INT
(
subframe
),
T_INT
(
stat_re
),
T_INT
(
stat_im
));
*
payload
=
(
stat_re
<
0
)
?
1
:
2
;
// 1 == ACK, 2 == NAK
...
...
openair1/PHY/LTE_TRANSPORT/ulsch_demodulation.c
View file @
e6936f1b
...
...
@@ -1266,7 +1266,7 @@ void rx_ulsch(PHY_VARS_eNB *eNB,
llrp
=
(
int16_t
*
)
&
pusch_vars
->
llr
[
0
];
T
(
T_ENB_PHY_PUSCH_IQ
,
T_INT
(
0
),
T_INT
(
UE_id
),
T_INT
(
proc
->
frame_rx
),
T
(
T_ENB_PHY_PUSCH_IQ
,
T_INT
(
0
),
T_INT
(
-
1
/* TODO: rnti */
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
subframe
),
T_INT
(
ulsch
[
UE_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
),
T_INT
(
frame_parms
->
N_RB_UL
),
T_INT
(
frame_parms
->
symbols_per_tti
),
T_BUFFER
(
pusch_vars
->
rxdataF_comp
[
0
],
...
...
openair1/SCHED/phy_procedures_lte_eNb.c
View file @
e6936f1b
...
...
@@ -409,8 +409,6 @@ void phy_procedures_eNB_TX(PHY_VARS_eNB *eNB,
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_ENB_TX
+
offset
,
1
);
if
(
do_meas
==
1
)
start_meas
(
&
eNB
->
phy_proc_tx
);
T
(
T_ENB_PHY_DL_TICK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
));
// clear the transmit data array for the current subframe
for
(
aa
=
0
;
aa
<
fp
->
nb_antenna_ports_eNB
;
aa
++
)
{
memset
(
&
eNB
->
common_vars
.
txdataF
[
aa
][
subframe
*
fp
->
ofdm_symbol_size
*
(
fp
->
symbols_per_tti
)],
...
...
@@ -678,7 +676,7 @@ void prach_procedures(PHY_VARS_eNB *eNB,
max_preamble_energy
[
0
]
%
10
,
max_preamble_delay
[
0
]);
T
(
T_ENB_PHY_INITIATE_RA_PROCEDURE
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
-
1
),
T
(
T_ENB_PHY_INITIATE_RA_PROCEDURE
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
max_preamble
[
0
]),
T_INT
(
max_preamble_energy
[
0
]),
T_INT
(
max_preamble_delay
[
0
]));
prach_vars
=
&
eNB
->
prach_vars
;
...
...
@@ -1384,7 +1382,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
}
if
(
ret
==
(
1
+
MAX_TURBO_ITERATIONS
))
{
T
(
T_ENB_PHY_ULSCH_UE_NACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
i
),
T_INT
(
ulsch
->
rnti
),
T
(
T_ENB_PHY_ULSCH_UE_NACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
fill_crc_indication
(
eNB
,
i
,
frame
,
subframe
,
1
);
// indicate NAK to MAC
...
...
@@ -1419,7 +1417,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc) {
fill_crc_indication
(
eNB
,
i
,
frame
,
subframe
,
0
);
// indicate ACK to MAC
fill_rx_indication
(
eNB
,
i
,
frame
,
subframe
);
// indicate SDU to MAC
T
(
T_ENB_PHY_ULSCH_UE_ACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
i
),
T_INT
(
ulsch
->
rnti
),
T
(
T_ENB_PHY_ULSCH_UE_ACK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
ulsch
->
rnti
),
T_INT
(
harq_pid
));
ulsch_harq
->
status
=
SCH_IDLE
;
...
...
@@ -1764,6 +1762,15 @@ void fill_uci_harq_indication(PHY_VARS_eNB *eNB,LTE_eNB_UCI *uci,int frame,int s
pdu
->
harq_indication_fdd_rel13
.
harq_tb_n
[
0
]
=
harq_ack
[
0
];
// release DLSCH if needed
if
(
harq_ack
[
0
]
==
1
)
release_harq
(
eNB
,
UE_id
,
0
,
frame
,
subframe
,
0xffff
);
#if T_TRACER
if
(
harq_ack
[
0
]
!=
1
)
T
(
T_ENB_PHY_DLSCH_UE_NACK
,
T_INT
(
0
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
uci
->
rnti
),
T_INT
(
eNB
->
dlsch
[
UE_id
][
0
]
->
harq_ids
[(
subframe
+
6
)
%
10
]));
else
T
(
T_ENB_PHY_DLSCH_UE_ACK
,
T_INT
(
0
),
T_INT
(
frame
),
T_INT
(
subframe
),
T_INT
(
uci
->
rnti
),
T_INT
(
eNB
->
dlsch
[
UE_id
][
0
]
->
harq_ids
[(
subframe
+
6
)
%
10
]));
#endif
}
else
if
(
uci
->
pucch_fmt
==
pucch_format1b
)
{
pdu
->
harq_indication_fdd_rel13
.
mode
=
0
;
...
...
openair1/SCHED/phy_procedures_lte_ue.c
View file @
e6936f1b
...
...
@@ -1675,13 +1675,13 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
if
(
ue
->
ulsch
[
eNB_id
]
->
o_ACK
[
0
])
{
LOG_I
(
PHY
,
"PUSCH ACK
\n
"
);
T
(
T_UE_PHY_DLSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
Mod_id
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T
(
T_UE_PHY_DLSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
current_harq_pid
));
}
else
{
LOG_I
(
PHY
,
"PUSCH NACK
\n
"
);
T
(
T_UE_PHY_DLSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
Mod_id
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T
(
T_UE_PHY_DLSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
current_harq_pid
));
}
#endif
...
...
@@ -1862,10 +1862,9 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
#else
tx_amp
=
AMP
;
#endif
#if T_TRACER
T
(
T_UE_PHY_PUSCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
Mod_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T
(
T_UE_PHY_PUSCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T_INT
(
tx_amp
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
f_pusch
),
T_INT
(
get_PL
(
Mod_id
,
0
,
eNB_id
)),
T_INT
(
nb_rb
));
#endif
#ifdef UE_DEBUG_TRACE
LOG_I
(
PHY
,
"[UE %d][PUSCH %d] AbsSubFrame %d.%d, generating PUSCH, Po_PUSCH: %d dBm (max %d dBm), amp %d
\n
"
,
...
...
@@ -2223,7 +2222,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
tx_amp
=
AMP
;
#endif
#if T_TRACER
T
(
T_UE_PHY_PUCCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
Mod_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T
(
T_UE_PHY_PUCCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T_INT
(
tx_amp
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
g_pucch
),
T_INT
(
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
)));
#endif
...
...
@@ -2273,12 +2272,12 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
#if T_TRACER
if
(
pucch_payload
[
0
])
{
T
(
T_UE_PHY_DLSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
Mod_id
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T
(
T_UE_PHY_DLSCH_UE_ACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
current_harq_pid
));
}
else
{
T
(
T_UE_PHY_DLSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
Mod_id
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T
(
T_UE_PHY_DLSCH_UE_NACK
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
rnti
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
current_harq_pid
));
}
#endif
...
...
@@ -2318,7 +2317,7 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
tx_amp
=
AMP
;
#endif
#if T_TRACER
T
(
T_UE_PHY_PUCCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
Mod_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T
(
T_UE_PHY_PUCCH_TX_POWER
,
T_INT
(
eNB_id
),
T_INT
(
frame_tx
%
1024
),
T_INT
(
subframe_tx
),
T_INT
(
ue
->
tx_power_dBm
[
subframe_tx
]),
T_INT
(
tx_amp
),
T_INT
(
ue
->
dlsch
[
ue
->
current_thread_id
[
proc
->
subframe_rx
]][
eNB_id
][
0
]
->
g_pucch
),
T_INT
(
get_PL
(
ue
->
Mod_id
,
ue
->
CC_id
,
eNB_id
)));
#endif
#ifdef UE_DEBUG_TRACE
...
...
@@ -2538,7 +2537,7 @@ void ue_measurement_procedures(
#if T_TRACER
if
(
slot
==
0
)
T
(
T_UE_PHY_MEAS
,
T_INT
(
eNB_id
),
T_INT
(
ue
->
Mod_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
proc
->
subframe_rx
),
T
(
T_UE_PHY_MEAS
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
proc
->
subframe_rx
),
T_INT
((
int
)(
10
*
log10
(
ue
->
measurements
.
rsrp
[
0
])
-
ue
->
rx_total_gain_dB
)),
T_INT
((
int
)
ue
->
measurements
.
rx_rssi_dBm
[
0
]),
T_INT
((
int
)(
ue
->
measurements
.
rx_power_avg_dB
[
0
]
-
ue
->
measurements
.
n0_power_avg_dB
)),
...
...
@@ -3073,7 +3072,7 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
pdcch_alloc2ul_frame
(
frame_parms
,
proc
->
frame_rx
,
proc
->
subframe_rx
),
pdcch_alloc2ul_subframe
(
frame_parms
,
proc
->
subframe_rx
));
T
(
T_UE_PHY_ULSCH_UE_DCI
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
proc
->
subframe_rx
),
T_INT
(
ue
->
Mod_id
),
T
(
T_UE_PHY_ULSCH_UE_DCI
,
T_INT
(
eNB_id
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
proc
->
subframe_rx
),
T_INT
(
dci_alloc_rx
[
i
].
rnti
),
T_INT
(
harq_pid
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
mcs
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
round
),
...
...
openair2/LAYER2/MAC/eNB_scheduler_ulsch.c
View file @
e6936f1b
...
...
@@ -1057,7 +1057,7 @@ abort();
T
(
T_ENB_MAC_UE_UL_SCHEDULE
,
T_INT
(
module_idP
),
T_INT
(
CC_id
),
T_INT
(
rnti
),
T_INT
(
frameP
),
T_INT
(
subframeP
),
T_INT
(
harq_pid
),
T_INT
(
UE_template
->
mcs_UL
[
harq_pid
]),
T_INT
(
first_rb
[
CC_id
]),
T_INT
(
rb_table
[
rb_table_index
]),
T_INT
(
TBS
),
T_INT
(
ndi
));
T_INT
(
UE_template
->
TBS_UL
[
harq_pid
]
),
T_INT
(
ndi
));
if
(
mac_eNB_get_rrc_status
(
module_idP
,
rnti
)
<
RRC_CONNECTED
)
LOG_I
(
MAC
,
"[eNB %d][PUSCH %d/%x] CC_id %d Frame %d subframeP %d Scheduled UE %d (mcs %d, first rb %d, nb_rb %d, rb_table_index %d, TBS %d, harq_pid %d)
\n
"
,
...
...
targets/RT/USER/lte-enb.c
View file @
e6936f1b
...
...
@@ -158,6 +158,8 @@ static inline int rxtx(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc, char *thread_nam
// ****************************************
// Common RX procedures subframe n
T
(
T_ENB_PHY_DL_TICK
,
T_INT
(
eNB
->
Mod_id
),
T_INT
(
proc
->
frame_tx
),
T_INT
(
proc
->
subframe_tx
));
// if this is IF5 or 3GPP_eNB
if
(
eNB
->
RU_list
[
0
]
->
function
<
NGFI_RAU_IF4p5
)
{
wakeup_prach_eNB
(
eNB
,
NULL
,
proc
->
frame_rx
,
proc
->
subframe_rx
);
...
...
@@ -267,25 +269,17 @@ static void wait_system_ready (char *message, volatile int *start_flag) {
void
eNB_top
(
PHY_VARS_eNB
*
eNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
)
{
void
eNB_top
(
PHY_VARS_eNB
*
eNB
,
int
frame_rx
,
int
subframe_rx
,
char
*
string
)
{
eNB_proc_t
*
proc
=
&
eNB
->
proc
;
eNB_rxtx_proc_t
*
proc_rxtx
=
&
proc
->
proc_rxtx
[
0
];
proc
->
frame_rx
=
frame_rx
;
proc
->
subframe_rx
=
subframe_rx
;
if
(
!
oai_exit
)
{
if
(
!
oai_exit
)
{
LOG_D
(
PHY
,
"eNB_top in %p (proc %p, CC_id %d), frame %d, subframe %d, instance_cnt_prach %d
\n
"
,
(
void
*
)
pthread_self
(),
proc
,
eNB
->
CC_id
,
proc
->
frame_rx
,
proc
->
subframe_rx
,
proc
->
instance_cnt_prach
);
T
(
T_ENB_MASTER_TICK
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
subframe_rx
));
...
...
@@ -300,7 +294,6 @@ void eNB_top(PHY_VARS_eNB *eNB, int frame_rx, int subframe_rx, char *string) {
LOG_D
(
PHY
,
"eNB_top out %p (proc %p, CC_id %d), frame %d, subframe %d, instance_cnt_prach %d
\n
"
,
(
void
*
)
pthread_self
(),
proc
,
eNB
->
CC_id
,
proc
->
frame_rx
,
proc
->
subframe_rx
,
proc
->
instance_cnt_prach
);
}
}
...
...
targets/RT/USER/lte-ru.c
View file @
e6936f1b
...
...
@@ -1435,8 +1435,6 @@ static void* ru_thread( void* param ) {
if
(
ru
->
feprx
)
ru
->
feprx
(
ru
);
if
(
ru
->
idx
==
0
)
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME
(
VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_RU_FEPRX
,
0
);
T
(
T_ENB_MASTER_TICK
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
),
T_INT
(
proc
->
subframe_rx
));
// At this point, all information for subframe has been received on FH interface
// If this proc is to provide synchronization, do so
wakeup_slaves
(
proc
);
...
...
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