diff --git a/executables/nr-ue.c b/executables/nr-ue.c index 389aff7c8d..f5c606b828 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -226,8 +226,8 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg) LOG_E(NR_MAC, "mac->ul_config is null! \n"); continue; } - ul_config->number_pdus = 0; + mac->ul_config_request[2].number_pdus = 0; fapi_nr_ul_config_prach_pdu *prach_pdu = &ul_config->ul_config_list[ul_config->number_pdus].prach_config_pdu; uint8_t nr_prach = nr_ue_get_rach(&prach_resources, prach_pdu, mod_id, CC_id, ul_info.frame_tx, gNB_id, ul_info.slot_tx); @@ -240,18 +240,7 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg) else if (nr_prach == 2) { LOG_I(NR_PHY, "In %s: [UE %d] RA completed, setting UE mode to PUSCH\n", __FUNCTION__, mod_id); - return NULL; - #if 0 - See if we can receive DCI format 0-1; then program ulsch - if (ul_config....msg3 flag == 1 && frame = ulcconfig.frame && slot == ul_config.slot) - { - fill_rx_ind of the gNb(&ul_config or &txdata_req); - nr_Msg3_transmitted(0, 0, frame, gNB_id); - - } - // Melissa call this in the right slot and fill rx_ind for gNB: Msg3_transmitted(0, 0, frame, 0); //UE->UE_mode[0] = PUSCH; - #endif } else if(nr_prach == 3) { diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c index 1ffb6ef8b4..2843c26fad 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c @@ -50,7 +50,63 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response because it requires PHY_vars_UE_g. We are basically not using layer one here so we are calling a stub version of this scheduled response. The original scheduled_response sends downlink information for the DCIs. - The physical layer provides this information. We dont need this yet.*/ + The physical layer provides this information. We dont need this yet. + if we have a tx req we need to fill it and may need to go into the ul_config + to get other information. Need rnti., Fill rx_ind that goes up on socket */ + if(scheduled_response != NULL){ + + module_id_t module_id = scheduled_response->module_id; + uint8_t cc_id = scheduled_response->CC_id; + int slot = scheduled_response->slot; + int thread_id = scheduled_response->thread_id; + + if (scheduled_response->ul_config != NULL){ + + fapi_nr_ul_config_request_t *ul_config = scheduled_response->ul_config; + for (int i = 0; i < ul_config->number_pdus; ++i) + { + LOG_I(PHY, "Melissa In %s: processing %s PDU of %d total UL PDUs (ul_config %p) \n", + __FUNCTION__, ul_pdu_type[ul_config->ul_config_list[i].pdu_type - 1], ul_config->number_pdus, ul_config); + + uint8_t pdu_type = ul_config->ul_config_list[i].pdu_type; + uint8_t pucch_resource_id = 0; + uint8_t current_harq_pid = 0; + uint8_t format = 0; + uint8_t gNB_id = 0; + nfapi_nr_rx_data_indication_t rx_ind; + + switch (pdu_type) + { + case (FAPI_NR_UL_CONFIG_TYPE_PUSCH): + { + + nfapi_nr_ue_pusch_pdu_t *pusch_config_pdu = &ul_config->ul_config_list[i].pusch_config_pdu; + if (scheduled_response->tx_request) { + rx_ind.header.message_id = NFAPI_NR_PHY_MSG_TYPE_RX_DATA_INDICATION; + rx_ind.slot = scheduled_response->tx_request->slot; + rx_ind.sfn = scheduled_response->tx_request->sfn; + rx_ind.number_of_pdus = scheduled_response->tx_request->number_of_pdus; + + fapi_nr_tx_request_body_t *tx_req_body = &scheduled_response->tx_request->tx_request_body[i]; + rx_ind.pdu_list = CALLOC(1, sizeof(*rx_ind.pdu_list)); + rx_ind.pdu_list[i].pdu = tx_req_body->pdu; + rx_ind.pdu_list[i].pdu_length = tx_req_body->pdu_length; + rx_ind.pdu_list[i].rnti = pusch_config_pdu->rnti; + rx_ind.pdu_list[i].handle = pusch_config_pdu->handle; + scheduled_response->tx_request->number_of_pdus = 0; + LOG_I(PHY, "Melissa In %s: Filled rx_ind with tx_req \n", __FUNCTION__); + } + + break; + } + + default: + LOG_I(NR_MAC, "Unknown ul_config->pdu_type %d\n", pdu_type); + break; + } + } + } + } return 0; } diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 5c60498661..c0f12bb032 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -941,11 +941,9 @@ NR_UE_L2_STATE_t nr_ue_scheduler(nr_downlink_indication_t *dl_info, nr_uplink_in tx_req.tx_request_body[0].pdu_index = j; tx_req.tx_request_body[0].pdu = ulsch_input_buffer; - if (ra->ra_state == RA_SUCCEEDED && ra->cfra){ + if (ra->ra_state != RA_SUCCEEDED && !ra->cfra){ //Melissa change this accordingly nr_Msg3_transmitted(ul_info->module_id, ul_info->cc_id, ul_info->frame_tx, ul_info->gNB_index); } - //Melissa, should I send tx_req to gNB here?? - } }