diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c index 38ddf758dd..896bf77478 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c @@ -257,7 +257,6 @@ int configure_fapi_dl_Tx(int Mod_idP, nfapi_nr_dl_config_request_pdu_t *dl_config_pdcch_pdu; nfapi_nr_dl_config_request_pdu_t *dl_config_pdsch_pdu; int TBS; - int bwp_id=1; @@ -341,34 +340,34 @@ int configure_fapi_dl_Tx(int Mod_idP, pdsch_pdu_rel15->dlDmrsSymbPos = fill_dmrs_mask(NULL, scc->dmrs_TypeA_Position, pdsch_pdu_rel15->NrOfSymbols); - dci_pdu_rel15_t dci_pdu_rel15; + dci_pdu_rel15_t dci_pdu_rel15[MAX_DCI_CORESET]; - dci_pdu_rel15.frequency_domain_assignment = PRBalloc_to_locationandbandwidth0(pdsch_pdu_rel15->rbStart, + dci_pdu_rel15[0].frequency_domain_assignment = PRBalloc_to_locationandbandwidth0(pdsch_pdu_rel15->rbStart, pdsch_pdu_rel15->rbSize, NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275)); - dci_pdu_rel15.time_domain_assignment = time_domain_assignment; // row index used here instead of SLIV; - dci_pdu_rel15.vrb_to_prb_mapping = 1; - dci_pdu_rel15.mcs = pdsch_pdu_rel15->mcsIndex[0]; - dci_pdu_rel15.tb_scaling = 1; + dci_pdu_rel15[0].time_domain_assignment = time_domain_assignment; // row index used here instead of SLIV; + dci_pdu_rel15[0].vrb_to_prb_mapping = 1; + dci_pdu_rel15[0].mcs = pdsch_pdu_rel15->mcsIndex[0]; + dci_pdu_rel15[0].tb_scaling = 1; - dci_pdu_rel15.ra_preamble_index = 25; - dci_pdu_rel15.format_indicator = 1; - dci_pdu_rel15.ndi = 1; - dci_pdu_rel15.rv = 0; - dci_pdu_rel15.harq_pid = 0; - dci_pdu_rel15.dai = 2; - dci_pdu_rel15.tpc = 2; - dci_pdu_rel15.pucch_resource_indicator = 7; - dci_pdu_rel15.pdsch_to_harq_feedback_timing_indicator = 7; + dci_pdu_rel15[0].ra_preamble_index = 25; + dci_pdu_rel15[0].format_indicator = 1; + dci_pdu_rel15[0].ndi = 1; + dci_pdu_rel15[0].rv = 0; + dci_pdu_rel15[0].harq_pid = 0; + dci_pdu_rel15[0].dai = 2; + dci_pdu_rel15[0].tpc = 2; + dci_pdu_rel15[0].pucch_resource_indicator = 7; + dci_pdu_rel15[0].pdsch_to_harq_feedback_timing_indicator = 7; LOG_I(MAC, "[gNB scheduler phytest] DCI type 1 payload: freq_alloc %d, time_alloc %d, vrb to prb %d, mcs %d tb_scaling %d ndi %d rv %d\n", - dci_pdu_rel15.frequency_domain_assignment, - dci_pdu_rel15.time_domain_assignment, - dci_pdu_rel15.vrb_to_prb_mapping, - dci_pdu_rel15.mcs, - dci_pdu_rel15.tb_scaling, - dci_pdu_rel15.ndi, - dci_pdu_rel15.rv); + dci_pdu_rel15[0].frequency_domain_assignment, + dci_pdu_rel15[0].time_domain_assignment, + dci_pdu_rel15[0].vrb_to_prb_mapping, + dci_pdu_rel15[0].mcs, + dci_pdu_rel15[0].tb_scaling, + dci_pdu_rel15[0].ndi, + dci_pdu_rel15[0].rv); nr_configure_pdcch(pdcch_pdu_rel15, 1, // ue-specific @@ -387,11 +386,12 @@ int configure_fapi_dl_Tx(int Mod_idP, dci_formats[0] = NR_DL_DCI_FORMAT_1_0; rnti_types[0] = NR_RNTI_C; + config_uldci(pdcch_pdu_rel15, &dci_pdu_rel15[pdcch_pdu_rel15->numDlDci], dci_formats, rnti_types); for (int i=0;inumDlDci;i++) pdcch_pdu_rel15->PayloadSizeBits[i]=nr_dci_size(dci_formats[i],rnti_types[i],pdsch_pdu_rel15->BWPSize); - fill_dci_pdu_rel15(pdcch_pdu_rel15,&dci_pdu_rel15,dci_formats,rnti_types); + fill_dci_pdu_rel15(pdcch_pdu_rel15,&dci_pdu_rel15[i],dci_formats,rnti_types); LOG_I(MAC, "DCI params: rnti %d, rnti_type %d, dci_format %d\n \ coreset params: FreqDomainResource %llx, start_symbol %d n_symb %d\n", @@ -429,6 +429,38 @@ int configure_fapi_dl_Tx(int Mod_idP, return TBS/8; //Return TBS in bytes } +void config_uldci(nfapi_nr_dl_config_pdcch_pdu_rel15_t *pdcch_pdu_rel15, dci_pdu_rel15_t *dci_pdu_rel15, int *dci_formats, int *rnti_types) { + + dci_pdu_rel15.frequency_domain_assignment = PRBalloc_to_locationandbandwidth0(0, + 50, + NRRIV2BW(bwp->bwp_Common->genericParameters.locationAndBandwidth,275)); // to be changed with UL bwp + dci_pdu_rel15.time_domain_assignment = 2; // row index used here instead of SLIV; + dci_pdu_rel15.frequency_hopping_flag = 1; + dci_pdu_rel15.mcs = 9; + + dci_pdu_rel15.format_indicator = 0; + dci_pdu_rel15.ndi = 1; + dci_pdu_rel15.rv = 0; + dci_pdu_rel15.harq_pid = 0; + dci_pdu_rel15.tpc = 2; + + LOG_I(MAC, "[gNB scheduler phytest] DCI type 0 payload: freq_alloc %d, time_alloc %d, freq_hop_flag %d, mcs %d tpc %d ndi %d rv %d\n", + dci_pdu_rel15.frequency_domain_assignment, + dci_pdu_rel15.time_domain_assignment, + dci_pdu_rel15.frequency_hopping_flag, + dci_pdu_rel15.mcs, + dci_pdu_rel15.tpc, + dci_pdu_rel15.ndi, + dci_pdu_rel15.rv); + + dci_formats[pdcch_pdu_rel15->numDlDci] = NR_UL_DCI_FORMAT_0_0; + rnti_types[pdcch_pdu_rel15->numDlDci] = NR_RNTI_C; + pdcch_pdu_rel15->numDlDci++; + +} + + + void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, frame_t frameP, sub_frame_t slotP, diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h index 907de53487..06e44309fb 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_gNB/mac_proto.h @@ -70,6 +70,10 @@ int configure_fapi_dl_Tx(int Mod_id, nfapi_tx_request_pdu_t *TX_req, int16_t pdu_index); +void config_uldci(nfapi_nr_dl_config_pdcch_pdu_rel15_t *pdcch_pdu_rel15, + dci_pdu_rel15_t *dci_pdu_rel15, + int *dci_formats, + int *rnti_types); void nr_schedule_uss_dlsch_phytest(module_id_t module_idP, frame_t frameP,