Commit f6cf8d76 authored by Cedric Roux's avatar Cedric Roux Committed by Florian Kaltenberger

add 2nd downlink TB dci/ack/nack view in the T enb tracer

Conflicts:
	common/utils/T/tracer/enb.c
parent f6ef80da
......@@ -20,11 +20,11 @@ ID = ENB_PHY_DLSCH_UE_DCI
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,UE_id : int,rnti : int,harq_pid : int,tb
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,UE_id : int,rnti : int,harq_pid : int,tb
ID = ENB_PHY_ULSCH_UE_DCI
DESC = eNodeB uplink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB
......
......@@ -113,20 +113,22 @@ 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, int ue, int tb)
{
/* filter is "harq_pid == i && UE_id == 0 && eNB_id == 0" */
/* filter is "tb == tb && harq_pid == i && UE_id == ue && 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_and(
filter_eq(filter_evarg(database, event, "eNB_ID"), filter_int(0)),
filter_eq(filter_evarg(database, event, "tb"),filter_int(tb)))));
}
static void set_current_ue(gui *g, enb_data *e, int ue)
{
int i;
int i,tb;
char s[256];
sprintf(s, "[UE %d] ", ue);
......@@ -166,22 +168,23 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
filter_eq(
filter_evarg(e->database, "ENB_PHY_PUCCH_1AB_IQ", "UE_ID"),
filter_int(ue)));
for (tb=0; tb<2; tb++)
for (i = 0; i < 8; i++) {
logger_set_filter(e->e->dl_dci_logger[i],
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_DCI", i, ue));
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_DCI", i, ue,tb));
logger_set_filter(e->e->dl_ack_logger[i],
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_ACK", i, ue));
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_ACK", i, ue,tb));
logger_set_filter(e->e->dl_nack_logger[i],
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_NACK", i, ue));
ticktime_filter(e->database, "ENB_PHY_DLSCH_UE_NACK", i, ue,tb));
logger_set_filter(e->e->ul_dci_logger[i],
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_DCI", i, ue));
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_DCI", i, ue,tb));
logger_set_filter(e->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, ue,tb));
logger_set_filter(e->e->ul_ack_logger[i],
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_ACK", i, ue));
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_ACK", i, ue,tb));
logger_set_filter(e->e->ul_nack_logger[i],
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_NACK", i, ue));
ticktime_filter(e->database, "ENB_PHY_ULSCH_UE_NACK", i, ue,tb));
}
logger_set_filter(e->e->dl_mcs_logger,
filter_eq(
......@@ -234,6 +237,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
widget *w, *w2;
view *v;
logger *l;
int tb;
main_window = new_toplevel_window(g, 1200, 900, "eNB tracer");
top_container = new_container(g, VERTICAL);
......@@ -434,12 +438,13 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
widget_add_child(g, top_container, e->dl_ul_harq_ue_label, -1);
line = new_container(g, HORIZONTAL);
widget_add_child(g, top_container, line, -1);
timeline_plot = new_timeline(g, 512, 2*8+2, 3);
timeline_plot = new_timeline(g, 512, 2*8+2+8, 3);
widget_add_child(g, line, timeline_plot, -1);
container_set_child_growable(g, line, timeline_plot, 1);
for (i = 0; i < 2*8+2; i++)
for (i = 0; i < 2*8+2+8; i++)
timeline_set_subline_background_color(g, timeline_plot, i,
new_color(g, i==0 || i==9 ? "#ddd" : (i%9)&1 ? "#e6e6e6" : "#eee"));
new_color(g, i >= 9 && i <= 16 ? (i%8)&1 ? "#e6e6bb" : "#eeb" :
i==0 || i==9+8 ? "#ddd" : (i%9)&1 ? "#e6e6e6" : "#eee"));
timeview = new_view_ticktime(10, g, timeline_plot);
ticktime_set_tick(timeview,
new_ticklog(h, database, "ENB_MASTER_TICK", "frame", "subframe"));
......@@ -449,31 +454,34 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
subview = new_subview_ticktime(timeview, 0, new_color(g,"#bbb"), 3600*1000);
logger_add_view(timelog, subview);
/* tick on UL view */
subview = new_subview_ticktime(timeview, 9, new_color(g,"#bbb"), 3600*1000);
subview = new_subview_ticktime(timeview,9+8,new_color(g,"#bbb"), 3600*1000);
logger_add_view(timelog, subview);
/* DL DCI */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_DCI",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+1,
subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#55f"), 3600*1000);
logger_add_view(timelog, subview);
e->dl_dci_logger[i] = timelog;
}
/* DL ACK */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_ACK",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+1,
subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#282"), 3600*1000);
logger_add_view(timelog, subview);
e->dl_ack_logger[i] = timelog;
}
/* DL NACK */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_NACK",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+1,
subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#f22"), 3600*1000);
logger_add_view(timelog, subview);
e->dl_nack_logger[i] = timelog;
......@@ -483,14 +491,14 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
/* first transmission */
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_DCI",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+9+1,
subview = new_subview_ticktime(timeview, i+9+1+8,
new_color(g,"#55f"), 3600*1000);
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,
subview = new_subview_ticktime(timeview, i+9+1+8,
new_color(g,"#99f"), 3600*1000);
logger_add_view(timelog, subview);
e->ul_dci_retransmission_logger[i] = timelog;
......@@ -499,7 +507,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_ACK",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+9+1,
subview = new_subview_ticktime(timeview, i+9+1+8,
new_color(g,"#282"), 3600*1000);
logger_add_view(timelog, subview);
e->ul_ack_logger[i] = timelog;
......@@ -508,7 +516,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_NACK",
"frame", "subframe");
subview = new_subview_ticktime(timeview, i+9+1,
subview = new_subview_ticktime(timeview, i+9+1+8,
new_color(g,"#f22"), 3600*1000);
logger_add_view(timelog, subview);
e->ul_nack_logger[i] = timelog;
......
......@@ -1759,7 +1759,7 @@ void process_HARQ_feedback(uint8_t UE_id,
#endif
T(T_ENB_PHY_DLSCH_UE_NACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(UE_id), T_INT(dlsch->rnti),
T_INT(dl_harq_pid[m]));
T_INT(dl_harq_pid[m]),T_INT(tb));
if (dlsch_harq_proc->round == 0)
ue_stats->dlsch_NAK_round0++;
......@@ -1795,7 +1795,7 @@ void process_HARQ_feedback(uint8_t UE_id,
#endif
T(T_ENB_PHY_DLSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(UE_id), T_INT(dlsch->rnti),
T_INT(dl_harq_pid[m]));
T_INT(dl_harq_pid[m]),T_INT(tb));
// TODO: add TB to stats
ue_stats->dlsch_ACK[dl_harq_pid[m]][dlsch_harq_proc->round]++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment