Commit 4d8bb4ef authored by francescomani's avatar francescomani

unify handling of reconfiguration with sync

parent 5661b20e
...@@ -437,8 +437,6 @@ int main( int argc, char **argv ) { ...@@ -437,8 +437,6 @@ int main( int argc, char **argv ) {
if (set_exe_prio) if (set_exe_prio)
set_priority(79); set_priority(79);
//uint8_t beta_ACK=0,beta_RI=0,beta_CQI=2;
PHY_VARS_NR_UE *UE[MAX_NUM_CCs];
start_background_system(); start_background_system();
if ((uniqCfg = load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY)) == NULL) { if ((uniqCfg = load_configmodule(argc, argv, CONFIG_ENABLECMDLINEONLY)) == NULL) {
...@@ -478,6 +476,13 @@ int main( int argc, char **argv ) { ...@@ -478,6 +476,13 @@ int main( int argc, char **argv ) {
#endif #endif
LOG_I(HW, "Version: %s\n", PACKAGE_VERSION); LOG_I(HW, "Version: %s\n", PACKAGE_VERSION);
PHY_vars_UE_g = malloc(sizeof(PHY_VARS_NR_UE **));
PHY_vars_UE_g[0] = malloc(sizeof(PHY_VARS_NR_UE *) * MAX_NUM_CCs);
for (int CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
PHY_vars_UE_g[0][CC_id] = (PHY_VARS_NR_UE *)malloc(sizeof(PHY_VARS_NR_UE));
memset(PHY_vars_UE_g[0][CC_id], 0, sizeof(PHY_VARS_NR_UE));
}
init_NR_UE(1, uecap_file, reconfig_file, rbconfig_file); init_NR_UE(1, uecap_file, reconfig_file, rbconfig_file);
int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 1; int mode_offset = get_softmodem_params()->nsa ? NUMBER_OF_UE_MAX : 1;
...@@ -493,8 +498,6 @@ int main( int argc, char **argv ) { ...@@ -493,8 +498,6 @@ int main( int argc, char **argv ) {
} }
} }
PHY_vars_UE_g = malloc(sizeof(PHY_VARS_NR_UE **));
PHY_vars_UE_g[0] = malloc(sizeof(PHY_VARS_NR_UE *)*MAX_NUM_CCs);
if (get_softmodem_params()->emulate_l1) { if (get_softmodem_params()->emulate_l1) {
RCconfig_nr_ue_macrlc(); RCconfig_nr_ue_macrlc();
get_channel_model_mode(uniqCfg); get_channel_model_mode(uniqCfg);
...@@ -510,10 +513,9 @@ int main( int argc, char **argv ) { ...@@ -510,10 +513,9 @@ int main( int argc, char **argv ) {
start_oai_nrue_threads(); start_oai_nrue_threads();
if (!get_softmodem_params()->emulate_l1) { if (!get_softmodem_params()->emulate_l1) {
for (int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) { PHY_VARS_NR_UE *UE[MAX_NUM_CCs];
PHY_vars_UE_g[0][CC_id] = (PHY_VARS_NR_UE *)malloc(sizeof(PHY_VARS_NR_UE)); for (int CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
UE[CC_id] = PHY_vars_UE_g[0][CC_id]; UE[CC_id] = PHY_vars_UE_g[0][CC_id];
memset(UE[CC_id],0,sizeof(PHY_VARS_NR_UE));
set_options(CC_id, UE[CC_id]); set_options(CC_id, UE[CC_id]);
NR_UE_MAC_INST_t *mac = get_mac_inst(0); NR_UE_MAC_INST_t *mac = get_mac_inst(0);
......
...@@ -638,7 +638,7 @@ int8_t nr_ue_phy_config_request(nr_phy_config_t *phy_config) ...@@ -638,7 +638,7 @@ int8_t 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; fapi_nr_config_request_t *nrUE_config = &PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->nrUE_config;
if(phy_config != NULL) { if(phy_config != NULL) {
memcpy(nrUE_config,&phy_config->config_req,sizeof(fapi_nr_config_request_t)); memcpy(nrUE_config, &phy_config->config_req, sizeof(fapi_nr_config_request_t));
pushNotifiedFIFO(&PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->phy_config_ind, newNotifiedFIFO_elt(1,0,NULL,NULL)); pushNotifiedFIFO(&PHY_vars_UE_g[phy_config->Mod_id][phy_config->CC_id]->phy_config_ind, newNotifiedFIFO_elt(1,0,NULL,NULL));
} }
return 0; return 0;
......
...@@ -835,7 +835,6 @@ int main(int argc, char **argv) ...@@ -835,7 +835,6 @@ int main(int argc, char **argv)
UE->chest_time = chest_type[1]; UE->chest_time = chest_type[1];
UE_mac->if_module = nr_ue_if_module_init(0); UE_mac->if_module = nr_ue_if_module_init(0);
UE_mac->state = UE_CONNECTED;
unsigned int available_bits=0; unsigned int available_bits=0;
unsigned char *estimated_output_bit; unsigned char *estimated_output_bit;
...@@ -855,6 +854,9 @@ int main(int argc, char **argv) ...@@ -855,6 +854,9 @@ int main(int argc, char **argv)
nr_rrc_mac_config_req_mib(0, 0, mib->message.choice.mib, false); nr_rrc_mac_config_req_mib(0, 0, mib->message.choice.mib, false);
nr_rrc_mac_config_req_scg(0, 0, secondaryCellGroup); nr_rrc_mac_config_req_scg(0, 0, secondaryCellGroup);
UE_mac->state = UE_CONNECTED;
UE_mac->ra.ra_state = RA_SUCCEEDED;
nr_dcireq_t dcireq; nr_dcireq_t dcireq;
nr_scheduled_response_t scheduled_response; nr_scheduled_response_t scheduled_response;
nr_phy_data_t phy_data = {0}; nr_phy_data_t phy_data = {0};
......
...@@ -753,6 +753,19 @@ void handle_reconfiguration_with_sync(NR_UE_MAC_INST_t *mac, ...@@ -753,6 +753,19 @@ void handle_reconfiguration_with_sync(NR_UE_MAC_INST_t *mac,
mac->crnti = reconfigurationWithSync->newUE_Identity; mac->crnti = reconfigurationWithSync->newUE_Identity;
LOG_I(NR_MAC, "Configuring CRNTI %x\n", mac->crnti); LOG_I(NR_MAC, "Configuring CRNTI %x\n", mac->crnti);
config_common_ue(mac, scc, module_id, cc_idP); config_common_ue(mac, scc, module_id, cc_idP);
mac->state = UE_NOT_SYNC;
ra->ra_state = RA_UE_IDLE;
nr_ue_mac_default_configs(mac);
if (!get_softmodem_params()->emulate_l1) {
mac->synch_request.Mod_id = module_id;
mac->synch_request.CC_id = cc_idP;
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;
}
} }
void nr_rrc_mac_config_req_mcg(module_id_t module_id, void nr_rrc_mac_config_req_mcg(module_id_t module_id,
...@@ -778,23 +791,7 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id, ...@@ -778,23 +791,7 @@ void nr_rrc_mac_config_req_mcg(module_id_t module_id,
if (cell_group_config->spCellConfig && cell_group_config->spCellConfig->reconfigurationWithSync) { if (cell_group_config->spCellConfig && cell_group_config->spCellConfig->reconfigurationWithSync) {
LOG_A(NR_MAC, "Received the reconfigurationWithSync in %s\n", __FUNCTION__); LOG_A(NR_MAC, "Received the reconfigurationWithSync in %s\n", __FUNCTION__);
handle_reconfiguration_with_sync(mac, module_id, cc_idP, cell_group_config->spCellConfig->reconfigurationWithSync); handle_reconfiguration_with_sync(mac, module_id, cc_idP, cell_group_config->spCellConfig->reconfigurationWithSync);
mac->state = UE_NOT_SYNC;
mac->ra.ra_state = RA_UE_IDLE;
nr_ue_mac_default_configs(mac);
if (!get_softmodem_params()->emulate_l1) {
mac->synch_request.Mod_id = module_id;
mac->synch_request.CC_id = cc_idP;
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;
}
// Setup the SSB to Rach Occasions mapping according to the config
build_ssb_to_ro_map(mac);
} }
configure_current_BWP(mac, NULL, cell_group_config); configure_current_BWP(mac, NULL, cell_group_config);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment