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 ...@@ -20,11 +20,11 @@ ID = ENB_PHY_DLSCH_UE_DCI
ID = ENB_PHY_DLSCH_UE_ACK ID = ENB_PHY_DLSCH_UE_ACK
DESC = eNodeB downlink UE ACK as seen by the PHY layer in process_HARQ_feedback DESC = eNodeB downlink UE ACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:ENB 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 ID = ENB_PHY_DLSCH_UE_NACK
DESC = eNodeB downlink UE NACK as seen by the PHY layer in process_HARQ_feedback DESC = eNodeB downlink UE NACK as seen by the PHY layer in process_HARQ_feedback
GROUP = ALL:PHY:GRAPHIC:ENB 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 ID = ENB_PHY_ULSCH_UE_DCI
DESC = eNodeB uplink UE specific DCI as sent by the PHY layer DESC = eNodeB uplink UE specific DCI as sent by the PHY layer
GROUP = ALL:PHY:GRAPHIC:ENB GROUP = ALL:PHY:GRAPHIC:ENB
......
...@@ -113,20 +113,22 @@ static void *gui_thread(void *_g) ...@@ -113,20 +113,22 @@ static void *gui_thread(void *_g)
return NULL; 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 return
filter_and( filter_and(
filter_eq(filter_evarg(database, event, "harq_pid"), filter_int(i)), filter_eq(filter_evarg(database, event, "harq_pid"), filter_int(i)),
filter_and( filter_and(
filter_eq(filter_evarg(database, event, "UE_id"), filter_int(ue)), 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) static void set_current_ue(gui *g, enb_data *e, int ue)
{ {
int i; int i,tb;
char s[256]; char s[256];
sprintf(s, "[UE %d] ", ue); sprintf(s, "[UE %d] ", ue);
...@@ -166,22 +168,23 @@ static void set_current_ue(gui *g, enb_data *e, int ue) ...@@ -166,22 +168,23 @@ static void set_current_ue(gui *g, enb_data *e, int ue)
filter_eq( filter_eq(
filter_evarg(e->database, "ENB_PHY_PUCCH_1AB_IQ", "UE_ID"), filter_evarg(e->database, "ENB_PHY_PUCCH_1AB_IQ", "UE_ID"),
filter_int(ue))); filter_int(ue)));
for (tb=0; tb<2; tb++)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
logger_set_filter(e->e->dl_dci_logger[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], 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], 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], 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], logger_set_filter(e->e->ul_dci_retransmission_logger[i],
ticktime_filter(e->database, 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], 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], 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, logger_set_filter(e->e->dl_mcs_logger,
filter_eq( filter_eq(
...@@ -234,6 +237,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database, ...@@ -234,6 +237,7 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
widget *w, *w2; widget *w, *w2;
view *v; view *v;
logger *l; logger *l;
int tb;
main_window = new_toplevel_window(g, 1200, 900, "eNB tracer"); main_window = new_toplevel_window(g, 1200, 900, "eNB tracer");
top_container = new_container(g, VERTICAL); 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, ...@@ -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); widget_add_child(g, top_container, e->dl_ul_harq_ue_label, -1);
line = new_container(g, HORIZONTAL); line = new_container(g, HORIZONTAL);
widget_add_child(g, top_container, line, -1); 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); widget_add_child(g, line, timeline_plot, -1);
container_set_child_growable(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, 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); timeview = new_view_ticktime(10, g, timeline_plot);
ticktime_set_tick(timeview, ticktime_set_tick(timeview,
new_ticklog(h, database, "ENB_MASTER_TICK", "frame", "subframe")); 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, ...@@ -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); subview = new_subview_ticktime(timeview, 0, new_color(g,"#bbb"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
/* tick on UL view */ /* 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); logger_add_view(timelog, subview);
/* DL DCI */ /* DL DCI */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_DCI", timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_DCI",
"frame", "subframe"); "frame", "subframe");
subview = new_subview_ticktime(timeview, i+1, subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#55f"), 3600*1000); new_color(g,"#55f"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->dl_dci_logger[i] = timelog; e->dl_dci_logger[i] = timelog;
} }
/* DL ACK */ /* DL ACK */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_ACK", timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_ACK",
"frame", "subframe"); "frame", "subframe");
subview = new_subview_ticktime(timeview, i+1, subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#282"), 3600*1000); new_color(g,"#282"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->dl_ack_logger[i] = timelog; e->dl_ack_logger[i] = timelog;
} }
/* DL NACK */ /* DL NACK */
for (tb = 0; tb < 2; tb++)
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_NACK", timelog = new_ticklog(h, database, "ENB_PHY_DLSCH_UE_NACK",
"frame", "subframe"); "frame", "subframe");
subview = new_subview_ticktime(timeview, i+1, subview = new_subview_ticktime(timeview, i+1+tb*8,
new_color(g,"#f22"), 3600*1000); new_color(g,"#f22"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->dl_nack_logger[i] = timelog; 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, ...@@ -483,14 +491,14 @@ static void enb_main_gui(enb_gui *e, gui *g, event_handler *h, void *database,
/* first transmission */ /* first transmission */
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_DCI", timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_DCI",
"frame", "subframe"); "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); new_color(g,"#55f"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->ul_dci_logger[i] = timelog; e->ul_dci_logger[i] = timelog;
/* retransmission */ /* retransmission */
timelog = new_ticklog(h, database, timelog = new_ticklog(h, database,
"ENB_PHY_ULSCH_UE_NO_DCI_RETRANSMISSION", "frame", "subframe"); "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); new_color(g,"#99f"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->ul_dci_retransmission_logger[i] = timelog; 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, ...@@ -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++) { for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_ACK", timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_ACK",
"frame", "subframe"); "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); new_color(g,"#282"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->ul_ack_logger[i] = timelog; 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, ...@@ -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++) { for (i = 0; i < 8; i++) {
timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_NACK", timelog = new_ticklog(h, database, "ENB_PHY_ULSCH_UE_NACK",
"frame", "subframe"); "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); new_color(g,"#f22"), 3600*1000);
logger_add_view(timelog, subview); logger_add_view(timelog, subview);
e->ul_nack_logger[i] = timelog; e->ul_nack_logger[i] = timelog;
......
...@@ -1759,7 +1759,7 @@ void process_HARQ_feedback(uint8_t UE_id, ...@@ -1759,7 +1759,7 @@ void process_HARQ_feedback(uint8_t UE_id,
#endif #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(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) if (dlsch_harq_proc->round == 0)
ue_stats->dlsch_NAK_round0++; ue_stats->dlsch_NAK_round0++;
...@@ -1795,7 +1795,7 @@ void process_HARQ_feedback(uint8_t UE_id, ...@@ -1795,7 +1795,7 @@ void process_HARQ_feedback(uint8_t UE_id,
#endif #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(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 // TODO: add TB to stats
ue_stats->dlsch_ACK[dl_harq_pid[m]][dlsch_harq_proc->round]++; 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