From ecd6d673ea566fbd8e28710e9e2bc0bb96e666c7 Mon Sep 17 00:00:00 2001 From: Bing-Kai Hong <Bing-Kai.Hong@eurecom.fr> Date: Tue, 25 Sep 2018 16:21:01 +0200 Subject: [PATCH] Update complete elements with ue context setup response --- openair2/F1AP/f1ap_cu_ue_context_management.c | 2 +- openair2/F1AP/f1ap_du_ue_context_management.c | 393 +++++++++++++----- 2 files changed, 281 insertions(+), 114 deletions(-) diff --git a/openair2/F1AP/f1ap_cu_ue_context_management.c b/openair2/F1AP/f1ap_cu_ue_context_management.c index 85a7b528a9..04fcabfe76 100644 --- a/openair2/F1AP/f1ap_cu_ue_context_management.c +++ b/openair2/F1AP/f1ap_cu_ue_context_management.c @@ -819,7 +819,7 @@ int CU_send_UE_CONTEXT_RELEASE_COMMAND(instance_t instance, ie->criticality = F1AP_Criticality_ignore; ie->value.present = F1AP_UEContextReleaseCommandIEs__value_PR_Cause; - // dummy value + // dummy value ie->value.choice.Cause.present = F1AP_Cause_PR_radioNetwork; switch(ie->value.choice.Cause.present) diff --git a/openair2/F1AP/f1ap_du_ue_context_management.c b/openair2/F1AP/f1ap_du_ue_context_management.c index 4da6babee0..c34179cafe 100644 --- a/openair2/F1AP/f1ap_du_ue_context_management.c +++ b/openair2/F1AP/f1ap_du_ue_context_management.c @@ -36,6 +36,13 @@ #include "f1ap_itti_messaging.h" #include "f1ap_du_ue_context_management.h" +// undefine C_RNTI from +// openair1/PHY/LTE_TRANSPORT/transport_common.h which +// replaces in ie->value.choice.C_RNTI, causing +// a compile error + +#undef C_RNTI + extern f1ap_setup_req_t *f1ap_du_data; int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance, @@ -167,7 +174,9 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { uint8_t *buffer; uint32_t len; - int i = 0; + int i = 0, j = 0; + + rnti_t rntiP; // note: need get value /* Create */ /* 0. Message Type */ @@ -203,19 +212,42 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { ie->id = F1AP_ProtocolIE_ID_id_DUtoCURRCInformation; ie->criticality = F1AP_Criticality_reject; ie->value.present = F1AP_UEContextSetupResponseIEs__value_PR_DUtoCURRCInformation; + { + /* cellGroupConfig */ + OCTET_STRING_fromBuf(&ie->value.choice.DUtoCURRCInformation.cellGroupConfig, "asdsa", + strlen("asdsa")); + /* OPTIONAL */ + /* measGapConfig */ + if (0) { + ie->value.choice.DUtoCURRCInformation.measGapConfig = (F1AP_MeasGapConfig_t *)calloc(1, sizeof(F1AP_MeasGapConfig_t)); + OCTET_STRING_fromBuf( ie->value.choice.DUtoCURRCInformation.measGapConfig, "asdsa", + strlen("asdsa")); + } + + /* OPTIONAL */ + /* requestedP_MaxFR1 */ + if (0) { + ie->value.choice.DUtoCURRCInformation.requestedP_MaxFR1 = (OCTET_STRING_t *)calloc(1, sizeof(OCTET_STRING_t)); + OCTET_STRING_fromBuf( ie->value.choice.DUtoCURRCInformation.requestedP_MaxFR1, "asdsa", + strlen("asdsa")); + } + + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + } - OCTET_STRING_fromBuf(&ie->value.choice.DUtoCURRCInformation.cellGroupConfig, "asdsa", - strlen("asdsa")); - /* OPTIONAL */ + /* optional */ + /* c4. C_RNTI */ if (0) { - ie->value.choice.DUtoCURRCInformation.measGapConfig = (F1AP_MeasGapConfig_t *)calloc(1, sizeof(F1AP_MeasGapConfig_t)); - OCTET_STRING_fromBuf( ie->value.choice.DUtoCURRCInformation.measGapConfig, "asdsa", - strlen("asdsa")); + ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); + ie->id = F1AP_ProtocolIE_ID_id_C_RNTI; + ie->criticality = F1AP_Criticality_ignore; + ie->value.present = F1AP_UEContextSetupResponseIEs__value_PR_C_RNTI; + C_RNTI_TO_BIT_STRING(rntiP, &ie->value.choice.C_RNTI); ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); } /* optional */ - /* c4. ResourceCoordinationTransferContainer */ + /* c5. ResourceCoordinationTransferContainer */ if (0) { ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_ResourceCoordinationTransferContainer; @@ -226,8 +258,19 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); } - // /* */ - /* c5. DRBs_Setup_List */ + /* optional */ + /* c6. FullConfiguration */ + if (0) { + ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); + ie->id = F1AP_ProtocolIE_ID_id_FullConfiguration; + ie->criticality = F1AP_Criticality_ignore; + ie->value.present = F1AP_UEContextSetupResponseIEs__value_PR_FullConfiguration; + ie->value.choice.FullConfiguration = F1AP_FullConfiguration_full; //enum + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + } + + /* mandatory */ + /* c7. DRBs_Setup_List */ ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_DRBs_Setup_List; ie->criticality = F1AP_Criticality_ignore; @@ -243,13 +286,18 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { drbs_setup_item_ies->criticality = F1AP_Criticality_ignore; drbs_setup_item_ies->value.present = F1AP_SRBs_FailedToBeSetup_ItemIEs__value_PR_SRBs_FailedToBeSetup_Item; - /* 5.1 DRBs_Setup_Item */ + /* 7.1 DRBs_Setup_Item */ F1AP_DRBs_Setup_Item_t drbs_setup_item; memset((void *)&drbs_setup_item, 0, sizeof(F1AP_DRBs_Setup_Item_t)); + /* dRBID */ drbs_setup_item.dRBID = 12; - int j; + /* OPTIONAL */ + /* lCID */ + drbs_setup_item.lCID = (F1AP_LCID_t *)calloc(1, sizeof(F1AP_LCID_t)); + drbs_setup_item.lCID = 0L; + for (j=0; j<1; j++) { @@ -258,35 +306,31 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { dLUPTNLInformation_ToBeSetup_Item = (F1AP_DLUPTNLInformation_ToBeSetup_Item_t *)calloc(1, sizeof(F1AP_DLUPTNLInformation_ToBeSetup_Item_t)); dLUPTNLInformation_ToBeSetup_Item->dLUPTNLInformation.present = F1AP_UPTransportLayerInformation_PR_gTPTunnel; + /* gTPTunnel */ F1AP_GTPTunnel_t *gTPTunnel = (F1AP_GTPTunnel_t *)calloc(1, sizeof(F1AP_GTPTunnel_t)); - - // F1AP_TransportLayerAddress_t transportLayerAddress; - // transportLayerAddress.buf = malloc((36+7)/8); - // transportLayerAddress.size = (36+7)/8; - // transportLayerAddress.bits_unused = 4; - // *transportLayerAddress.buf = 123; - // dLUPTNLInformation_ToBeSetup_Item.dL_GTP_Tunnel_EndPoint.transportLayerAddress = transportLayerAddress; - - TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING(1234, &gTPTunnel->transportLayerAddress); - - OCTET_STRING_fromBuf(&gTPTunnel->gTP_TEID, "1204", - strlen("1204")); - - dLUPTNLInformation_ToBeSetup_Item->dLUPTNLInformation.choice.gTPTunnel = gTPTunnel; - + { + /* transportLayerAddress */ + TRANSPORT_LAYER_ADDRESS_IPv4_TO_BIT_STRING(1234, &gTPTunnel->transportLayerAddress); + + /* gTP_TEID */ + OCTET_STRING_fromBuf(&gTPTunnel->gTP_TEID, "1204", + strlen("1204")); + dLUPTNLInformation_ToBeSetup_Item->dLUPTNLInformation.choice.gTPTunnel = gTPTunnel; + } + /* ADD */ ASN_SEQUENCE_ADD(&drbs_setup_item.dLUPTNLInformation_ToBeSetup_List.list, dLUPTNLInformation_ToBeSetup_Item); - } + } // for j - // /* ADD */ + /* ADD */ drbs_setup_item_ies->value.choice.DRBs_Setup_Item = drbs_setup_item; ASN_SEQUENCE_ADD(&ie->value.choice.DRBs_Setup_List.list, drbs_setup_item_ies); - } + } // for i ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); - // /* */ - /* c6. SRBs_FailedToBeSetup_List */ + /* mandatory */ + /* c8. SRBs_FailedToBeSetup_List */ ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_SRBs_FailedToBeSetup_List; ie->criticality = F1AP_Criticality_ignore; @@ -295,31 +339,54 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { for (i=0; i<1; i++) { - // - F1AP_SRBs_FailedToBeSetup_ItemIEs_t *srbs_failedToBeSetup_item_ies; - srbs_failedToBeSetup_item_ies = (F1AP_SRBs_FailedToBeSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_SRBs_FailedToBeSetup_ItemIEs_t)); - srbs_failedToBeSetup_item_ies->id = F1AP_ProtocolIE_ID_id_SRBs_FailedToBeSetup_Item; - srbs_failedToBeSetup_item_ies->criticality = F1AP_Criticality_ignore; - srbs_failedToBeSetup_item_ies->value.present = F1AP_SRBs_FailedToBeSetup_ItemIEs__value_PR_SRBs_FailedToBeSetup_Item; - - /* 6.1 SRBs_Setup_Item */ - F1AP_SRBs_FailedToBeSetup_Item_t srbs_failedToBeSetup_item; - memset((void *)&srbs_failedToBeSetup_item, 0, sizeof(F1AP_SRBs_FailedToBeSetup_Item_t)); - - srbs_failedToBeSetup_item.sRBID = 13; - srbs_failedToBeSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); - srbs_failedToBeSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; - srbs_failedToBeSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_cu_ue_f1ap_id; - - // /* ADD */ - srbs_failedToBeSetup_item_ies->value.choice.SRBs_FailedToBeSetup_Item = srbs_failedToBeSetup_item; - ASN_SEQUENCE_ADD(&ie->value.choice.SRBs_FailedToBeSetup_List.list, - srbs_failedToBeSetup_item_ies); - } + // + F1AP_SRBs_FailedToBeSetup_ItemIEs_t *srbs_failedToBeSetup_item_ies; + srbs_failedToBeSetup_item_ies = (F1AP_SRBs_FailedToBeSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_SRBs_FailedToBeSetup_ItemIEs_t)); + srbs_failedToBeSetup_item_ies->id = F1AP_ProtocolIE_ID_id_SRBs_FailedToBeSetup_Item; + srbs_failedToBeSetup_item_ies->criticality = F1AP_Criticality_ignore; + srbs_failedToBeSetup_item_ies->value.present = F1AP_SRBs_FailedToBeSetup_ItemIEs__value_PR_SRBs_FailedToBeSetup_Item; + + /* 8.1 SRBs_Setup_Item */ + F1AP_SRBs_FailedToBeSetup_Item_t srbs_failedToBeSetup_item; + memset((void *)&srbs_failedToBeSetup_item, 0, sizeof(F1AP_SRBs_FailedToBeSetup_Item_t)); + + /* sRBID */ + srbs_failedToBeSetup_item.sRBID = 13L; + + /* cause */ + srbs_failedToBeSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); + + // dummy value + srbs_failedToBeSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; + + switch(srbs_failedToBeSetup_item.cause->present) + { + case F1AP_Cause_PR_radioNetwork: + srbs_failedToBeSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unspecified; + break; + case F1AP_Cause_PR_transport: + srbs_failedToBeSetup_item.cause->choice.transport = F1AP_CauseTransport_unspecified; + break; + case F1AP_Cause_PR_protocol: + srbs_failedToBeSetup_item.cause->choice.protocol = F1AP_CauseProtocol_unspecified; + break; + case F1AP_Cause_PR_misc: + srbs_failedToBeSetup_item.cause->choice.misc = F1AP_CauseMisc_unspecified; + break; + case F1AP_Cause_PR_NOTHING: + default: + break; + } // switch + + /* ADD */ + srbs_failedToBeSetup_item_ies->value.choice.SRBs_FailedToBeSetup_Item = srbs_failedToBeSetup_item; + ASN_SEQUENCE_ADD(&ie->value.choice.SRBs_FailedToBeSetup_List.list, + srbs_failedToBeSetup_item_ies); + } // for i ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); - // /* */ - /* c7. DRBs_FailedToBeSetup_List */ + /* */ + /* c9. DRBs_FailedToBeSetup_List */ ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_DRBs_FailedToBeSetup_List; ie->criticality = F1AP_Criticality_ignore; @@ -328,31 +395,54 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { for (i=0; i<1; i++) { - // - F1AP_DRBs_FailedToBeSetup_ItemIEs_t *drbs_failedToBeSetup_item_ies; - drbs_failedToBeSetup_item_ies = (F1AP_DRBs_FailedToBeSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_DRBs_FailedToBeSetup_ItemIEs_t)); - drbs_failedToBeSetup_item_ies->id = F1AP_ProtocolIE_ID_id_DRBs_FailedToBeSetup_Item; - drbs_failedToBeSetup_item_ies->criticality = F1AP_Criticality_ignore; - drbs_failedToBeSetup_item_ies->value.present = F1AP_DRBs_FailedToBeSetup_ItemIEs__value_PR_DRBs_FailedToBeSetup_Item; - - /* 7.1 DRBs_Setup_Item */ - F1AP_DRBs_FailedToBeSetup_Item_t drbs_failedToBeSetup_item; - memset((void *)&drbs_failedToBeSetup_item, 0, sizeof(F1AP_DRBs_FailedToBeSetup_Item_t)); - - drbs_failedToBeSetup_item.dRBID = 14; - drbs_failedToBeSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); - drbs_failedToBeSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; - drbs_failedToBeSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_cu_ue_f1ap_id; - - // /* ADD */ - drbs_failedToBeSetup_item_ies->value.choice.DRBs_FailedToBeSetup_Item = drbs_failedToBeSetup_item; - ASN_SEQUENCE_ADD(&ie->value.choice.DRBs_FailedToBeSetup_List.list, + // + F1AP_DRBs_FailedToBeSetup_ItemIEs_t *drbs_failedToBeSetup_item_ies; + drbs_failedToBeSetup_item_ies = (F1AP_DRBs_FailedToBeSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_DRBs_FailedToBeSetup_ItemIEs_t)); + drbs_failedToBeSetup_item_ies->id = F1AP_ProtocolIE_ID_id_DRBs_FailedToBeSetup_Item; + drbs_failedToBeSetup_item_ies->criticality = F1AP_Criticality_ignore; + drbs_failedToBeSetup_item_ies->value.present = F1AP_DRBs_FailedToBeSetup_ItemIEs__value_PR_DRBs_FailedToBeSetup_Item; + + /* 9.1 DRBs_Setup_Item */ + F1AP_DRBs_FailedToBeSetup_Item_t drbs_failedToBeSetup_item; + memset((void *)&drbs_failedToBeSetup_item, 0, sizeof(F1AP_DRBs_FailedToBeSetup_Item_t)); + + /* dRBID */ + drbs_failedToBeSetup_item.dRBID = 14; + + /* cause */ + drbs_failedToBeSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); + + // dummy value + drbs_failedToBeSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; + + switch(drbs_failedToBeSetup_item.cause->present) + { + case F1AP_Cause_PR_radioNetwork: + drbs_failedToBeSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unspecified; + break; + case F1AP_Cause_PR_transport: + drbs_failedToBeSetup_item.cause->choice.transport = F1AP_CauseTransport_unspecified; + break; + case F1AP_Cause_PR_protocol: + drbs_failedToBeSetup_item.cause->choice.protocol = F1AP_CauseProtocol_unspecified; + break; + case F1AP_Cause_PR_misc: + drbs_failedToBeSetup_item.cause->choice.misc = F1AP_CauseMisc_unspecified; + break; + case F1AP_Cause_PR_NOTHING: + default: + break; + } // switch + + /* ADD */ + drbs_failedToBeSetup_item_ies->value.choice.DRBs_FailedToBeSetup_Item = drbs_failedToBeSetup_item; + ASN_SEQUENCE_ADD(&ie->value.choice.DRBs_FailedToBeSetup_List.list, drbs_failedToBeSetup_item_ies); - } + } // for i ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); // /* */ - /* c8. SCell_FailedtoSetup_List */ + /* c10. SCell_FailedtoSetup_List */ ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_SCell_FailedtoSetup_List; ie->criticality = F1AP_Criticality_ignore; @@ -361,51 +451,90 @@ int DU_send_UE_CONTEXT_SETUP_RESPONSE(instance_t instance) { for (i=0; i<1; i++) { - // - F1AP_SCell_FailedtoSetup_ItemIEs_t *sCell_FailedtoSetup_item_ies; - sCell_FailedtoSetup_item_ies = (F1AP_SCell_FailedtoSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_SCell_FailedtoSetup_ItemIEs_t)); - sCell_FailedtoSetup_item_ies->id = F1AP_ProtocolIE_ID_id_SCell_FailedtoSetup_Item; - sCell_FailedtoSetup_item_ies->criticality = F1AP_Criticality_ignore; - sCell_FailedtoSetup_item_ies->value.present = F1AP_SCell_FailedtoSetup_ItemIEs__value_PR_SCell_FailedtoSetup_Item; - - /* 8.1 DRBs_Setup_Item */ - F1AP_SCell_FailedtoSetup_Item_t sCell_FailedtoSetup_item; - memset((void *)&sCell_FailedtoSetup_item, 0, sizeof(F1AP_SCell_FailedtoSetup_Item_t)); - - /* - nRCGI */ - F1AP_NRCGI_t nRCGI; // issue here - MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &nRCGI.pLMN_Identity); - - NR_CELL_ID_TO_BIT_STRING(f1ap_du_data->nr_cellid[0], &nRCGI.nRCellIdentity); - - sCell_FailedtoSetup_item.sCell_ID = nRCGI; - - sCell_FailedtoSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); - sCell_FailedtoSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; - sCell_FailedtoSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unknown_or_already_allocated_gnb_cu_ue_f1ap_id; - - // /* ADD */ - sCell_FailedtoSetup_item_ies->value.choice.SCell_FailedtoSetup_Item = sCell_FailedtoSetup_item; - ASN_SEQUENCE_ADD(&ie->value.choice.SCell_FailedtoSetup_List.list, + // + F1AP_SCell_FailedtoSetup_ItemIEs_t *sCell_FailedtoSetup_item_ies; + sCell_FailedtoSetup_item_ies = (F1AP_SCell_FailedtoSetup_ItemIEs_t *)calloc(1, sizeof(F1AP_SCell_FailedtoSetup_ItemIEs_t)); + sCell_FailedtoSetup_item_ies->id = F1AP_ProtocolIE_ID_id_SCell_FailedtoSetup_Item; + sCell_FailedtoSetup_item_ies->criticality = F1AP_Criticality_ignore; + sCell_FailedtoSetup_item_ies->value.present = F1AP_SCell_FailedtoSetup_ItemIEs__value_PR_SCell_FailedtoSetup_Item; + + /* 10.1 DRBs_Setup_Item */ + F1AP_SCell_FailedtoSetup_Item_t sCell_FailedtoSetup_item; + memset((void *)&sCell_FailedtoSetup_item, 0, sizeof(F1AP_SCell_FailedtoSetup_Item_t)); + + /* sCell_ID */ + F1AP_NRCGI_t nRCGI; // issue here + MCC_MNC_TO_PLMNID(f1ap_du_data->mcc[i], f1ap_du_data->mnc[i], f1ap_du_data->mnc_digit_length[i], &nRCGI.pLMN_Identity); + + NR_CELL_ID_TO_BIT_STRING(f1ap_du_data->nr_cellid[0], &nRCGI.nRCellIdentity); + + sCell_FailedtoSetup_item.sCell_ID = nRCGI; + + /* cause */ + sCell_FailedtoSetup_item.cause = (F1AP_Cause_t *)calloc(1, sizeof(F1AP_Cause_t)); + + // dummy value + sCell_FailedtoSetup_item.cause->present = F1AP_Cause_PR_radioNetwork; + + switch(sCell_FailedtoSetup_item.cause->present) + { + case F1AP_Cause_PR_radioNetwork: + sCell_FailedtoSetup_item.cause->choice.radioNetwork = F1AP_CauseRadioNetwork_unspecified; + break; + case F1AP_Cause_PR_transport: + sCell_FailedtoSetup_item.cause->choice.transport = F1AP_CauseTransport_unspecified; + break; + case F1AP_Cause_PR_protocol: + sCell_FailedtoSetup_item.cause->choice.protocol = F1AP_CauseProtocol_unspecified; + break; + case F1AP_Cause_PR_misc: + sCell_FailedtoSetup_item.cause->choice.misc = F1AP_CauseMisc_unspecified; + break; + case F1AP_Cause_PR_NOTHING: + default: + break; + } // switch + + /* ADD */ + sCell_FailedtoSetup_item_ies->value.choice.SCell_FailedtoSetup_Item = sCell_FailedtoSetup_item; + ASN_SEQUENCE_ADD(&ie->value.choice.SCell_FailedtoSetup_List.list, sCell_FailedtoSetup_item_ies); - } + } // for i ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); - // /* */ - /* c9. CriticalityDiagnostics */ + + /* Optional */ + /* c11. InactivityMonitoringResponse */ + if (0) { + ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); + ie->id = F1AP_ProtocolIE_ID_id_InactivityMonitoringResponse; + ie->criticality = F1AP_Criticality_ignore; + ie->value.present = F1AP_UEContextSetupResponseIEs__value_PR_InactivityMonitoringResponse; + ie->value.choice.InactivityMonitoringResponse = F1AP_InactivityMonitoringResponse_not_supported; + ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); + } + + + /* Optional */ + /* c12. CriticalityDiagnostics */ if (0) { ie = (F1AP_UEContextSetupResponseIEs_t *)calloc(1, sizeof(F1AP_UEContextSetupResponseIEs_t)); ie->id = F1AP_ProtocolIE_ID_id_CriticalityDiagnostics; ie->criticality = F1AP_Criticality_ignore; ie->value.present = F1AP_UEContextSetupResponseIEs__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); } @@ -960,14 +1089,52 @@ int DU_send_UE_CONTEXT_MODIFICATION_RESPONSE(instance_t instance) { ie->id = F1AP_ProtocolIE_ID_id_CriticalityDiagnostics; ie->criticality = F1AP_Criticality_ignore; ie->value.present = F1AP_UEContextModificationResponseIEs__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_UEContextModification; - 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; + + // dummy value + /* optional */ + /* procedureCode */ + if (0) { + ie->value.choice.CriticalityDiagnostics.procedureCode = (F1AP_ProcedureCode_t *)calloc(1, sizeof(F1AP_ProcedureCode_t)); + ie->value.choice.CriticalityDiagnostics.procedureCode = 0L; + } + + /* optional */ + /* triggeringMessage */ + if (0) { + ie->value.choice.CriticalityDiagnostics.triggeringMessage = (F1AP_TriggeringMessage_t *)calloc(1, sizeof(F1AP_TriggeringMessage_t)); + ie->value.choice.CriticalityDiagnostics.triggeringMessage = (F1AP_TriggeringMessage_t *)F1AP_TriggeringMessage_successful_outcome; + } + + /* optional */ + /* procedureCriticality */ + if (0) { + ie->value.choice.CriticalityDiagnostics.procedureCriticality = (F1AP_Criticality_t *)calloc(1, sizeof(F1AP_Criticality_t)); + ie->value.choice.CriticalityDiagnostics.procedureCriticality = F1AP_Criticality_reject; + } + + /* optional */ + /* transactionID */ + if (0) { + ie->value.choice.CriticalityDiagnostics.transactionID = (F1AP_TransactionID_t *)calloc(1, sizeof(F1AP_TransactionID_t)); + ie->value.choice.CriticalityDiagnostics.transactionID = 0L; + } + + /* optional */ + /* F1AP_CriticalityDiagnostics_IE_List */ + if (0) { + for (i=0; + i<0; + i++) { + + F1AP_CriticalityDiagnostics_IE_Item_t *criticalityDiagnostics_ie_item = (F1AP_CriticalityDiagnostics_IE_Item_t *)calloc(1, sizeof(F1AP_CriticalityDiagnostics_IE_Item_t));; + criticalityDiagnostics_ie_item->iECriticality = F1AP_Criticality_reject; + criticalityDiagnostics_ie_item->iE_ID = 0L; + criticalityDiagnostics_ie_item->typeOfError = F1AP_TypeOfError_not_understood; + + ASN_SEQUENCE_ADD(&ie->value.choice.CriticalityDiagnostics.iEsCriticalityDiagnostics->list, + criticalityDiagnostics_ie_item); + } + } ASN_SEQUENCE_ADD(&out->protocolIEs.list, ie); } -- GitLab