Use F1 gNB-DU Configuration Update lib in stack
This commit is contained in:
@@ -51,51 +51,8 @@ static void gnb_du_configuration_update_direct(const f1ap_gnb_du_configuration_u
|
||||
{
|
||||
MessageDef *msg = itti_alloc_new_message(TASK_MAC_GNB, 0, F1AP_GNB_DU_CONFIGURATION_UPDATE);
|
||||
msg->ittiMsgHeader.originInstance = -1; // means monolithic
|
||||
f1ap_gnb_du_configuration_update_t *f1ap_msg = &F1AP_GNB_DU_CONFIGURATION_UPDATE(msg);
|
||||
DevAssert(upd->gNB_DU_ID == NULL);
|
||||
f1ap_msg->transaction_id = upd->transaction_id;
|
||||
DevAssert(upd->num_cells_to_add == 0);
|
||||
DevAssert(upd->num_cells_to_delete == 0);
|
||||
|
||||
f1ap_msg->num_cells_to_modify = upd->num_cells_to_modify;
|
||||
for (int n = 0; n < upd->num_cells_to_modify; ++n) {
|
||||
f1ap_msg->cell_to_modify[n].old_nr_cellid = upd->cell_to_modify[n].old_nr_cellid;
|
||||
f1ap_msg->cell_to_modify[n].info = upd->cell_to_modify[n].info; // copy most fields
|
||||
if (upd->cell_to_modify[n].info.tac) {
|
||||
f1ap_msg->cell_to_modify[n].info.tac = malloc(sizeof(*f1ap_msg->cell_to_modify[n].info.tac));
|
||||
AssertFatal(f1ap_msg->cell_to_modify[n].info.tac != NULL, "out of memory\n");
|
||||
*f1ap_msg->cell_to_modify[n].info.tac = *upd->cell_to_modify[n].info.tac;
|
||||
}
|
||||
if (upd->cell_to_modify[n].info.measurement_timing_config_len > 0) {
|
||||
f1ap_msg->cell_to_modify[n].info.measurement_timing_config =
|
||||
calloc(upd->cell_to_modify[n].info.measurement_timing_config_len, sizeof(uint8_t));
|
||||
AssertFatal(f1ap_msg->cell_to_modify[n].info.measurement_timing_config != NULL, "out of memory\n");
|
||||
memcpy(f1ap_msg->cell_to_modify[n].info.measurement_timing_config,
|
||||
upd->cell_to_modify[n].info.measurement_timing_config,
|
||||
upd->cell_to_modify[n].info.measurement_timing_config_len);
|
||||
f1ap_msg->cell_to_modify[n].info.measurement_timing_config_len = upd->cell_to_modify[n].info.measurement_timing_config_len;
|
||||
}
|
||||
|
||||
if (upd->cell_to_modify[n].sys_info) {
|
||||
f1ap_gnb_du_system_info_t *orig_sys_info = upd->cell_to_modify[n].sys_info;
|
||||
f1ap_gnb_du_system_info_t *copy_sys_info = calloc(1, sizeof(*copy_sys_info));
|
||||
AssertFatal(copy_sys_info != NULL, "out of memory\n");
|
||||
f1ap_msg->cell_to_modify[n].sys_info = copy_sys_info;
|
||||
|
||||
copy_sys_info->mib = calloc(orig_sys_info->mib_length, sizeof(uint8_t));
|
||||
AssertFatal(copy_sys_info->mib != NULL, "out of memory\n");
|
||||
memcpy(copy_sys_info->mib, orig_sys_info->mib, orig_sys_info->mib_length);
|
||||
copy_sys_info->mib_length = orig_sys_info->mib_length;
|
||||
|
||||
if (orig_sys_info->sib1_length > 0) {
|
||||
copy_sys_info->sib1 = calloc(orig_sys_info->sib1_length, sizeof(uint8_t));
|
||||
AssertFatal(copy_sys_info->sib1 != NULL, "out of memory\n");
|
||||
memcpy(copy_sys_info->sib1, orig_sys_info->sib1, orig_sys_info->sib1_length);
|
||||
copy_sys_info->sib1_length = orig_sys_info->sib1_length;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* transfer to RRC via ITTI */
|
||||
F1AP_GNB_DU_CONFIGURATION_UPDATE(msg) = cp_f1ap_du_configuration_update(upd);
|
||||
itti_send_msg_to_task(TASK_RRC_GNB, 0, msg);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,34 +78,14 @@ static void f1_setup_request_f1ap(const f1ap_setup_req_t *req)
|
||||
static void gnb_du_configuration_update_f1ap(const f1ap_gnb_du_configuration_update_t *upd)
|
||||
{
|
||||
MessageDef *msg = itti_alloc_new_message(TASK_MAC_GNB, 0, F1AP_GNB_DU_CONFIGURATION_UPDATE);
|
||||
f1ap_gnb_du_configuration_update_t *f1_upd = &F1AP_GNB_DU_CONFIGURATION_UPDATE(msg);
|
||||
f1_upd->transaction_id = upd->transaction_id;
|
||||
AssertFatal(upd->num_cells_to_add == 0, "gNB-DU config update: cells to add not supported\n");
|
||||
f1_upd->num_cells_to_modify = upd->num_cells_to_modify;
|
||||
for (int n = 0; n < upd->num_cells_to_modify; ++n) {
|
||||
f1_upd->cell_to_modify[n].old_plmn = upd->cell_to_modify[n].old_plmn;
|
||||
f1_upd->cell_to_modify[n].old_nr_cellid = upd->cell_to_modify[n].old_nr_cellid;
|
||||
f1_upd->cell_to_modify[n].info = upd->cell_to_modify[n].info;
|
||||
if (upd->cell_to_modify[n].sys_info) {
|
||||
f1ap_gnb_du_system_info_t *orig_sys_info = upd->cell_to_modify[n].sys_info;
|
||||
f1ap_gnb_du_system_info_t *copy_sys_info = calloc(1, sizeof(*copy_sys_info));
|
||||
f1_upd->cell_to_modify[n].sys_info = copy_sys_info;
|
||||
|
||||
copy_sys_info->mib = calloc(orig_sys_info->mib_length, sizeof(uint8_t));
|
||||
AssertFatal(copy_sys_info->mib != NULL, "out of memory\n");
|
||||
memcpy(copy_sys_info->mib, orig_sys_info->mib, orig_sys_info->mib_length);
|
||||
copy_sys_info->mib_length = orig_sys_info->mib_length;
|
||||
|
||||
if (orig_sys_info->sib1_length > 0) {
|
||||
copy_sys_info->sib1 = calloc(orig_sys_info->sib1_length, sizeof(uint8_t));
|
||||
AssertFatal(copy_sys_info->sib1 != NULL, "out of memory\n");
|
||||
memcpy(copy_sys_info->sib1, orig_sys_info->sib1, orig_sys_info->sib1_length);
|
||||
copy_sys_info->sib1_length = orig_sys_info->sib1_length;
|
||||
}
|
||||
}
|
||||
}
|
||||
AssertFatal(upd->num_cells_to_delete == 0, "gNB-DU config update: cells to add not supported\n");
|
||||
itti_send_msg_to_task(TASK_DU_F1, 0, msg);
|
||||
/* copy F1AP message */
|
||||
f1ap_gnb_du_configuration_update_t cp = cp_f1ap_du_configuration_update(upd);
|
||||
/* transfer to ITTI message */
|
||||
F1AP_GNB_DU_CONFIGURATION_UPDATE(msg) = cp;
|
||||
/* free after copy */
|
||||
free_f1ap_du_configuration_update(upd);
|
||||
/* send to RRC task */
|
||||
itti_send_msg_to_task(TASK_RRC_GNB, 0, msg);
|
||||
}
|
||||
|
||||
static void ue_context_setup_response_f1ap(const f1ap_ue_context_setup_t *req, const f1ap_ue_context_setup_t *resp)
|
||||
|
||||
Reference in New Issue
Block a user