From 4905a5e8e81e5f756395b46f5681f01f69b0fb8e Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Wed, 3 Apr 2019 12:44:17 +0200 Subject: [PATCH] bugfixes for the ue T tracer Not much major changes. In openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c, in the function generate_ue_dlsch_params_from_dci, 'harq_pid' was removed and dci_info_extarcted.harq_pid is now used for all cases. The ue T tracer only deals with PHY signals (no MAC, RLC, PDCP, RRC). --- common/utils/T/tracer/ue.c | 277 ++++++------------- openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c | 18 +- openair1/SCHED_UE/phy_procedures_lte_ue.c | 45 +-- targets/RT/USER/lte-ue.c | 1 + 4 files changed, 125 insertions(+), 216 deletions(-) diff --git a/common/utils/T/tracer/ue.c b/common/utils/T/tracer/ue.c index 7b03210cd2..bafa0384f2 100644 --- a/common/utils/T/tracer/ue.c +++ b/common/utils/T/tracer/ue.c @@ -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); diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c index dbade04739..4f65edd6d5 100644 --- a/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c +++ b/openair1/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c @@ -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)); } diff --git a/openair1/SCHED_UE/phy_procedures_lte_ue.c b/openair1/SCHED_UE/phy_procedures_lte_ue.c index 807c79e6e0..b49ca1eda2 100644 --- a/openair1/SCHED_UE/phy_procedures_lte_ue.c +++ b/openair1/SCHED_UE/phy_procedures_lte_ue.c @@ -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); } } diff --git a/targets/RT/USER/lte-ue.c b/targets/RT/USER/lte-ue.c index bb2319774c..20b42b59bf 100644 --- a/targets/RT/USER/lte-ue.c +++ b/targets/RT/USER/lte-ue.c @@ -1763,6 +1763,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); -- GitLab