Handle Measurement Timing Configuration in DU/MAC handler

This commit is contained in:
rmagueta
2025-07-11 14:08:52 +01:00
parent c2d9fb3589
commit dfbb6b1509
2 changed files with 14 additions and 2 deletions
@@ -625,7 +625,9 @@ void ue_context_setup_request(const f1ap_ue_context_setup_req_t *req)
} else if (cu2du->ue_cap != NULL) {
ue_cap = get_ue_nr_cap(*req->gNB_DU_ue_id, cu2du->ue_cap->buf, cu2du->ue_cap->len);
}
AssertFatal(cu2du->meas_config == NULL, "MeasConfig not handled\n");
NR_MeasurementTimingConfiguration_t *mtc = NULL;
if (cu2du->meas_timing_config != NULL)
mtc = get_nr_mtc(cu2du->meas_timing_config->buf, cu2du->meas_timing_config->len);
/* 38.473: "For DC operation, the CG-ConfigInfo IE shall be included in the CU
* to DU RRC Information IE at the gNB acting as secondary node" As of now,
@@ -696,6 +698,16 @@ void ue_context_setup_request(const f1ap_ue_context_setup_req_t *req)
int ss_type = cg_configinfo ? NR_SearchSpace__searchSpaceType_PR_ue_Specific: NR_SearchSpace__searchSpaceType_PR_common;
configure_UE_BWP(mac, scc, UE, false, ss_type, -1, -1);
if (mtc) {
/* creates a suitable measGap config to be used in the gNB */
UE->measgap_config = create_measgap_config(mtc, UE->current_DL_BWP.scs, mac->radio_config.minRXTXTIME);
/* encodes the measGapConfig created, if useful (or not!) */
byte_array_t *mgc = calloc_or_fail(1, sizeof(*mgc));
mgc->buf = calloc_or_fail(1, 1024);
mgc->len = encode_measgap_config(&UE->measgap_config, mgc->buf);
resp.du_to_cu_rrc_info.meas_gap_config = mgc;
}
NR_SCHED_UNLOCK(&mac->sched_lock);
mac->mac_rrc.ue_context_setup_response(&resp);
@@ -720,7 +732,6 @@ void ue_context_modification_request(const f1ap_ue_context_mod_req_t *req)
byte_array_t *b = req->cu_to_du_rrc_info->ue_cap;
ue_cap = get_ue_nr_cap(req->gNB_DU_ue_id, b->buf, b->len);
}
AssertFatal(req->cu_to_du_rrc_info->meas_config == NULL, "MeasConfig not handled\n");
}
NR_SCHED_LOCK(&mac->sched_lock);
+1
View File
@@ -766,6 +766,7 @@ typedef struct {
NR_SpCellConfig_t *reconfigSpCellConfig;
interrupt_followup_action_t interrupt_action;
NR_UE_NR_Capability_t *capability;
measgap_config_t measgap_config;
// UE selected beam index
uint8_t UE_beam_index;
float ul_thr_ue;