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
zzha zzha
OpenXG-RAN
Commits
335e894c
Commit
335e894c
authored
Apr 15, 2019
by
Raphael Defosseux
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/T-ue-fixes-2019-w14' into develop_integration_2019_w15
parents
3ce28618
4905a5e8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
125 additions
and
216 deletions
+125
-216
common/utils/T/tracer/ue.c
common/utils/T/tracer/ue.c
+91
-186
openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
+8
-10
openair1/SCHED_UE/phy_procedures_lte_ue.c
openair1/SCHED_UE/phy_procedures_lte_ue.c
+25
-20
targets/RT/USER/lte-ue.c
targets/RT/USER/lte-ue.c
+1
-0
No files found.
common/utils/T/tracer/ue.c
View file @
335e894c
...
...
@@ -23,9 +23,6 @@ typedef struct {
view
*
pdcpview
;
view
*
rrcview
;
view
*
legacy
;
widget
*
current_ue_label
;
widget
*
prev_ue_button
;
widget
*
next_ue_button
;
widget
*
pdsch_iq_ue_xy_plot
;
widget
*
dl_estimate_ue_xy_plot
;
widget
*
pdcch_energy_ue_xy_plot
;
...
...
@@ -121,15 +118,14 @@ static void *gui_thread(void *_g)
return
NULL
;
}
static
filter
*
ticktime_filter
(
void
*
database
,
char
*
event
,
int
i
,
int
ue
)
static
filter
*
ticktime_filter
(
void
*
database
,
char
*
event
,
int
i
)
{
/* filter is "harq_pid == i
&& UE_id == 0 &&
eNB_id == 0" */
/* filter is "harq_pid == i
and
eNB_id == 0" */
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_evarg
(
database
,
event
,
"eNB_ID"
),
filter_int
(
0
))));
filter_eq
(
filter_evarg
(
database
,
event
,
"eNB_ID"
),
filter_int
(
0
)));
}
static
void
set_current_ue
(
gui
*
g
,
ue_data
*
e
,
int
ue
)
...
...
@@ -137,8 +133,6 @@ static void set_current_ue(gui *g, ue_data *e, int ue)
int
i
;
char
s
[
256
];
sprintf
(
s
,
"[UE %d] "
,
ue
);
label_set_text
(
g
,
e
->
e
->
current_ue_label
,
s
);
sprintf
(
s
,
"PDSCH IQ [UE %d]"
,
ue
);
xy_plot_set_title
(
g
,
e
->
e
->
pdsch_iq_ue_xy_plot
,
s
);
sprintf
(
s
,
"DL estimated channel [UE %d]"
,
ue
);
...
...
@@ -161,97 +155,24 @@ static void set_current_ue(gui *g, ue_data *e, int ue)
xy_plot_set_title
(
g
,
e
->
e
->
pucch_power_xy_plot
,
s
);
sprintf
(
s
,
"PHY Measurements [UE %d]"
,
ue
);
xy_plot_set_title
(
g
,
e
->
e
->
phy_meas_xy_plot
,
s
);
logger_set_filter
(
e
->
e
->
pdsch_iq_ue_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PDSCH_IQ"
,
"UE_ID"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
dl_estimate_ue_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_DL_CHANNEL_ESTIMATE"
,
"UE_ID"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pdcch_energy_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PDCCH_ENERGY"
,
"UE_ID"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pdsch_energy_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PDSCH_ENERGY"
,
"UE_ID"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
phy_meas_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_MEAS"
,
"UE_ID"
),
filter_int
(
ue
)));
/*logger_set_filter(e->pucch1_energy_ue_energy_logger,
filter_eq(
filter_evarg(e->database, "ENB_PHY_PUCCH_1_ENERGY", "UE_ID"),
filter_int(ue)));*/
/*logger_set_filter(e->e->pdcch_iq_ue_logger,
filter_eq(
filter_evarg(e->database, "UE_PHY_PDCCH_IQ", "UE_ID"),
filter_int(ue)));*/
for
(
i
=
0
;
i
<
8
;
i
++
)
{
logger_set_filter
(
e
->
e
->
dl_dci_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_DCI"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_DCI"
,
i
));
logger_set_filter
(
e
->
e
->
dl_ack_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_ACK"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_ACK"
,
i
));
logger_set_filter
(
e
->
e
->
dl_nack_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_NACK"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_DLSCH_UE_NACK"
,
i
));
logger_set_filter
(
e
->
e
->
ul_dci_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_DCI"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_DCI"
,
i
));
/*logger_set_filter(e->ul_dci_retransmission_logger[i],
ticktime_filter(e->database,
"ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION", i
, ue
));*/
"ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION", i));*/
logger_set_filter
(
e
->
e
->
ul_ack_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_ACK"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_ACK"
,
i
));
logger_set_filter
(
e
->
e
->
ul_nack_logger
[
i
],
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_NACK"
,
i
,
ue
));
ticktime_filter
(
e
->
database
,
"UE_PHY_ULSCH_UE_NACK"
,
i
));
}
logger_set_filter
(
e
->
e
->
dl_mcs_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_DLSCH_UE_DCI"
,
"UE_id"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
ul_mcs_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_ULSCH_UE_DCI"
,
"UE_id"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pusch_power_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"UE_id"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pusch_ampl_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"UE_id"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pucch_power_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"UE_id"
),
filter_int
(
ue
)));
logger_set_filter
(
e
->
e
->
pucch_ampl_logger
,
filter_eq
(
filter_evarg
(
e
->
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"UE_id"
),
filter_int
(
ue
)));
}
static
void
click
(
void
*
private
,
gui
*
g
,
char
*
notification
,
widget
*
w
,
void
*
notification_data
)
{
int
*
d
=
notification_data
;
int
button
=
d
[
0
];
ue_data
*
ed
=
private
;
ue_gui
*
e
=
ed
->
e
;
int
ue
=
ed
->
ue
;
if
(
button
!=
1
)
return
;
if
(
w
==
e
->
prev_ue_button
)
{
ue
--
;
if
(
ue
<
0
)
ue
=
0
;
}
if
(
w
==
e
->
next_ue_button
)
ue
++
;
if
(
pthread_mutex_lock
(
&
ed
->
lock
))
abort
();
if
(
ue
!=
ed
->
ue
)
{
set_current_ue
(
g
,
ed
,
ue
);
ed
->
ue
=
ue
;
}
if
(
pthread_mutex_unlock
(
&
ed
->
lock
))
abort
();
}
static
void
ue_main_gui
(
ue_gui
*
e
,
gui
*
g
,
event_handler
*
h
,
void
*
database
,
...
...
@@ -271,7 +192,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
widget
*
text
;
view
*
textview
;
int
i
;
widget
*
w
,
*
w2
;
widget
*
w
;
view
*
v
;
logger
*
l
;
...
...
@@ -283,24 +204,8 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
logo
=
new_image
(
g
,
openair_logo_png
,
openair_logo_png_len
);
/* logo + prev/next UE buttons */
col
=
new_container
(
g
,
VERTICAL
);
widget_add_child
(
g
,
col
,
logo
,
-
1
);
w
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
col
,
w
,
-
1
);
w2
=
new_label
(
g
,
""
);
widget_add_child
(
g
,
w
,
w2
,
-
1
);
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
);
e
->
prev_ue_button
=
w2
;
w2
=
new_label
(
g
,
" [next UE] "
);
widget_add_child
(
g
,
w
,
w2
,
-
1
);
label_set_clickable
(
g
,
w2
,
1
);
e
->
next_ue_button
=
w2
;
widget_add_child
(
g
,
line
,
col
,
-
1
);
/* logo */
widget_add_child
(
g
,
line
,
logo
,
-
1
);
input_signal_plot
=
new_xy_plot
(
g
,
256
,
55
,
"input signal"
,
20
);
widget_add_child
(
g
,
line
,
input_signal_plot
,
-
1
);
...
...
@@ -356,7 +261,73 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c720c"
));
logger_add_view
(
l
,
v
);
e
->
phy_meas_logger
=
l
;
/* a bit of space */
line
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
w
=
new_space
(
g
,
1
,
10
);
widget_add_child
(
g
,
line
,
w
,
-
1
);
/* UE x DL mcs */
line
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
2
,
30
);
e
->
dl_mcs_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
l
=
new_ticked_ttilog
(
h
,
database
,
"UE_PHY_DL_TICK"
,
"frame"
,
"subframe"
,
"UE_PHY_DLSCH_UE_DCI"
,
"mcs"
,
0
,
-
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
dl_mcs_logger
=
l
;
/* UE x UL mcs */
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
2
,
30
);
e
->
ul_mcs_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
l
=
new_ticked_ttilog
(
h
,
database
,
"UE_PHY_DL_TICK"
,
"frame"
,
"subframe"
,
"UE_PHY_ULSCH_UE_DCI"
,
"mcs"
,
0
,
-
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
ul_mcs_logger
=
l
;
/* UE x PUSCH TX Power */
// line = new_container(g, HORIZONTAL);
// widget_add_child(g, top_container, line, -1);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
e
->
pusch_power_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
30
,
50
);
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"frame"
,
"subframe"
,
"p0_pusch"
,
0
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
pusch_power_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"frame"
,
"subframe"
,
"ampl"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#720c0c"
));
logger_add_view
(
l
,
v
);
e
->
pusch_ampl_logger
=
l
;
/* UE x PUCCH TX Power */
// line = new_container(g, HORIZONTAL);
// widget_add_child(g, top_container, line, -1);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
e
->
pucch_power_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
30
,
50
);
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"frame"
,
"subframe"
,
"p0_pucch"
,
0
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
pucch_power_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"frame"
,
"subframe"
,
"ampl"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#720c0c"
));
logger_add_view
(
l
,
v
);
e
->
pucch_ampl_logger
=
l
;
/* UE x PDSCH energy */
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
50
);
e
->
pdsch_energy_ue_xy_plot
=
w
;
...
...
@@ -376,13 +347,13 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
"UE_PHY_PDSCH_ENERGY"
,
"frame"
,
"subframe"
,
"pdsch_ch_level10"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0f0f0f"
));
logger_add_view
(
l
,
v
);
e
->
pdsch_energy_logger
=
l
;
e
->
pdsch_energy_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PDSCH_ENERGY"
,
"frame"
,
"subframe"
,
"pdsch_ch_level11"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0000ff"
));
logger_add_view
(
l
,
v
);
e
->
pdsch_energy_logger
=
l
;
/* UE x PDCCH energy */
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
50
);
e
->
pdcch_energy_ue_xy_plot
=
w
;
...
...
@@ -402,13 +373,13 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
"UE_PHY_PDCCH_ENERGY"
,
"frame"
,
"subframe"
,
"pdcch_ch_level10"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0f0f0f"
));
logger_add_view
(
l
,
v
);
e
->
pdcch_energy_logger
=
l
;
e
->
pdcch_energy_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PDCCH_ENERGY"
,
"frame"
,
"subframe"
,
"pdcch_ch_level11"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0000ff"
));
logger_add_view
(
l
,
v
);
e
->
pdcch_energy_logger
=
l
;
/* UE x PDCCH IQ data */
w
=
new_xy_plot
(
g
,
55
,
55
,
""
,
50
);
e
->
pdcch_iq_ue_xy_plot
=
w
;
...
...
@@ -419,7 +390,7 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
v
=
new_view_xy
(
100
*
12
*
14
,
10
,
g
,
w
,
new_color
(
g
,
"#000"
),
XY_FORCED_MODE
);
logger_add_view
(
l
,
v
);
e
->
pdcch_iq_ue_logger
=
l
;
/* UE x PDCCH IQ data */
/*w = new_xy_plot(g, 55, 55, "", 50);
e->pdcch_iq_ue_xy_plot = w;
...
...
@@ -429,68 +400,8 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
v = new_view_xy(500, 10, g, w, new_color(g,"#000"), XY_LOOP_MODE);
logger_add_view(l, v);
e->pdcch_iq_ue_logger = l;*/
/* UE x DL mcs */
line
=
new_container
(
g
,
HORIZONTAL
);
widget_add_child
(
g
,
top_container
,
line
,
-
1
);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
2
,
30
);
e
->
dl_mcs_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
l
=
new_ticked_ttilog
(
h
,
database
,
"UE_PHY_DL_TICK"
,
"frame"
,
"subframe"
,
"UE_PHY_DLSCH_UE_DCI"
,
"mcs"
,
0
,
-
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
dl_mcs_logger
=
l
;
/* UE x UL mcs */
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
2
,
30
);
e
->
ul_mcs_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
l
=
new_ticked_ttilog
(
h
,
database
,
"UE_PHY_UL_TICK"
,
"frame"
,
"subframe"
,
"UE_PHY_ULSCH_UE_DCI"
,
"mcs"
,
0
,
-
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
ul_mcs_logger
=
l
;
/* UE x PUSCH TX Power */
// line = new_container(g, HORIZONTAL);
// widget_add_child(g, top_container, line, -1);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
e
->
pusch_power_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
30
,
50
);
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"frame"
,
"subframe"
,
"p0_pusch"
,
0
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
pusch_power_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUSCH_TX_POWER"
,
"frame"
,
"subframe"
,
"ampl"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#720c0c"
));
logger_add_view
(
l
,
v
);
e
->
pusch_ampl_logger
=
l
;
/* UE x PUCCH TX Power */
// line = new_container(g, HORIZONTAL);
// widget_add_child(g, top_container, line, -1);
w
=
new_xy_plot
(
g
,
128
,
55
,
""
,
20
);
e
->
pucch_power_xy_plot
=
w
;
widget_add_child
(
g
,
line
,
w
,
-
1
);
xy_plot_set_range
(
g
,
w
,
0
,
1024
*
10
,
-
30
,
50
);
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"frame"
,
"subframe"
,
"p0_pucch"
,
0
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#0c0c72"
));
logger_add_view
(
l
,
v
);
e
->
pucch_power_logger
=
l
;
l
=
new_ttilog
(
h
,
database
,
"UE_PHY_PUCCH_TX_POWER"
,
"frame"
,
"subframe"
,
"ampl"
,
1
);
v
=
new_view_tti
(
10
,
g
,
w
,
new_color
(
g
,
"#720c0c"
));
logger_add_view
(
l
,
v
);
e
->
pucch_ampl_logger
=
l
;
/* downlink/uplink UE DCIs */
widget_add_child
(
g
,
top_container
,
new_label
(
g
,
"DL/UL TICK/DCI/ACK/NACK [all UEs]"
),
-
1
);
...
...
@@ -600,14 +511,14 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
logger_add_view
(
timelog
,
subview
);
e
->
ul_dci_logger
[
i
]
=
timelog
;
/* retransmission */
timelog
=
new_ticklog
(
h
,
database
,
"ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION"
,
"frame"
,
"subframe"
);
subview
=
new_subview_ticktime
(
timeview
,
i
+
9
+
1
,
new_color
(
g
,
"#99f"
),
3600
*
1000
);
logger_add_view
(
timelog
,
subview
);
e
->
ul_dci_retransmission_logger
[
i
]
=
timelog
;
}
/* UL ACK */
...
...
@@ -707,8 +618,6 @@ static void ue_main_gui(ue_gui *e, gui *g, event_handler *h, void *database,
#endif
set_current_ue
(
g
,
ed
,
0
);
register_notifier
(
g
,
"click"
,
e
->
prev_ue_button
,
click
,
ed
);
register_notifier
(
g
,
"click"
,
e
->
next_ue_button
,
click
,
ed
);
}
void
view_add_log
(
view
*
v
,
char
*
log
,
event_handler
*
h
,
void
*
database
,
...
...
@@ -824,13 +733,11 @@ int main(int n, char **v)
on_off
(
database
,
"UE_PHY_PUSCH_TX_POWER"
,
is_on
,
1
);
on_off
(
database
,
"UE_PHY_PUCCH_TX_POWER"
,
is_on
,
1
);
on_off
(
database
,
"UE_PHY_MEAS"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_GROUP_INFO"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_GROUP_ERROR"
,
is_on
,
1
);
on_off
(
database
,
"LEGACY_GROUP_WARNING"
,
is_on
,
1
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_UL_TICK"
,
h
,
database
,
is_on
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_DL_TICK"
,
h
,
database
,
is_on
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_DLSCH_UE_DCI"
,
h
,
database
,
is_on
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_DLSCH_UE_ACK"
,
h
,
database
,
is_on
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_DLSCH_UE_NACK"
,
h
,
database
,
is_on
);
...
...
@@ -838,8 +745,6 @@ int main(int n, char **v)
view_add_log
(
eg
.
phyview
,
"UE_PHY_ULSCH_UE_ACK"
,
h
,
database
,
is_on
);
view_add_log
(
eg
.
phyview
,
"UE_PHY_ULSCH_UE_NACK"
,
h
,
database
,
is_on
);
/* deactivate those two by default, they are a bit heavy */
//on_off(database, "ENB_MAC_UE_UL_SDU_WITH_DATA", is_on, 0);
//on_off(database, "ENB_MAC_UE_UL_PDU_WITH_DATA", is_on, 0);
...
...
openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
View file @
335e894c
...
...
@@ -2171,8 +2171,6 @@ int generate_ue_dlsch_params_from_dci(int frame,
uint8_t
beamforming_mode
,
uint16_t
tc_rnti
)
{
uint8_t
harq_pid
=
0
;
uint8_t
frame_type
=
frame_parms
->
frame_type
;
uint8_t
tpmi
=
0
;
LTE_UE_DLSCH_t
*
dlsch0
=
NULL
,
*
dlsch1
=
NULL
;
...
...
@@ -2488,15 +2486,15 @@ int generate_ue_dlsch_params_from_dci(int frame,
case
format1E_2A_M10PRB
:
if
(
!
dlsch
[
0
])
return
-
1
;
harq_pid
=
((
DCI1E_5MHz_2A_M10PRB_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
dci_info_extarcted
.
harq_pid
=
((
DCI1E_5MHz_2A_M10PRB_TDD_t
*
)
dci_pdu
)
->
harq_pid
;
if
(
harq_pid
>=
8
)
{
LOG_E
(
PHY
,
"Format 1E_2A_M10PRB: harq_pid=%d >= 8
\n
"
,
harq_pid
);
if
(
dci_info_extarcted
.
harq_pid
>=
8
)
{
LOG_E
(
PHY
,
"Format 1E_2A_M10PRB: harq_pid=%d >= 8
\n
"
,
dci_info_extarcted
.
harq_pid
);
return
(
-
1
);
}
dlsch
[
0
]
->
current_harq_pid
=
harq_pid
;
dlsch
[
0
]
->
harq_ack
[
subframe
].
harq_id
=
harq_pid
;
dlsch
[
0
]
->
current_harq_pid
=
dci_info_extarcted
.
harq_pid
;
dlsch
[
0
]
->
harq_ack
[
subframe
].
harq_id
=
dci_info_extarcted
.
harq_pid
;
/*
tbswap = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->tb_swap;
...
...
@@ -2511,7 +2509,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
*/
dlsch0
=
dlsch
[
0
];
dlsch0_harq
=
dlsch
[
0
]
->
harq_processes
[
harq_pid
];
dlsch0_harq
=
dlsch
[
0
]
->
harq_processes
[
dci_info_extarcted
.
harq_pid
];
// Needs to be checked
dlsch0_harq
->
codeword
=
0
;
conv_rballoc
(((
DCI1E_5MHz_2A_M10PRB_TDD_t
*
)
dci_pdu
)
->
rah
,
...
...
@@ -2627,7 +2625,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
// is NAK or an ACK was not received
dlsch0->harq_ack[subframe].ack = 1;
dlsch0->harq_ack[subframe].harq_id = harq_pid;
dlsch0->harq_ack[subframe].harq_id =
dci_info_extarcted.
harq_pid;
dlsch0->harq_ack[subframe].send_harq_status = 1;
dlsch0->active = 0;
return(0);
...
...
@@ -2683,7 +2681,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
{
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
(
dci_info_extarcted
.
harq_pid
),
T_INT
(
dlsch0_harq
->
mcs
),
T_INT
(
dlsch0_harq
->
TBS
));
}
...
...
openair1/SCHED_UE/phy_procedures_lte_ue.c
View file @
335e894c
...
...
@@ -1517,15 +1517,19 @@ void ue_ulsch_uespec_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
O_ACK
=
ack_status_cw0
+
ack_status_cw1
;
}
if
(
ue
->
ulsch
[
eNB_id
]
->
o_ACK
[
0
])
{
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
(
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
));
}
if
(
LOG_DEBUGFLAG
(
DEBUG_UE_PHYPROC
))
{
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
(
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
(
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
));
}
LOG_I
(
PHY
,
"[UE %d][PDSCH %x] AbsSubFrame %d.%d Generating ACK (%d,%d) for %d bits on PUSCH
\n
"
,
...
...
@@ -2035,14 +2039,12 @@ void ue_pucch_procedures(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,uin
}
}
if
(
LOG_DEBUGFLAG
(
DEBUG_UE_PHYPROC
))
{
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
(
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
(
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
));
}
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
(
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
(
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
));
}
generate_pucch1x
(
ue
->
common_vars
.
txdataF
,
...
...
@@ -2739,18 +2741,21 @@ int ue_pdcch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint
CBA_RNTI
,
eNB_id
,
0
)
==
0
))
{
int
harq_pid
=
subframe2harq_pid
(
&
ue
->
frame_parms
,
pdcch_alloc2ul_frame
(
&
ue
->
frame_parms
,
proc
->
frame_rx
,
proc
->
subframe_rx
),
pdcch_alloc2ul_subframe
(
&
ue
->
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
(
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
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TBS
));
if
(
LOG_DEBUGFLAG
(
DEBUG_UE_PHYPROC
))
{
LOG_USEDINLOG_VAR
(
int8_t
,
harq_pid
)
=
subframe2harq_pid
(
&
ue
->
frame_parms
,
pdcch_alloc2ul_frame
(
&
ue
->
frame_parms
,
proc
->
frame_rx
,
proc
->
subframe_rx
),
pdcch_alloc2ul_subframe
(
&
ue
->
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
(
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
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
first_rb
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
nb_rb
),
T_INT
(
ue
->
ulsch
[
eNB_id
]
->
harq_processes
[
harq_pid
]
->
TBS
));
LOG_D
(
PHY
,
"[UE %d] Generate UE ULSCH C_RNTI format 0 (subframe %d)
\n
"
,
ue
->
Mod_id
,
subframe_rx
);
}
}
...
...
targets/RT/USER/lte-ue.c
View file @
335e894c
...
...
@@ -1764,6 +1764,7 @@ void *UE_thread(void *arg) {
UE
->
frame_parms
.
ofdm_symbol_size
-
UE
->
frame_parms
.
nb_prefix_samples0
;
proc
->
instance_cnt_rxtx
++
;
LOG_D
(
PHY
,
"[SCHED][UE %d] UE RX instance_cnt_rxtx %d subframe %d !!
\n
"
,
UE
->
Mod_id
,
proc
->
instance_cnt_rxtx
,
proc
->
subframe_rx
);
T
(
T_UE_MASTER_TICK
,
T_INT
(
0
),
T_INT
(
proc
->
frame_rx
%
1024
),
T_INT
(
proc
->
subframe_rx
));
AssertFatal
(
pthread_cond_signal
(
&
proc
->
cond_rxtx
)
==
0
,
""
);
AssertFatal
(
pthread_mutex_unlock
(
&
proc
->
mutex_rxtx
)
==
0
,
""
);
initRefTimes
(
t1
);
...
...
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