diff --git a/executables/nr-ue.c b/executables/nr-ue.c index 2536e90060..27f9654aa4 100644 --- a/executables/nr-ue.c +++ b/executables/nr-ue.c @@ -160,7 +160,6 @@ void init_nr_ue_vars(PHY_VARS_NR_UE *ue, uint8_t UE_id) ue->ntn_config_message = CALLOC(1, sizeof(*ue->ntn_config_message)); ue->ntn_config_message->update = false; - config_position_coordinates(UE_id); // initialize all signal buffers init_nr_ue_signal(ue, nb_connected_gNB); diff --git a/executables/position_interface.c b/executables/position_interface.c index 4aecf16604..73ce2f4cd7 100644 --- a/executables/position_interface.c +++ b/executables/position_interface.c @@ -22,32 +22,22 @@ #include "position_interface.h" extern uint16_t NB_UE_INST; -static position_t **positionArray = 0; -void config_position_coordinates(int Mod_id) +static position_t read_position_coordinates(char *sectionName) { - AssertFatal(Mod_id < NB_UE_INST, "Mod_id must be less than NB_UE_INST. Mod_id:%d NB_UE_INST:%d", Mod_id, NB_UE_INST); - if (positionArray == NULL) { - positionArray = (position_t **)calloc(1, sizeof(position_t *) * NB_UE_INST); - } - if (!positionArray[Mod_id]) { - char positionName[64]; - sprintf(positionName, "position%d", Mod_id); - positionArray[Mod_id] = (void *) init_position_coordinates(positionName); - } -} - -position_t *init_position_coordinates(char *sectionName) -{ - position_t *position = (position_t *)calloc(sizeof(position_t), 1); + position_t p; + position_t *position = &p; paramdef_t position_params[] = POSITION_CONFIG_PARAMS_DEF; int ret = config_get(config_get_if(), position_params, sizeofArray(position_params), sectionName); AssertFatal(ret >= 0, "configuration couldn't be performed for position name: %s", sectionName); - return position; + return p; } -position_t *get_position_coordinates(int Mod_id) +position_t get_position_coordinates(int Mod_id) { - return positionArray[Mod_id]; -} \ No newline at end of file + AssertFatal(Mod_id < NB_UE_INST, "Mod_id must be less than NB_UE_INST. Mod_id:%d NB_UE_INST:%d", Mod_id, NB_UE_INST); + char positionName[64]; + snprintf(positionName, sizeof(positionName), "position%d", Mod_id); + return read_position_coordinates(positionName); +} diff --git a/executables/position_interface.h b/executables/position_interface.h index 8d8ad70d91..058d94173a 100644 --- a/executables/position_interface.h +++ b/executables/position_interface.h @@ -53,7 +53,5 @@ typedef struct position { double positionZ; } position_t; -void config_position_coordinates(int Mod_id); -position_t *init_position_coordinates(char *sectionName); -position_t *get_position_coordinates(int Mod_id); +position_t get_position_coordinates(int Mod_id); #endif diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 44534a5cb0..8c12e47739 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -242,8 +242,8 @@ static void nr_decode_SI(NR_UE_RRC_SI_INFO *SI_info, NR_SystemInformation_t *si, SI_info->SInfo_r17.sib19_validity = true; if (g_log->log_component[NR_RRC].level >= OAILOG_DEBUG) xer_fprint(stdout, &asn_DEF_NR_SIB19_r17, (const void *)typeandinfo->choice.sib19_v1700); - position_t *p = get_position_coordinates(0); - nr_rrc_mac_config_req_sib19_r17(ue_id, p, typeandinfo->choice.sib19_v1700); + position_t p = get_position_coordinates(0); + nr_rrc_mac_config_req_sib19_r17(ue_id, &p, typeandinfo->choice.sib19_v1700); nr_timer_start(&SI_info->SInfo_r17.sib19_timer); break; default: