Upgrade F1AP to version 16.21.0
While implementing NRPPA-related F1AP messages, we remarked that extension field "UL-AoA-ExtIEs" needs to be OPTIONAL (e.g., in NRPPA it is optional in the OAI-compiled version), but it was not marked as such. This later version 16.21.0 fixes this.
This commit is contained in:
committed by
Rakesh Mundlamuri
parent
102965a669
commit
8f2e98a475
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,11 @@
|
||||
set(F1AP_VERSION 16 3 1)
|
||||
set(F1AP_VERSION 16 21 0)
|
||||
make_version(F1AP_cc ${F1AP_VERSION})
|
||||
string(REPLACE ";" "." F1AP_RELEASE "${F1AP_VERSION}")
|
||||
|
||||
if(F1AP_RELEASE VERSION_EQUAL "16.3.1")
|
||||
include(ASN1/f1ap-16.3.1.cmake)
|
||||
elseif(F1AP_RELEASE VERSION_EQUAL "16.21.0")
|
||||
include(ASN1/f1ap-16.21.0.cmake)
|
||||
else()
|
||||
message(FATAL_ERROR "unknown F1AP_RELEASE ${F1AP_RELEASE}")
|
||||
endif()
|
||||
|
||||
@@ -383,7 +383,7 @@ static int read_slice_info(const F1AP_ServedPLMNs_Item_t *plmn, nssai_t *nssai,
|
||||
if (plmn->iE_Extensions == NULL)
|
||||
return 0;
|
||||
|
||||
const F1AP_ProtocolExtensionContainer_10696P34_t *p = (F1AP_ProtocolExtensionContainer_10696P34_t *)plmn->iE_Extensions;
|
||||
const F1AP_ProtocolExtensionContainer_11023P34_t *p = (F1AP_ProtocolExtensionContainer_11023P34_t *)plmn->iE_Extensions;
|
||||
if (p->list.count == 0)
|
||||
return 0;
|
||||
|
||||
@@ -400,12 +400,12 @@ static int read_slice_info(const F1AP_ServedPLMNs_Item_t *plmn, nssai_t *nssai,
|
||||
return ssl->list.count;
|
||||
}
|
||||
|
||||
static F1AP_ProtocolExtensionContainer_10696P34_t *write_slice_info(int num_ssi, const nssai_t *nssai)
|
||||
static F1AP_ProtocolExtensionContainer_11023P34_t *write_slice_info(int num_ssi, const nssai_t *nssai)
|
||||
{
|
||||
if (num_ssi == 0)
|
||||
return NULL;
|
||||
|
||||
F1AP_ProtocolExtensionContainer_10696P34_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
F1AP_ProtocolExtensionContainer_11023P34_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
asn1cSequenceAdd(p->list, F1AP_ServedPLMNs_ItemExtIEs_t, served_plmns_itemExtIEs);
|
||||
served_plmns_itemExtIEs->criticality = F1AP_Criticality_ignore;
|
||||
served_plmns_itemExtIEs->id = F1AP_ProtocolIE_ID_id_TAISliceSupportList;
|
||||
@@ -632,7 +632,7 @@ static void encode_cells_to_activate(const served_cells_to_activate_t *cell, F1A
|
||||
*tmp = cell->nrpci;
|
||||
// gNB-CU System Information (O)
|
||||
for (int n = 0; n < cell->num_SI; n++) {
|
||||
F1AP_ProtocolExtensionContainer_10696P112_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
F1AP_ProtocolExtensionContainer_11023P113_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
cells_to_be_activated_item->iE_Extensions = (struct F1AP_ProtocolExtensionContainer *)p;
|
||||
asn1cSequenceAdd(p->list, F1AP_Cells_to_be_Activated_List_ItemExtIEs_t, cells_to_be_activated_itemExtIEs);
|
||||
cells_to_be_activated_itemExtIEs->id = F1AP_ProtocolIE_ID_id_gNB_CUSystemInformation;
|
||||
@@ -667,7 +667,7 @@ static bool decode_cells_to_activate(served_cells_to_activate_t *out, const F1AP
|
||||
if (cell->nRPCI != NULL)
|
||||
out->nrpci = *cell->nRPCI;
|
||||
/* IE extensions (O) */
|
||||
F1AP_ProtocolExtensionContainer_10696P112_t *ext = (F1AP_ProtocolExtensionContainer_10696P112_t *)cell->iE_Extensions;
|
||||
F1AP_ProtocolExtensionContainer_11023P113_t *ext = (F1AP_ProtocolExtensionContainer_11023P113_t *)cell->iE_Extensions;
|
||||
if (ext != NULL) {
|
||||
for (int cnt = 0; cnt < ext->list.count; cnt++) {
|
||||
AssertError(ext->list.count == 1, return false, "At least one SI message should be present, and only 1 is supported");
|
||||
@@ -786,7 +786,7 @@ F1AP_F1AP_PDU_t *encode_f1ap_setup_request(const f1ap_setup_req_t *msg)
|
||||
bs->size = 1;
|
||||
bs->bits_unused = 5;
|
||||
|
||||
F1AP_ProtocolExtensionContainer_10696P228_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
F1AP_ProtocolExtensionContainer_11023P233_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
asn1cSequenceAdd(p->list, F1AP_RRC_Version_ExtIEs_t, rrcv_ext);
|
||||
rrcv_ext->id = F1AP_ProtocolIE_ID_id_latest_RRC_Version_Enhanced;
|
||||
rrcv_ext->criticality = F1AP_Criticality_ignore;
|
||||
@@ -866,8 +866,8 @@ bool decode_f1ap_setup_request(const F1AP_F1AP_PDU_t *pdu, f1ap_setup_req_t *out
|
||||
case F1AP_ProtocolIE_ID_id_GNB_DU_RRC_Version:
|
||||
/* gNB-DU RRC version (M) */
|
||||
if (ie->value.choice.RRC_Version.iE_Extensions) {
|
||||
F1AP_ProtocolExtensionContainer_10696P228_t *ext =
|
||||
(F1AP_ProtocolExtensionContainer_10696P228_t *)ie->value.choice.RRC_Version.iE_Extensions;
|
||||
F1AP_ProtocolExtensionContainer_11023P233_t *ext =
|
||||
(F1AP_ProtocolExtensionContainer_11023P233_t *)ie->value.choice.RRC_Version.iE_Extensions;
|
||||
if (ext->list.count > 0) {
|
||||
F1AP_RRC_Version_ExtIEs_t *rrcext = ext->list.array[0];
|
||||
OCTET_STRING_t *os = &rrcext->extensionValue.choice.OCTET_STRING_SIZE_3_;
|
||||
@@ -1058,7 +1058,7 @@ F1AP_F1AP_PDU_t *encode_f1ap_setup_response(const f1ap_setup_resp_t *msg)
|
||||
bs->size = 1;
|
||||
bs->bits_unused = 5;
|
||||
|
||||
F1AP_ProtocolExtensionContainer_10696P228_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
F1AP_ProtocolExtensionContainer_11023P233_t *p = calloc_or_fail(1, sizeof(*p));
|
||||
asn1cSequenceAdd(p->list, F1AP_RRC_Version_ExtIEs_t, rrcv_ext);
|
||||
rrcv_ext->id = F1AP_ProtocolIE_ID_id_latest_RRC_Version_Enhanced;
|
||||
rrcv_ext->criticality = F1AP_Criticality_ignore;
|
||||
@@ -1112,8 +1112,8 @@ bool decode_f1ap_setup_response(const F1AP_F1AP_PDU_t *pdu, f1ap_setup_resp_t *o
|
||||
_F1_EQ_CHECK_INT(ie->value.present, F1AP_F1SetupResponseIEs__value_PR_RRC_Version);
|
||||
// RRC Version: "This IE is not used in this release."
|
||||
if (ie->value.choice.RRC_Version.iE_Extensions) {
|
||||
F1AP_ProtocolExtensionContainer_10696P228_t *ext =
|
||||
(F1AP_ProtocolExtensionContainer_10696P228_t *)ie->value.choice.RRC_Version.iE_Extensions;
|
||||
F1AP_ProtocolExtensionContainer_11023P233_t *ext =
|
||||
(F1AP_ProtocolExtensionContainer_11023P233_t *)ie->value.choice.RRC_Version.iE_Extensions;
|
||||
if (ext->list.count > 0) {
|
||||
F1AP_RRC_Version_ExtIEs_t *rrcext = ext->list.array[0];
|
||||
OCTET_STRING_t *os = &rrcext->extensionValue.choice.OCTET_STRING_SIZE_3_;
|
||||
|
||||
@@ -114,7 +114,7 @@ bool decode_initial_ul_rrc_message_transfer(const F1AP_F1AP_PDU_t *pdu, f1ap_ini
|
||||
memset(out, 0, sizeof(*out));
|
||||
|
||||
F1AP_InitialULRRCMessageTransfer_t *container = &pdu->choice.initiatingMessage->value.choice.InitialULRRCMessageTransfer;
|
||||
F1AP_ProtocolIE_Container_10659P31_t *pIEs = &container->protocolIEs;
|
||||
F1AP_ProtocolIE_Container_10986P31_t *pIEs = &container->protocolIEs;
|
||||
F1AP_InitialULRRCMessageTransferIEs_t *ie;
|
||||
|
||||
F1AP_LIB_FIND_IE(F1AP_InitialULRRCMessageTransferIEs_t, ie, &pIEs->list, F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID, true);
|
||||
@@ -259,7 +259,7 @@ bool decode_ul_rrc_message_transfer(const F1AP_F1AP_PDU_t *pdu, f1ap_ul_rrc_mess
|
||||
DevAssert(pdu != NULL);
|
||||
|
||||
F1AP_ULRRCMessageTransfer_t *container = &pdu->choice.initiatingMessage->value.choice.ULRRCMessageTransfer;
|
||||
F1AP_ProtocolIE_Container_10659P33_t *pIEs = &container->protocolIEs;
|
||||
F1AP_ProtocolIE_Container_10986P33_t *pIEs = &container->protocolIEs;
|
||||
F1AP_ULRRCMessageTransferIEs_t *ie;
|
||||
|
||||
// gNB-CU UE F1AP ID (M)
|
||||
@@ -394,7 +394,7 @@ bool decode_dl_rrc_message_transfer(const F1AP_F1AP_PDU_t *pdu, f1ap_dl_rrc_mess
|
||||
|
||||
DevAssert(pdu != NULL);
|
||||
F1AP_DLRRCMessageTransfer_t *container = &pdu->choice.initiatingMessage->value.choice.DLRRCMessageTransfer;
|
||||
F1AP_ProtocolIE_Container_10659P32_t *pIEs = &container->protocolIEs;
|
||||
F1AP_ProtocolIE_Container_10986P32_t *pIEs = &container->protocolIEs;
|
||||
F1AP_DLRRCMessageTransferIEs_t *ie;
|
||||
// gNB-CU UE F1AP ID (M)
|
||||
F1AP_LIB_FIND_IE(F1AP_DLRRCMessageTransferIEs_t, ie, &pIEs->list, F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID, true);
|
||||
|
||||
@@ -57,7 +57,7 @@ static F1AP_CUtoDURRCInformation_t encode_cu_to_du_rrc_info(const f1ap_cu_to_du_
|
||||
}
|
||||
|
||||
/* optional: HandoverPreparationInformation */
|
||||
F1AP_ProtocolExtensionContainer_10696P60_t *p = NULL;
|
||||
F1AP_ProtocolExtensionContainer_11023P60_t *p = NULL;
|
||||
if (cu2du->ho_prep_info) {
|
||||
p = calloc_or_fail(1, sizeof(*p));
|
||||
enc.iE_Extensions = (struct F1AP_ProtocolExtensionContainer *)p;
|
||||
@@ -104,7 +104,7 @@ static bool decode_cu_to_du_rrc_info(f1ap_cu_to_du_rrc_info_t *dec, const F1AP_C
|
||||
*dec->meas_config = create_byte_array(mc->size, (uint8_t*)mc->buf);
|
||||
}
|
||||
if (cu2du->iE_Extensions) {
|
||||
const F1AP_ProtocolExtensionContainer_10696P60_t *ext = (const F1AP_ProtocolExtensionContainer_10696P60_t *)cu2du->iE_Extensions;
|
||||
const F1AP_ProtocolExtensionContainer_11023P60_t *ext = (const F1AP_ProtocolExtensionContainer_11023P60_t *)cu2du->iE_Extensions;
|
||||
for (int i = 0; i < ext->list.count; ++i) {
|
||||
const F1AP_CUtoDURRCInformation_ExtIEs_t *cu2du_info_ext = ext->list.array[i];
|
||||
switch (cu2du_info_ext->id) {
|
||||
@@ -689,7 +689,7 @@ static F1AP_DRBs_ToBeSetup_List_t encode_drbs_to_setup(int n, const f1ap_drb_to_
|
||||
|
||||
it->rLCMode = rlc_mode_to_asn1(drb->rlc_mode);
|
||||
|
||||
F1AP_ProtocolExtensionContainer_10696P82_t *ext = calloc_or_fail(1, sizeof(*ext));
|
||||
F1AP_ProtocolExtensionContainer_11023P82_t *ext = calloc_or_fail(1, sizeof(*ext));
|
||||
it->iE_Extensions = (struct F1AP_ProtocolExtensionContainer *)ext;
|
||||
asn1cSequenceAdd(ext->list, F1AP_DRBs_ToBeSetup_ItemExtIEs_t, ext_ie);
|
||||
ext_ie->id = F1AP_ProtocolIE_ID_id_DLPDCPSNLength;
|
||||
@@ -746,7 +746,7 @@ static F1AP_DRBs_ToBeSetupMod_List_t encode_drbs_to_setupmod(int n, const f1ap_d
|
||||
if (!drb->dl_pdcp_sn_len && !drb->ul_pdcp_sn_len)
|
||||
continue;
|
||||
|
||||
F1AP_ProtocolExtensionContainer_10696P83_t *ext = calloc_or_fail(1, sizeof(*ext));
|
||||
F1AP_ProtocolExtensionContainer_11023P82_t *ext = calloc_or_fail(1, sizeof(*ext));
|
||||
it->iE_Extensions = (struct F1AP_ProtocolExtensionContainer *)ext;
|
||||
if (drb->dl_pdcp_sn_len) {
|
||||
asn1cSequenceAdd(ext->list, F1AP_DRBs_ToBeSetupMod_ItemExtIEs_t, ext_ie);
|
||||
@@ -804,7 +804,7 @@ static bool decode_drbs_to_setup(const F1AP_DRBs_ToBeSetup_List_t *f1ap, int *n,
|
||||
_F1_CHECK_EXP(rlc_mode_from_asn1(it->rLCMode, &drb->rlc_mode));
|
||||
|
||||
_F1_CHECK_EXP(it->iE_Extensions); // PDCP SN length is under extension, is mandatory
|
||||
const F1AP_ProtocolExtensionContainer_10696P82_t *ext = (const F1AP_ProtocolExtensionContainer_10696P82_t *)it->iE_Extensions;
|
||||
const F1AP_ProtocolExtensionContainer_11023P82_t *ext = (const F1AP_ProtocolExtensionContainer_11023P82_t *)it->iE_Extensions;
|
||||
const F1AP_DRBs_ToBeSetup_ItemExtIEs_t *ie;
|
||||
F1AP_LIB_FIND_IE(F1AP_DRBs_ToBeSetup_ItemExtIEs_t, ie, &ext->list, F1AP_ProtocolIE_ID_id_DLPDCPSNLength, true);
|
||||
|
||||
@@ -870,7 +870,7 @@ static bool decode_drbs_to_setupmod(const F1AP_DRBs_ToBeSetupMod_List_t *f1ap, i
|
||||
|
||||
if (!it->iE_Extensions)
|
||||
continue;
|
||||
const F1AP_ProtocolExtensionContainer_10696P83_t *ext = (const F1AP_ProtocolExtensionContainer_10696P83_t *)it->iE_Extensions;
|
||||
const F1AP_ProtocolExtensionContainer_11023P83_t *ext = (const F1AP_ProtocolExtensionContainer_11023P83_t *)it->iE_Extensions;
|
||||
const F1AP_DRBs_ToBeSetupMod_ItemExtIEs_t *ie;
|
||||
|
||||
for (int j = 0; j < ext->list.count; ++j) {
|
||||
|
||||
Reference in New Issue
Block a user