diff --git a/lib/src/phy/ue/ue_dl.c b/lib/src/phy/ue/ue_dl.c index c6c8cb4ee..3c4740419 100644 --- a/lib/src/phy/ue/ue_dl.c +++ b/lib/src/phy/ue/ue_dl.c @@ -650,10 +650,9 @@ int srslte_ue_dl_find_dl_dci(srslte_ue_dl_t* q, uint16_t rnti, srslte_dci_dl_t dci_dl[SRSLTE_MAX_DCI_MSG]) { - set_mi_value(q, sf, dl_cfg); - srslte_dci_msg_t dci_msg[SRSLTE_MAX_DCI_MSG]; + srslte_dci_msg_t dci_msg[SRSLTE_MAX_DCI_MSG] = {}; int nof_msg = 0; if (rnti == SRSLTE_SIRNTI || rnti == SRSLTE_PRNTI || SRSLTE_RNTI_ISRAR(rnti)) { @@ -1401,7 +1400,7 @@ int srslte_ue_dl_find_and_decode(srslte_ue_dl_t* q, { int ret = SRSLTE_ERROR; - srslte_dci_dl_t dci_dl; + srslte_dci_dl_t dci_dl[SRSLTE_MAX_DCI_MSG] = {}; srslte_pmch_cfg_t pmch_cfg; srslte_pdsch_res_t pdsch_res[SRSLTE_MAX_CODEWORDS]; @@ -1416,7 +1415,6 @@ int srslte_ue_dl_find_and_decode(srslte_ue_dl_t* q, } // Blind search PHICH mi value - ZERO_OBJECT(dci_dl); ret = 0; for (uint32_t i = 0; i < mi_set_len && !ret; i++) { @@ -1430,29 +1428,29 @@ int srslte_ue_dl_find_and_decode(srslte_ue_dl_t* q, return ret; } - ret = srslte_ue_dl_find_dl_dci(q, sf, cfg, pdsch_cfg->rnti, &dci_dl); + ret = srslte_ue_dl_find_dl_dci(q, sf, cfg, pdsch_cfg->rnti, dci_dl); } if (ret == 1) { // Logging if (SRSLTE_DEBUG_ENABLED && srslte_verbose >= SRSLTE_VERBOSE_INFO) { char str[512]; - srslte_dci_dl_info(&dci_dl, str, 512); + srslte_dci_dl_info(&dci_dl[0], str, 512); INFO("PDCCH: %s, snr=%.1f dB\n", str, q->chest_res.snr_db); } // Force known MBSFN grant if (sf->sf_type == SRSLTE_SF_MBSFN) { - dci_dl.rnti = SRSLTE_MRNTI; - dci_dl.alloc_type = SRSLTE_RA_ALLOC_TYPE0; - dci_dl.type0_alloc.rbg_bitmask = 0xffffffff; - dci_dl.tb[0].rv = 0; - dci_dl.tb[0].mcs_idx = 2; - dci_dl.format = SRSLTE_DCI_FORMAT1; + dci_dl[0].rnti = SRSLTE_MRNTI; + dci_dl[0].alloc_type = SRSLTE_RA_ALLOC_TYPE0; + dci_dl[0].type0_alloc.rbg_bitmask = 0xffffffff; + dci_dl[0].tb[0].rv = 0; + dci_dl[0].tb[0].mcs_idx = 2; + dci_dl[0].format = SRSLTE_DCI_FORMAT1; } // Convert DCI message to DL grant - if (srslte_ue_dl_dci_to_pdsch_grant(q, sf, cfg, &dci_dl, &pdsch_cfg->grant)) { + if (srslte_ue_dl_dci_to_pdsch_grant(q, sf, cfg, &dci_dl[0], &pdsch_cfg->grant)) { ERROR("Error unpacking DCI\n"); return SRSLTE_ERROR; } @@ -1498,6 +1496,8 @@ int srslte_ue_dl_find_and_decode(srslte_ue_dl_t* q, acks[tb] = pdsch_res[tb].crc; } } + } else { + ERROR("Decoded %d DCIs\n", ret); } return ret; }