Implement the F1_SETUP_FAILURE procedure
This commit is contained in:
@@ -128,7 +128,6 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
|
||||
served_celles_item_p = &(((F1AP_GNB_DU_Served_Cells_ItemIEs_t *)ie->value.choice.GNB_DU_Served_Cells_List.list.array[i])->value.choice.GNB_DU_Served_Cells_Item);
|
||||
|
||||
/* tac */
|
||||
// @issue in here
|
||||
OCTET_STRING_TO_INT16(&(served_celles_item_p->served_Cell_Information.fiveGS_TAC), F1AP_SETUP_REQ(message_p).tac[i]);
|
||||
printf ("F1AP_SETUP_REQ(message_p).tac[%d] %d \n", i, F1AP_SETUP_REQ(message_p).tac[i]);
|
||||
|
||||
@@ -213,8 +212,11 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
|
||||
|
||||
// } tdd;
|
||||
// } nr_mode_info[F1AP_MAX_NB_CELLS];
|
||||
|
||||
itti_send_msg_to_task(TASK_RRC_ENB, ENB_MODULE_ID_TO_INSTANCE(instance), message_p);
|
||||
if (num_cells_available < 1) {
|
||||
itti_send_msg_to_task(TASK_RRC_ENB, ENB_MODULE_ID_TO_INSTANCE(instance), message_p);
|
||||
} else {
|
||||
CU_send_F1_SETUP_FAILURE(instance);
|
||||
}
|
||||
}
|
||||
|
||||
void CU_send_F1_SETUP_RESPONSE(instance_t instance,
|
||||
@@ -352,11 +354,86 @@ void CU_send_F1_SETUP_RESPONSE(instance_t instance,
|
||||
|
||||
}
|
||||
|
||||
void CU_send_F1_SETUP_FAILURE(instance_t instance,
|
||||
F1AP_F1SetupFailure_t *F1SetupFailure) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
//AssertFatal(1==0,"Not implemented yet\n");
|
||||
//f1ap_send_sctp_data_req(instance_p->instance, f1ap_mme_data_p->assoc_id, buffer, len, 0);
|
||||
void CU_send_F1_SETUP_FAILURE(instance_t instance) {
|
||||
printf("CU_send_F1_SETUP_FAILURE\n");
|
||||
|
||||
module_id_t enb_mod_idP;
|
||||
module_id_t cu_mod_idP;
|
||||
|
||||
enb_mod_idP = (module_id_t)12;
|
||||
cu_mod_idP = (module_id_t)34;
|
||||
|
||||
F1AP_F1AP_PDU_t pdu;
|
||||
F1AP_F1SetupFailure_t *out;
|
||||
F1AP_F1SetupFailureIEs_t *ie;
|
||||
|
||||
uint8_t *buffer;
|
||||
uint32_t len;
|
||||
|
||||
/* Create */
|
||||
/* 0. Message Type */
|
||||
memset(&pdu, 0, sizeof(pdu));
|
||||
pdu.present = F1AP_F1AP_PDU_PR_unsuccessfulOutcome;
|
||||
pdu.choice.unsuccessfulOutcome = (F1AP_UnsuccessfulOutcome_t *)calloc(1, sizeof(F1AP_UnsuccessfulOutcome_t));
|
||||
pdu.choice.unsuccessfulOutcome->procedureCode = F1AP_ProcedureCode_id_F1Setup;
|
||||
pdu.choice.unsuccessfulOutcome->criticality = F1AP_Criticality_reject;
|
||||
pdu.choice.unsuccessfulOutcome->value.present = F1AP_UnsuccessfulOutcome__value_PR_F1SetupFailure;
|
||||
out = &pdu.choice.unsuccessfulOutcome->value.choice.F1SetupFailure;
|
||||
|
||||
/* mandatory */
|
||||
/* c1. Transaction ID (integer value)*/
|
||||
ie = (F1AP_F1SetupFailureIEs_t *)calloc(1, sizeof(F1AP_F1SetupFailureIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_TransactionID;
|
||||
ie->criticality = F1AP_Criticality_reject;
|
||||
ie->value.present = F1AP_F1SetupFailureIEs__value_PR_TransactionID;
|
||||
ie->value.choice.TransactionID = F1AP_get_next_transaction_identifier(enb_mod_idP, cu_mod_idP);
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* mandatory */
|
||||
/* c2. Cause */
|
||||
ie = (F1AP_F1SetupFailureIEs_t *)calloc(1, sizeof(F1AP_F1SetupFailureIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_Cause;
|
||||
ie->criticality = F1AP_Criticality_ignore;
|
||||
ie->value.present = F1AP_F1SetupFailureIEs__value_PR_Cause;
|
||||
ie->value.choice.Cause.present = F1AP_Cause_PR_radioNetwork;
|
||||
ie->value.choice.Cause.choice.radioNetwork = F1AP_CauseRadioNetwork_unspecified;
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
|
||||
/* optional */
|
||||
/* c3. TimeToWait */
|
||||
if (0) {
|
||||
ie = (F1AP_F1SetupFailureIEs_t *)calloc(1, sizeof(F1AP_F1SetupFailureIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_TimeToWait;
|
||||
ie->criticality = F1AP_Criticality_ignore;
|
||||
ie->value.present = F1AP_F1SetupFailureIEs__value_PR_TimeToWait;
|
||||
ie->value.choice.TimeToWait = F1AP_TimeToWait_v10s;
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
}
|
||||
|
||||
/* optional */
|
||||
/* c4. CriticalityDiagnostics*/
|
||||
if (0) {
|
||||
ie = (F1AP_F1SetupFailureIEs_t *)calloc(1, sizeof(F1AP_F1SetupFailureIEs_t));
|
||||
ie->id = F1AP_ProtocolIE_ID_id_CriticalityDiagnostics;
|
||||
ie->criticality = F1AP_Criticality_ignore;
|
||||
ie->value.present = F1AP_F1SetupFailureIEs__value_PR_CriticalityDiagnostics;
|
||||
ie->value.choice.CriticalityDiagnostics.procedureCode = (F1AP_ProcedureCode_t *)calloc(1, sizeof(F1AP_ProcedureCode_t));
|
||||
*ie->value.choice.CriticalityDiagnostics.procedureCode = F1AP_ProcedureCode_id_UEContextSetup;
|
||||
ie->value.choice.CriticalityDiagnostics.triggeringMessage = (F1AP_TriggeringMessage_t *)calloc(1, sizeof(F1AP_TriggeringMessage_t));
|
||||
*ie->value.choice.CriticalityDiagnostics.triggeringMessage = F1AP_TriggeringMessage_initiating_message;
|
||||
ie->value.choice.CriticalityDiagnostics.procedureCriticality = (F1AP_Criticality_t *)calloc(1, sizeof(F1AP_Criticality_t));
|
||||
*ie->value.choice.CriticalityDiagnostics.procedureCriticality = F1AP_Criticality_reject;
|
||||
ie->value.choice.CriticalityDiagnostics.transactionID = (F1AP_TransactionID_t *)calloc(1, sizeof(F1AP_TransactionID_t));
|
||||
*ie->value.choice.CriticalityDiagnostics.transactionID = 0;
|
||||
ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie);
|
||||
}
|
||||
|
||||
/* encode */
|
||||
if (f1ap_encode_pdu(&pdu, &buffer, &len) < 0) {
|
||||
printf("Failed to encode F1 setup request\n");
|
||||
}
|
||||
|
||||
cu_f1ap_itti_send_sctp_data_req(instance, f1ap_du_data_from_du->assoc_id, buffer, len, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -756,12 +833,7 @@ void CU_send_gNB_CU_CONFIGURATION_UPDATE(instance_t instance, module_id_t du_mod
|
||||
return;
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
/* decode */
|
||||
if (f1ap_decode_pdu(&pdu, buffer, len) > 0) {
|
||||
printf("Failed to decode F1 setup request\n");
|
||||
}
|
||||
cu_f1ap_itti_send_sctp_data_req(instance, f1ap_du_data_from_du->assoc_id, buffer, len, 0);
|
||||
}
|
||||
|
||||
void CU_handle_gNB_CU_CONFIGURATION_UPDATE_FAILURE(instance_t instance,
|
||||
|
||||
@@ -57,7 +57,7 @@ void CU_handle_F1_SETUP_REQUEST(instance_t instance,
|
||||
|
||||
void CU_send_F1_SETUP_RESPONSE(instance_t instance, f1ap_setup_resp_t *f1ap_setup_resp);
|
||||
|
||||
void CU_send_F1_SETUP_FAILURE(instance_t instance, F1AP_F1SetupFailure_t *F1SetupFailure);
|
||||
void CU_send_F1_SETUP_FAILURE(instance_t instance);
|
||||
|
||||
/*
|
||||
* gNB-DU Configuration Update
|
||||
|
||||
@@ -312,8 +312,13 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
|
||||
}
|
||||
|
||||
// SETUP FAILURE
|
||||
void DU_handle_F1_SETUP_FAILURE(instance_t instance, F1AP_F1AP_PDU_t *pdu_p) {
|
||||
AssertFatal(1==0,"Not implemented yet\n");
|
||||
int DU_handle_F1_SETUP_FAILURE(instance_t instance,
|
||||
uint32_t assoc_id,
|
||||
uint32_t stream,
|
||||
F1AP_F1AP_PDU_t *pdu)
|
||||
{
|
||||
LOG_E(DU_F1AP, "DU_handle_F1_SETUP_FAILURE\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -58,7 +58,10 @@ int DU_handle_F1_SETUP_RESPONSE(instance_t instance,
|
||||
uint32_t stream,
|
||||
F1AP_F1AP_PDU_t *pdu);
|
||||
|
||||
void DU_handle_F1_SETUP_FAILURE(instance_t instance, F1AP_F1AP_PDU_t *pdu_p);
|
||||
int DU_handle_F1_SETUP_FAILURE(instance_t instance,
|
||||
uint32_t assoc_id,
|
||||
uint32_t stream,
|
||||
F1AP_F1AP_PDU_t *pdu);
|
||||
|
||||
/*
|
||||
* gNB-DU Configuration Update
|
||||
|
||||
@@ -43,19 +43,19 @@ f1ap_message_decoded_callback f1ap_messages_callback[][3] = {
|
||||
|
||||
|
||||
{ 0, 0, 0 }, /* Reset */
|
||||
{ CU_handle_F1_SETUP_REQUEST, DU_handle_F1_SETUP_RESPONSE, 0 }, /* F1Setup */
|
||||
{ CU_handle_F1_SETUP_REQUEST, DU_handle_F1_SETUP_RESPONSE, DU_handle_F1_SETUP_FAILURE }, /* F1Setup */
|
||||
{ 0, 0, 0 }, /* ErrorIndication */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* gNBDUConfigurationUpdate */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* gNBCUConfigurationUpdate */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* UEContextSetup */
|
||||
{ 0, 0, 0 }, /* gNBDUConfigurationUpdate */
|
||||
{ 0, 0, 0 }, /* gNBCUConfigurationUpdate */
|
||||
{ 0, 0, 0 }, /* UEContextSetup */
|
||||
{ 0, 0, 0 }, /* UEContextRelease */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* UEContextModification */
|
||||
{ 0, 0, 0 }, /* UEContextModification */
|
||||
{ 0, 0, 0 }, /* UEContextModificationRequired */
|
||||
{ 0, 0, 0 }, /* UEMobilityCommand */
|
||||
{ 0, 0, 0 }, /* UEContextReleaseRequest */
|
||||
{ CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER, 0, 0 }, /* InitialULRRCMessageTransfer */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* DLRRCMessageTransfer */
|
||||
{ CU_handle_F1_SETUP_REQUEST, 0, 0 }, /* ULRRCMessageTransfer */
|
||||
{ 0, 0, 0 }, /* DLRRCMessageTransfer */
|
||||
{ 0, 0, 0 }, /* ULRRCMessageTransfer */
|
||||
{ 0, 0, 0 }, /* privateMessage */
|
||||
{ 0, 0, 0 }, /* UEInactivityNotification */
|
||||
{ 0, 0, 0 }, /* GNBDUResourceCoordination */
|
||||
|
||||
Reference in New Issue
Block a user