From 9faa2d5fcdc129ccfba814515e752893690da0f2 Mon Sep 17 00:00:00 2001 From: Xavier Arteaga Date: Wed, 10 Feb 2021 19:37:43 +0100 Subject: [PATCH] SRSUE: Automatic DL-HARQ Reset for every TTI and Generate PUCCH baseband signal --- lib/src/phy/ue/ue_ul_nr.c | 20 +++++++++++++++----- srsue/src/phy/nr/cc_worker.cc | 4 ++++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/src/phy/ue/ue_ul_nr.c b/lib/src/phy/ue/ue_ul_nr.c index d3cfa72f3..101e403de 100644 --- a/lib/src/phy/ue/ue_ul_nr.c +++ b/lib/src/phy/ue/ue_ul_nr.c @@ -166,21 +166,31 @@ int srslte_ue_ul_nr_encode_pucch(srslte_ue_ul_nr_t* q, // Actual PUCCH encoding switch (resource->format) { case SRSLTE_PUCCH_NR_FORMAT_0: - return ue_ul_nr_encode_pucch_format0(q, resource, uci_data); + if (ue_ul_nr_encode_pucch_format0(q, resource, uci_data) < SRSLTE_SUCCESS) { + return SRSLTE_ERROR; + } case SRSLTE_PUCCH_NR_FORMAT_1: - return ue_ul_nr_encode_pucch_format1(q, slot_cfg, cfg, resource, uci_data); + if (ue_ul_nr_encode_pucch_format1(q, slot_cfg, cfg, resource, uci_data) < SRSLTE_SUCCESS) { + return SRSLTE_ERROR; + } case SRSLTE_PUCCH_NR_FORMAT_2: case SRSLTE_PUCCH_NR_FORMAT_3: case SRSLTE_PUCCH_NR_FORMAT_4: - return srslte_pucch_nr_format_2_3_4_encode( - &q->pucch, &q->carrier, cfg, slot_cfg, resource, &uci_data->cfg, &uci_data->value, q->sf_symbols[0]); + if (srslte_pucch_nr_format_2_3_4_encode( + &q->pucch, &q->carrier, cfg, slot_cfg, resource, &uci_data->cfg, &uci_data->value, q->sf_symbols[0]) < + SRSLTE_SUCCESS) { + return SRSLTE_ERROR; + } case SRSLTE_PUCCH_NR_FORMAT_ERROR: default: ERROR("Invalid case"); break; } - return SRSLTE_ERROR; + // Generate signal + srslte_ofdm_tx_sf(&q->ifft); + + return SRSLTE_SUCCESS; } void srslte_ue_ul_nr_free(srslte_ue_ul_nr_t* q) diff --git a/srsue/src/phy/nr/cc_worker.cc b/srsue/src/phy/nr/cc_worker.cc index 19917990b..c7d8fef2c 100644 --- a/srsue/src/phy/nr/cc_worker.cc +++ b/srsue/src/phy/nr/cc_worker.cc @@ -225,6 +225,10 @@ bool cc_worker::work_dl() srslte::unique_byte_buffer_t data = srslte::make_byte_buffer(); data->N_bytes = pdsch_cfg.grant.tb[0].tbs / 8U; + // Get soft-buffer from MAC + // ... + srslte_softbuffer_rx_reset(&softbuffer_rx); + // Initialise PDSCH Result std::array pdsch_res = {}; pdsch_res[0].payload = data->buffer;