diff --git a/executables/nr-ue.c b/executables/nr-ue.c index 266778ebca..6c6e6cb957 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -447,10 +447,7 @@ static void RU_write(nr_rxtx_thread_data_t *rxtxD, bool sl_tx_action) radio_tx_burst_flag_t flags = TX_BURST_INVALID; - NR_UE_MAC_INST_t *mac = get_mac_inst(UE->Mod_id); - if (mac->phy_config_request_sent && - openair0_cfg[0].duplex_mode == duplex_mode_TDD && - !get_softmodem_params()->continuous_tx) { + if (UE->received_config_request && openair0_cfg[0].duplex_mode == duplex_mode_TDD && !get_softmodem_params()->continuous_tx) { // In case of Sidelink, USRP write needed only in case transmission // needs to be done in this slot and not based on tdd ULDL configuration. if (UE->sl_mode == 2) { @@ -927,7 +924,7 @@ void *UE_thread(void *arg) curMsg.proc.nr_slot_tx = (absolute_slot + DURATION_RX_TO_TX) % nb_slot_frame; curMsg.proc.frame_rx = (absolute_slot / nb_slot_frame) % MAX_FRAME_NUMBER; curMsg.proc.frame_tx = ((absolute_slot + DURATION_RX_TO_TX) / nb_slot_frame) % MAX_FRAME_NUMBER; - if (mac->phy_config_request_sent) { + if (UE->received_config_request) { if (UE->sl_mode) { curMsg.proc.rx_slot_type = sl_nr_ue_slot_select(sl_cfg, curMsg.proc.nr_slot_rx, TDD); curMsg.proc.tx_slot_type = sl_nr_ue_slot_select(sl_cfg, curMsg.proc.nr_slot_tx, TDD); diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c index 105ffdbbaa..69a15d98be 100644 --- a/executables/nr-uesoftmodem.c +++ b/executables/nr-uesoftmodem.c @@ -517,7 +517,6 @@ int main(int argc, char **argv) } else { DevAssert(mac->if_module != NULL && mac->if_module->phy_config_request != NULL); mac->if_module->phy_config_request(&mac->phy_config); - mac->phy_config_request_sent = true; fapi_nr_config_request_t *nrUE_config = &UE[CC_id]->nrUE_config; nr_init_frame_parms_ue(&UE[CC_id]->frame_parms, nrUE_config, mac->nr_band); @@ -533,7 +532,6 @@ int main(int argc, char **argv) phycfg->sl_config_req.sl_carrier_config.sl_num_rx_ant = get_nrUE_params()->nb_antennas_rx; phycfg->sl_config_req.sl_carrier_config.sl_num_tx_ant = get_nrUE_params()->nb_antennas_tx; mac->if_module->sl_phy_config_request(phycfg); - mac->phy_config_request_sent = true; sl_nr_ue_phy_params_t *sl_phy = &UE[CC_id]->SL_UE_PHY_PARAMS; nr_init_frame_parms_ue_sl(&sl_phy->sl_frame_params, &sl_phy->sl_config, diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index 3368b6bcfe..d9be21ca17 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -277,11 +277,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB) } ue->init_averaging = 1; - - // enable MIB/SIB decoding by default - ue->decode_MIB = 1; - ue->decode_SIB = 1; - + ue->received_config_request = false; init_nr_prach_tables(839); init_symbol_rotation(fp); init_timeshift_rotation(fp); diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h index 93a4ee8b94..09f9f2e37d 100644 --- a/openair1/PHY/defs_nr_UE.h +++ b/openair1/PHY/defs_nr_UE.h @@ -383,7 +383,7 @@ typedef struct PHY_VARS_NR_UE_s { NR_UE_COMMON common_vars; nr_ue_if_module_t *if_inst; - + bool received_config_request; fapi_nr_config_request_t nrUE_config; nr_synch_request_t synch_request; @@ -449,11 +449,9 @@ typedef struct PHY_VARS_NR_UE_s { int dlsch_mtch_errors[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX]; int dlsch_mcch_trials[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX]; int dlsch_mtch_trials[MAX_MBSFN_AREA][NUMBER_OF_CONNECTED_gNB_MAX]; - uint8_t decode_SIB; - uint8_t decode_MIB; - uint8_t init_sync_frame; + uint8_t init_sync_frame; /// temporary offset during cell search prior to MIB decoding - int ssb_offset; + int ssb_offset; uint16_t symbol_offset; /// offset in terms of symbols for detected ssb in sync int64_t max_pos_avg; /// Timing offset IIR filter diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c index b408b9fed3..a566fe2369 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c @@ -549,13 +549,14 @@ int8_t nr_ue_scheduled_response(nr_scheduled_response_t *scheduled_response) return 0; } -int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config) +void nr_ue_phy_config_request(nr_phy_config_t *phy_config) { - fapi_nr_config_request_t *nrUE_config = &PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->nrUE_config; + PHY_VARS_NR_UE *phy = PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]; + fapi_nr_config_request_t *nrUE_config = &phy->nrUE_config; if(phy_config != NULL) { + phy->received_config_request = true; memcpy(nrUE_config, &phy_config->config_req, sizeof(fapi_nr_config_request_t)); } - return 0; } void nr_ue_synch_request(nr_synch_request_t *synch_request) @@ -567,8 +568,10 @@ void nr_ue_synch_request(nr_synch_request_t *synch_request) void nr_ue_sl_phy_config_request(nr_sl_phy_config_t *phy_config) { - sl_nr_phy_config_request_t *sl_config = &PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->SL_UE_PHY_PARAMS.sl_config; + PHY_VARS_NR_UE *phy = PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]; + sl_nr_phy_config_request_t *sl_config = &phy->SL_UE_PHY_PARAMS.sl_config; if (phy_config != NULL) { + phy->received_config_request = true; memcpy(sl_config, &phy_config->sl_config_req, sizeof(sl_nr_phy_config_request_t)); } } diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h index c574b5b3e2..b17e4f9b21 100644 --- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h +++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.h @@ -46,7 +46,7 @@ int8_t nr_ue_scheduled_response_stub(nr_scheduled_response_t *scheduled_response /**\brief NR UE FAPI-like P5 message, physical configuration from L2 to configure L1 \param scheduled_response including transmission config(dl_config, ul_config) and data transmission (tx_req)*/ -int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config); +void nr_ue_phy_config_request(nr_phy_config_t *phy_config); void nr_ue_sl_phy_config_request(nr_sl_phy_config_t *phy_config); /**\brief NR UE FAPI message to schedule a synchronization with target gNB diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index e28f7dce93..c3e57d059b 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -1608,7 +1608,6 @@ void nr_rrc_mac_config_req_sib1(module_id_t module_id, if (!get_softmodem_params()->emulate_l1) mac->if_module->phy_config_request(&mac->phy_config); - mac->phy_config_request_sent = true; } void nr_rrc_mac_config_req_sib19_r17(module_id_t module_id, @@ -1664,7 +1663,6 @@ static void handle_reconfiguration_with_sync(NR_UE_MAC_INST_t *mac, mac->synch_request.synch_req.target_Nid_cell = mac->physCellId; mac->if_module->synch_request(&mac->synch_request); mac->if_module->phy_config_request(&mac->phy_config); - mac->phy_config_request_sent = true; } } diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h index 781192fbc2..011d64803d 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h @@ -527,8 +527,6 @@ typedef struct NR_UE_MAC_INST_s { NR_UL_TIME_ALIGNMENT_t ul_time_alignment; NR_TDD_UL_DL_ConfigCommon_t *tdd_UL_DL_ConfigurationCommon; - - bool phy_config_request_sent; frame_type_t frame_type; /* Random Access */ diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c index b6a289cc45..bb24e27c05 100644 --- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c +++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c @@ -59,7 +59,6 @@ void nr_ue_init_mac(NR_UE_MAC_INST_t *mac) nr_ue_reset_sync_state(mac); mac->get_sib1 = false; mac->get_otherSI = false; - mac->phy_config_request_sent = false; memset(&mac->phy_config, 0, sizeof(mac->phy_config)); mac->si_window_start = -1; mac->servCellIndex = 0; diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 4044cfd9dc..d439b9b084 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -346,7 +346,7 @@ static bool is_my_dci(NR_UE_MAC_INST_t *mac, nfapi_nr_dl_dci_pdu_t *received_pdu if (get_softmodem_params()->sa) { if (mac->state == UE_NOT_SYNC) return false; - if (received_pdu->RNTI == 0xFFFF && mac->phy_config_request_sent) + if (received_pdu->RNTI == 0xFFFF) return false; if (received_pdu->RNTI != mac->crnti && mac->ra.ra_state == nrRA_SUCCEEDED) return false; @@ -1149,7 +1149,7 @@ int nr_ue_ul_indication(nr_uplink_indication_t *ul_info) LOG_T(NR_MAC, "Not calling scheduler mac->ra.ra_state = %d\n", mac->ra.ra_state); - if (mac->phy_config_request_sent && is_nr_UL_slot(mac->tdd_UL_DL_ConfigurationCommon, ul_info->slot, mac->frame_type)) + if (is_nr_UL_slot(mac->tdd_UL_DL_ConfigurationCommon, ul_info->slot, mac->frame_type)) nr_ue_ul_scheduler(mac, ul_info); pthread_mutex_unlock(&mac_IF_mutex); diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h index 26502cacf1..18aa4947e3 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.h @@ -216,18 +216,12 @@ typedef void (nr_sl_ue_scheduled_response_f)(nr_scheduled_response_t *sl_schedul /* * Generic type of an application-defined callback to return various * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. */ -typedef int8_t (nr_ue_phy_config_request_f)(nr_phy_config_t *phy_config); +typedef void (nr_ue_phy_config_request_f)(nr_phy_config_t *phy_config); /* * Generic type of an application-defined callback to return various * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. */ typedef void(nr_ue_sl_phy_config_request_f)(nr_sl_phy_config_t *sl_phy_config);