[Epic-ID: ODUHIGH-516][Task-ID: ODUHIGH-522] Generating the E2SM-KPM code 17/11517/3
authorlal.harshita <Harshita.Lal@radisys.com>
Wed, 19 Jul 2023 06:19:00 +0000 (11:49 +0530)
committerlal.harshita <Harshita.Lal@radisys.com>
Mon, 31 Jul 2023 09:53:00 +0000 (15:23 +0530)
Change-Id: I1ebbb105cb51aa92f9992d762d230f9a6a1a5225
Signed-off-by: lal.harshita <Harshita.Lal@radisys.com>
238 files changed:
build/common/asn_e2ap_kpm.mak [new file with mode: 0644]
build/odu/makefile
src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFPointer.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFPointer.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFRegionID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFRegionID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFSetID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/AMFSetID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinIndex.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinIndex.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeDefinition.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeDefinition.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeValue.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/BinRangeValue.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/CGI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/CGI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/EUTRA-CGI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/EUTRA-CGI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/EUTRACellIdentity.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/EUTRACellIdentity.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/FiveQI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/FiveQI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GNB-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GUAMI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GUAMI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GUMMEI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GUMMEI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalENB-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalENB-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalGNB-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalGNB-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GranularityPeriod.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/GranularityPeriod.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LabelInfoItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LabelInfoItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LabelInfoList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LabelInfoList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LogicalOR.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/LogicalOR.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-Code.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-Code.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-Group-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-Group-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/Makefile.am.libasncodec [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingCondList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementData.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementData.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementDataItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementDataItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfoItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfoItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfoList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementInfoList.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementLabel.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementLabel.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementRecord.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementRecord.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementRecordItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementRecordItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementType.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementType.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementTypeID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementTypeID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementTypeName.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/MeasurementTypeName.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NR-CGI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NR-CGI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NRCellIdentity.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NRCellIdentity.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NULL.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NULL.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NativeReal.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NativeReal.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NgENB-ID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/NgENB-ID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/PLMNIdentity.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/PLMNIdentity.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/QCI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/QCI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/QosFlowIdentifier.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/QosFlowIdentifier.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RANUEID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RANUEID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RANfunction-Name.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RANfunction-Name.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/REAL.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/REAL.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Format-Type.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Format-Type.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Style-Name.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Style-Name.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Style-Type.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/RIC-Style-Type.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/S-NSSAI.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/S-NSSAI.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/SD.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/SD.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/SST.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/SST.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Expression.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Expression.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Type.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Type.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Value.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCond-Value.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCondInfo.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TestCondInfo.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TimeStamp.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/TimeStamp.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-EN-GNB.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-EN-GNB.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-ENB.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-ENB.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-DU.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB-DU.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-GNB.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-NG-ENB.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID-NG-ENB.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEID.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEMeasurementReportList.c [new file with mode: 0644]
src/codec_utils/E2SM_KPM/UEMeasurementReportList.h [new file with mode: 0644]
src/codec_utils/common/asn_constant.h

diff --git a/build/common/asn_e2ap_kpm.mak b/build/common/asn_e2ap_kpm.mak
new file mode 100644 (file)
index 0000000..be4c958
--- /dev/null
@@ -0,0 +1,53 @@
+################################################################################
+#   Copyright (c) [2017-2019] [Radisys]                                        #
+#                                                                              #
+#   Licensed under the Apache License, Version 2.0 (the "License");            #
+#   you may not use this file except in compliance with the License.           #
+#   You may obtain a copy of the License at                                    #
+#                                                                              #
+#       http://www.apache.org/licenses/LICENSE-2.0                             #
+#                                                                              #
+#   Unless required by applicable law or agreed to in writing, software        #
+#   distributed under the License is distributed on an "AS IS" BASIS,          #
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
+#   See the License for the specific language governing permissions and        #
+#   limitations under the License.                                             #
+################################################################################
+
+# This is makefile for ASN
+
+include ../common/rsys_fancy.mak
+include ../common/env.mak
+
+COLOR=$(COLOR_RED)
+
+SRC_DIR=$(ROOT_DIR)/src/codec_utils/E2SM_KPM
+C_SRCS=$(wildcard $(SRC_DIR)/*.c)
+C_OBJS=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(C_SRCS))
+
+lib: $(LIB_DIR)/libasn_e2ap.a
+include $(COM_BUILD_DIR)/compile.mak
+
+I_OPTS+=-I$(SRC_DIR)/../common
+I_OPTS+=-I$(SRC_DIR)/../E2AP
+
+#-------------------------------------------------------------#
+#Linker macros
+#-------------------------------------------------------------#
+$(LIB_DIR)/libasn_e2ap.a:$(C_OBJS)
+                 @echo -e "Creating Archive $(COLOR) $@ $(REVERT_COLOR)"
+                 $(Q)ar -cr $(LIB_DIR)/libasn_e2ap.a $(C_OBJS) 
+
+
+#-------------------------------------------------------------#
+#Clean macros
+#-------------------------------------------------------------#
+clean:
+                 @echo -e "$(COLOR_RED)Cleaning ASN$(REVERT_COLOR)"
+                 @echo $(SRC_DIR) $(CM_DIR)
+                 $(Q)\rm -f $(LIB_DIR)/libasn_e2ap.a $(C_OBJS) 
+
+#-------------------------------------------------------------#
+#End of File
+#-------------------------------------------------------------#
+
index d2d994e..290b055 100644 (file)
@@ -188,6 +188,7 @@ du:
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_common.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_f1ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+               $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap_kpm.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_rrc.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/du_app.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/rlc.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
@@ -213,6 +214,7 @@ clean_odu:
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+               $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_e2ap_kpm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/rlc.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -j -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
diff --git a/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.c
new file mode 100644 (file)
index 0000000..88c16fd
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMF-UE-NGAP-ID.h"
+
+int
+AMF_UE_NGAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const INTEGER_t *st = (const INTEGER_t *)sptr;
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(asn_INTEGER2long(st, &value)) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value too large (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if((value >= 0 && value <= 1099511627775)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using INTEGER,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+       { 8, 1 }        /* (0..1099511627775) */,
+       -1};
+asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       40, -1,  0,  1099511627775 }   /* (0..1099511627775) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMF_UE_NGAP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID = {
+       "AMF-UE-NGAP-ID",
+       "AMF-UE-NGAP-ID",
+       &asn_OP_INTEGER,
+       asn_DEF_AMF_UE_NGAP_ID_tags_1,
+       sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+               /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+       asn_DEF_AMF_UE_NGAP_ID_tags_1,  /* Same as above */
+       sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1)
+               /sizeof(asn_DEF_AMF_UE_NGAP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_AMF_UE_NGAP_ID_constr_1, &asn_PER_type_AMF_UE_NGAP_ID_constr_1, AMF_UE_NGAP_ID_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h b/src/codec_utils/E2SM_KPM/AMF-UE-NGAP-ID.h
new file mode 100644 (file)
index 0000000..1f00f60
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AMF_UE_NGAP_ID_H_
+#define        _AMF_UE_NGAP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <INTEGER.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMF-UE-NGAP-ID */
+typedef INTEGER_t       AMF_UE_NGAP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMF_UE_NGAP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMF_UE_NGAP_ID;
+asn_struct_free_f AMF_UE_NGAP_ID_free;
+asn_struct_print_f AMF_UE_NGAP_ID_print;
+asn_constr_check_f AMF_UE_NGAP_ID_constraint;
+ber_type_decoder_f AMF_UE_NGAP_ID_decode_ber;
+der_type_encoder_f AMF_UE_NGAP_ID_encode_der;
+xer_type_decoder_f AMF_UE_NGAP_ID_decode_xer;
+xer_type_encoder_f AMF_UE_NGAP_ID_encode_xer;
+oer_type_decoder_f AMF_UE_NGAP_ID_decode_oer;
+oer_type_encoder_f AMF_UE_NGAP_ID_encode_oer;
+per_type_decoder_f AMF_UE_NGAP_ID_decode_uper;
+per_type_encoder_f AMF_UE_NGAP_ID_encode_uper;
+per_type_decoder_f AMF_UE_NGAP_ID_decode_aper;
+per_type_encoder_f AMF_UE_NGAP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMF_UE_NGAP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/AMFPointer.c b/src/codec_utils/E2SM_KPM/AMFPointer.c
new file mode 100644 (file)
index 0000000..43fa0e1
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFPointer.h"
+
+int
+AMFPointer_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 6)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFPointer_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+asn_per_constraints_t asn_PER_type_AMFPointer_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFPointer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFPointer = {
+       "AMFPointer",
+       "AMFPointer",
+       &asn_OP_BIT_STRING,
+       asn_DEF_AMFPointer_tags_1,
+       sizeof(asn_DEF_AMFPointer_tags_1)
+               /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+       asn_DEF_AMFPointer_tags_1,      /* Same as above */
+       sizeof(asn_DEF_AMFPointer_tags_1)
+               /sizeof(asn_DEF_AMFPointer_tags_1[0]), /* 1 */
+       { &asn_OER_type_AMFPointer_constr_1, &asn_PER_type_AMFPointer_constr_1, AMFPointer_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/AMFPointer.h b/src/codec_utils/E2SM_KPM/AMFPointer.h
new file mode 100644 (file)
index 0000000..bbbf2a1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AMFPointer_H_
+#define        _AMFPointer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFPointer */
+typedef BIT_STRING_t    AMFPointer_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFPointer_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFPointer;
+asn_struct_free_f AMFPointer_free;
+asn_struct_print_f AMFPointer_print;
+asn_constr_check_f AMFPointer_constraint;
+ber_type_decoder_f AMFPointer_decode_ber;
+der_type_encoder_f AMFPointer_encode_der;
+xer_type_decoder_f AMFPointer_decode_xer;
+xer_type_encoder_f AMFPointer_encode_xer;
+oer_type_decoder_f AMFPointer_decode_oer;
+oer_type_encoder_f AMFPointer_encode_oer;
+per_type_decoder_f AMFPointer_decode_uper;
+per_type_encoder_f AMFPointer_encode_uper;
+per_type_decoder_f AMFPointer_decode_aper;
+per_type_encoder_f AMFPointer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFPointer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/AMFRegionID.c b/src/codec_utils/E2SM_KPM/AMFRegionID.c
new file mode 100644 (file)
index 0000000..8a5d8bf
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFRegionID.h"
+
+int
+AMFRegionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 8)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFRegionID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFRegionID = {
+       "AMFRegionID",
+       "AMFRegionID",
+       &asn_OP_BIT_STRING,
+       asn_DEF_AMFRegionID_tags_1,
+       sizeof(asn_DEF_AMFRegionID_tags_1)
+               /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+       asn_DEF_AMFRegionID_tags_1,     /* Same as above */
+       sizeof(asn_DEF_AMFRegionID_tags_1)
+               /sizeof(asn_DEF_AMFRegionID_tags_1[0]), /* 1 */
+       { &asn_OER_type_AMFRegionID_constr_1, &asn_PER_type_AMFRegionID_constr_1, AMFRegionID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/AMFRegionID.h b/src/codec_utils/E2SM_KPM/AMFRegionID.h
new file mode 100644 (file)
index 0000000..b6c7826
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AMFRegionID_H_
+#define        _AMFRegionID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFRegionID */
+typedef BIT_STRING_t    AMFRegionID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFRegionID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFRegionID;
+asn_struct_free_f AMFRegionID_free;
+asn_struct_print_f AMFRegionID_print;
+asn_constr_check_f AMFRegionID_constraint;
+ber_type_decoder_f AMFRegionID_decode_ber;
+der_type_encoder_f AMFRegionID_encode_der;
+xer_type_decoder_f AMFRegionID_decode_xer;
+xer_type_encoder_f AMFRegionID_encode_xer;
+oer_type_decoder_f AMFRegionID_decode_oer;
+oer_type_encoder_f AMFRegionID_encode_oer;
+per_type_decoder_f AMFRegionID_decode_uper;
+per_type_encoder_f AMFRegionID_encode_uper;
+per_type_decoder_f AMFRegionID_decode_aper;
+per_type_encoder_f AMFRegionID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFRegionID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/AMFSetID.c b/src/codec_utils/E2SM_KPM/AMFSetID.c
new file mode 100644 (file)
index 0000000..69d8ffc
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMFSetID.h"
+
+int
+AMFSetID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 10)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AMFSetID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+asn_per_constraints_t asn_PER_type_AMFSetID_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMFSetID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMFSetID = {
+       "AMFSetID",
+       "AMFSetID",
+       &asn_OP_BIT_STRING,
+       asn_DEF_AMFSetID_tags_1,
+       sizeof(asn_DEF_AMFSetID_tags_1)
+               /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+       asn_DEF_AMFSetID_tags_1,        /* Same as above */
+       sizeof(asn_DEF_AMFSetID_tags_1)
+               /sizeof(asn_DEF_AMFSetID_tags_1[0]), /* 1 */
+       { &asn_OER_type_AMFSetID_constr_1, &asn_PER_type_AMFSetID_constr_1, AMFSetID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/AMFSetID.h b/src/codec_utils/E2SM_KPM/AMFSetID.h
new file mode 100644 (file)
index 0000000..9e2413c
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AMFSetID_H_
+#define        _AMFSetID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMFSetID */
+typedef BIT_STRING_t    AMFSetID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMFSetID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMFSetID;
+asn_struct_free_f AMFSetID_free;
+asn_struct_print_f AMFSetID_print;
+asn_constr_check_f AMFSetID_constraint;
+ber_type_decoder_f AMFSetID_decode_ber;
+der_type_encoder_f AMFSetID_encode_der;
+xer_type_decoder_f AMFSetID_decode_xer;
+xer_type_encoder_f AMFSetID_encode_xer;
+oer_type_decoder_f AMFSetID_decode_oer;
+oer_type_encoder_f AMFSetID_encode_oer;
+per_type_decoder_f AMFSetID_decode_uper;
+per_type_encoder_f AMFSetID_encode_uper;
+per_type_decoder_f AMFSetID_decode_aper;
+per_type_encoder_f AMFSetID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMFSetID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/BinIndex.c b/src/codec_utils/E2SM_KPM/BinIndex.c
new file mode 100644 (file)
index 0000000..ce9c41b
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinIndex.h"
+
+int
+BinIndex_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_BinIndex_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_BinIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_BinIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BinIndex = {
+       "BinIndex",
+       "BinIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_BinIndex_tags_1,
+       sizeof(asn_DEF_BinIndex_tags_1)
+               /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */
+       asn_DEF_BinIndex_tags_1,        /* Same as above */
+       sizeof(asn_DEF_BinIndex_tags_1)
+               /sizeof(asn_DEF_BinIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_BinIndex_constr_1, &asn_PER_type_BinIndex_constr_1, BinIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/BinIndex.h b/src/codec_utils/E2SM_KPM/BinIndex.h
new file mode 100644 (file)
index 0000000..d71a238
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BinIndex_H_
+#define        _BinIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BinIndex */
+typedef long    BinIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_BinIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_BinIndex;
+asn_struct_free_f BinIndex_free;
+asn_struct_print_f BinIndex_print;
+asn_constr_check_f BinIndex_constraint;
+ber_type_decoder_f BinIndex_decode_ber;
+der_type_encoder_f BinIndex_encode_der;
+xer_type_decoder_f BinIndex_decode_xer;
+xer_type_encoder_f BinIndex_encode_xer;
+oer_type_decoder_f BinIndex_decode_oer;
+oer_type_encoder_f BinIndex_encode_oer;
+per_type_decoder_f BinIndex_decode_uper;
+per_type_encoder_f BinIndex_encode_uper;
+per_type_decoder_f BinIndex_decode_aper;
+per_type_encoder_f BinIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/BinRangeDefinition.c b/src/codec_utils/E2SM_KPM/BinRangeDefinition.c
new file mode 100644 (file)
index 0000000..f62144b
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeDefinition.h"
+
+#include "BinRangeList.h"
+asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeDefinition, binRangeListX),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeListX"
+               },
+       { ATF_POINTER, 2, offsetof(struct BinRangeDefinition, binRangeListY),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeListY"
+               },
+       { ATF_POINTER, 1, offsetof(struct BinRangeDefinition, binRangeListZ),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeListZ"
+               },
+};
+static const int asn_MAP_BinRangeDefinition_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BinRangeDefinition_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeDefinition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binRangeListX */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* binRangeListY */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeListZ */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1 = {
+       sizeof(struct BinRangeDefinition),
+       offsetof(struct BinRangeDefinition, _asn_ctx),
+       asn_MAP_BinRangeDefinition_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BinRangeDefinition_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition = {
+       "BinRangeDefinition",
+       "BinRangeDefinition",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BinRangeDefinition_tags_1,
+       sizeof(asn_DEF_BinRangeDefinition_tags_1)
+               /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */
+       asn_DEF_BinRangeDefinition_tags_1,      /* Same as above */
+       sizeof(asn_DEF_BinRangeDefinition_tags_1)
+               /sizeof(asn_DEF_BinRangeDefinition_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BinRangeDefinition_1,
+       3,      /* Elements count */
+       &asn_SPC_BinRangeDefinition_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/BinRangeDefinition.h b/src/codec_utils/E2SM_KPM/BinRangeDefinition.h
new file mode 100644 (file)
index 0000000..30d3232
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BinRangeDefinition_H_
+#define        _BinRangeDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BinRangeList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeList;
+
+/* BinRangeDefinition */
+typedef struct BinRangeDefinition {
+       BinRangeList_t   binRangeListX;
+       struct BinRangeList     *binRangeListY; /* OPTIONAL */
+       struct BinRangeList     *binRangeListZ; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BinRangeDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeDefinition;
+extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeDefinition_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeDefinition_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeDefinition_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/BinRangeItem.c b/src/codec_utils/E2SM_KPM/BinRangeItem.c
new file mode 100644 (file)
index 0000000..0fdfa1f
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeItem.h"
+
+asn_TYPE_member_t asn_MBR_BinRangeItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, binIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, startValue),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_BinRangeValue,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "startValue"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeItem, endValue),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_BinRangeValue,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "endValue"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BinRangeItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* binIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startValue */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* endValue */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1 = {
+       sizeof(struct BinRangeItem),
+       offsetof(struct BinRangeItem, _asn_ctx),
+       asn_MAP_BinRangeItem_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeItem = {
+       "BinRangeItem",
+       "BinRangeItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BinRangeItem_tags_1,
+       sizeof(asn_DEF_BinRangeItem_tags_1)
+               /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */
+       asn_DEF_BinRangeItem_tags_1,    /* Same as above */
+       sizeof(asn_DEF_BinRangeItem_tags_1)
+               /sizeof(asn_DEF_BinRangeItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BinRangeItem_1,
+       3,      /* Elements count */
+       &asn_SPC_BinRangeItem_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/BinRangeItem.h b/src/codec_utils/E2SM_KPM/BinRangeItem.h
new file mode 100644 (file)
index 0000000..3b08c0f
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BinRangeItem_H_
+#define        _BinRangeItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BinIndex.h"
+#include "BinRangeValue.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BinRangeItem */
+typedef struct BinRangeItem {
+       BinIndex_t       binIndex;
+       BinRangeValue_t  startValue;
+       BinRangeValue_t  endValue;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BinRangeItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_BinRangeItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/BinRangeList.c b/src/codec_utils/E2SM_KPM/BinRangeList.c
new file mode 100644 (file)
index 0000000..2f7e9d4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeList.h"
+
+#include "BinRangeItem.h"
+static asn_oer_constraints_t asn_OER_type_BinRangeList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_BinRangeList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BinRangeList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BinRangeItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BinRangeList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1 = {
+       sizeof(struct BinRangeList),
+       offsetof(struct BinRangeList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeList = {
+       "BinRangeList",
+       "BinRangeList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_BinRangeList_tags_1,
+       sizeof(asn_DEF_BinRangeList_tags_1)
+               /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */
+       asn_DEF_BinRangeList_tags_1,    /* Same as above */
+       sizeof(asn_DEF_BinRangeList_tags_1)
+               /sizeof(asn_DEF_BinRangeList_tags_1[0]), /* 1 */
+       { &asn_OER_type_BinRangeList_constr_1, &asn_PER_type_BinRangeList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_BinRangeList_1,
+       1,      /* Single element */
+       &asn_SPC_BinRangeList_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/BinRangeList.h b/src/codec_utils/E2SM_KPM/BinRangeList.h
new file mode 100644 (file)
index 0000000..984ecfc
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BinRangeList_H_
+#define        _BinRangeList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeItem;
+
+/* BinRangeList */
+typedef struct BinRangeList {
+       A_SEQUENCE_OF(struct BinRangeItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BinRangeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeList;
+extern asn_SET_OF_specifics_t asn_SPC_BinRangeList_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeList_1[1];
+extern asn_per_constraints_t asn_PER_type_BinRangeList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/BinRangeValue.c b/src/codec_utils/E2SM_KPM/BinRangeValue.c
new file mode 100644 (file)
index 0000000..9d5da1e
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BinRangeValue.h"
+
+static asn_oer_constraints_t asn_OER_type_BinRangeValue_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BinRangeValue_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueInt),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueInt"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BinRangeValue, choice.valueReal),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeReal,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueReal"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_BinRangeValue_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* valueReal */
+};
+asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1 = {
+       sizeof(struct BinRangeValue),
+       offsetof(struct BinRangeValue, _asn_ctx),
+       offsetof(struct BinRangeValue, present),
+       sizeof(((struct BinRangeValue *)0)->present),
+       asn_MAP_BinRangeValue_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_BinRangeValue = {
+       "BinRangeValue",
+       "BinRangeValue",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_BinRangeValue_constr_1, &asn_PER_type_BinRangeValue_constr_1, CHOICE_constraint },
+       asn_MBR_BinRangeValue_1,
+       2,      /* Elements count */
+       &asn_SPC_BinRangeValue_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/BinRangeValue.h b/src/codec_utils/E2SM_KPM/BinRangeValue.h
new file mode 100644 (file)
index 0000000..974726e
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BinRangeValue_H_
+#define        _BinRangeValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeReal.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BinRangeValue_PR {
+       BinRangeValue_PR_NOTHING,       /* No components present */
+       BinRangeValue_PR_valueInt,
+       BinRangeValue_PR_valueReal
+       /* Extensions may appear below */
+       
+} BinRangeValue_PR;
+
+/* BinRangeValue */
+typedef struct BinRangeValue {
+       BinRangeValue_PR present;
+       union BinRangeValue_u {
+               long     valueInt;
+               double   valueReal;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BinRangeValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BinRangeValue;
+extern asn_CHOICE_specifics_t asn_SPC_BinRangeValue_specs_1;
+extern asn_TYPE_member_t asn_MBR_BinRangeValue_1[2];
+extern asn_per_constraints_t asn_PER_type_BinRangeValue_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BinRangeValue_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/CGI.c b/src/codec_utils/E2SM_KPM/CGI.c
new file mode 100644 (file)
index 0000000..6652b04
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CGI.h"
+
+#include "NR-CGI.h"
+#include "EUTRA-CGI.h"
+static asn_oer_constraints_t asn_OER_type_CGI_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CGI_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CGI_1[] = {
+       { ATF_POINTER, 0, offsetof(struct CGI, choice.nR_CGI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NR_CGI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nR-CGI"
+               },
+       { ATF_POINTER, 0, offsetof(struct CGI, choice.eUTRA_CGI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_CGI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eUTRA-CGI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRA-CGI */
+};
+asn_CHOICE_specifics_t asn_SPC_CGI_specs_1 = {
+       sizeof(struct CGI),
+       offsetof(struct CGI, _asn_ctx),
+       offsetof(struct CGI, present),
+       sizeof(((struct CGI *)0)->present),
+       asn_MAP_CGI_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CGI = {
+       "CGI",
+       "CGI",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_CGI_constr_1, &asn_PER_type_CGI_constr_1, CHOICE_constraint },
+       asn_MBR_CGI_1,
+       2,      /* Elements count */
+       &asn_SPC_CGI_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/CGI.h b/src/codec_utils/E2SM_KPM/CGI.h
new file mode 100644 (file)
index 0000000..574e0ed
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CGI_H_
+#define        _CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CGI_PR {
+       CGI_PR_NOTHING, /* No components present */
+       CGI_PR_nR_CGI,
+       CGI_PR_eUTRA_CGI
+       /* Extensions may appear below */
+       
+} CGI_PR;
+
+/* Forward declarations */
+struct NR_CGI;
+struct EUTRA_CGI;
+
+/* CGI */
+typedef struct CGI {
+       CGI_PR present;
+       union CGI_u {
+               struct NR_CGI   *nR_CGI;
+               struct EUTRA_CGI        *eUTRA_CGI;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CGI;
+extern asn_CHOICE_specifics_t asn_SPC_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_CGI_1[2];
+extern asn_per_constraints_t asn_PER_type_CGI_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CGI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.c
new file mode 100644 (file)
index 0000000..a7b9aaf
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DistMeasurementBinRangeItem.h"
+
+asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, measType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasurementType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DistMeasurementBinRangeItem, binRangeDef),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeDefinition,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeDef"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DistMeasurementBinRangeItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1 = {
+       sizeof(struct DistMeasurementBinRangeItem),
+       offsetof(struct DistMeasurementBinRangeItem, _asn_ctx),
+       asn_MAP_DistMeasurementBinRangeItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem = {
+       "DistMeasurementBinRangeItem",
+       "DistMeasurementBinRangeItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DistMeasurementBinRangeItem_tags_1,
+       sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1)
+               /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */
+       asn_DEF_DistMeasurementBinRangeItem_tags_1,     /* Same as above */
+       sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1)
+               /sizeof(asn_DEF_DistMeasurementBinRangeItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DistMeasurementBinRangeItem_1,
+       2,      /* Elements count */
+       &asn_SPC_DistMeasurementBinRangeItem_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeItem.h
new file mode 100644 (file)
index 0000000..8573fe2
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DistMeasurementBinRangeItem_H_
+#define        _DistMeasurementBinRangeItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "BinRangeDefinition.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DistMeasurementBinRangeItem */
+typedef struct DistMeasurementBinRangeItem {
+       MeasurementType_t        measType;
+       BinRangeDefinition_t     binRangeDef;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DistMeasurementBinRangeItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_DistMeasurementBinRangeItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DistMeasurementBinRangeItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.c
new file mode 100644 (file)
index 0000000..a85dcd6
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DistMeasurementBinRangeList.h"
+
+#include "DistMeasurementBinRangeItem.h"
+static asn_oer_constraints_t asn_OER_type_DistMeasurementBinRangeList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_DistMeasurementBinRangeItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DistMeasurementBinRangeList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1 = {
+       sizeof(struct DistMeasurementBinRangeList),
+       offsetof(struct DistMeasurementBinRangeList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList = {
+       "DistMeasurementBinRangeList",
+       "DistMeasurementBinRangeList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_DistMeasurementBinRangeList_tags_1,
+       sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1)
+               /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */
+       asn_DEF_DistMeasurementBinRangeList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1)
+               /sizeof(asn_DEF_DistMeasurementBinRangeList_tags_1[0]), /* 1 */
+       { &asn_OER_type_DistMeasurementBinRangeList_constr_1, &asn_PER_type_DistMeasurementBinRangeList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_DistMeasurementBinRangeList_1,
+       1,      /* Single element */
+       &asn_SPC_DistMeasurementBinRangeList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h b/src/codec_utils/E2SM_KPM/DistMeasurementBinRangeList.h
new file mode 100644 (file)
index 0000000..62fc238
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DistMeasurementBinRangeList_H_
+#define        _DistMeasurementBinRangeList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct DistMeasurementBinRangeItem;
+
+/* DistMeasurementBinRangeList */
+typedef struct DistMeasurementBinRangeList {
+       A_SEQUENCE_OF(struct DistMeasurementBinRangeItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DistMeasurementBinRangeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DistMeasurementBinRangeList;
+extern asn_SET_OF_specifics_t asn_SPC_DistMeasurementBinRangeList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DistMeasurementBinRangeList_1[1];
+extern asn_per_constraints_t asn_PER_type_DistMeasurementBinRangeList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DistMeasurementBinRangeList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.c
new file mode 100644 (file)
index 0000000..ed3aa17
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+
+#include "CGI.h"
+#include "DistMeasurementBinRangeList.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, measInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measInfoList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format1, granulPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GranularityPeriod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "granulPeriod"
+               },
+       { ATF_POINTER, 2, offsetof(struct E2SM_KPM_ActionDefinition_Format1, cellGlobalID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CGI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellGlobalID"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format1, distMeasBinRangeInfo),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DistMeasurementBinRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "distMeasBinRangeInfo"
+               },
+};
+static const int asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellGlobalID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* distMeasBinRangeInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition_Format1),
+       offsetof(struct E2SM_KPM_ActionDefinition_Format1, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_Format1_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_ActionDefinition_Format1_oms_1,        /* Optional members */
+       1, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1 = {
+       "E2SM-KPM-ActionDefinition-Format1",
+       "E2SM-KPM-ActionDefinition-Format1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_Format1_1,
+       4,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format1.h
new file mode 100644 (file)
index 0000000..8aca249
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_Format1_H_
+#define        _E2SM_KPM_ActionDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementInfoList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CGI;
+struct DistMeasurementBinRangeList;
+
+/* E2SM-KPM-ActionDefinition-Format1 */
+typedef struct E2SM_KPM_ActionDefinition_Format1 {
+       MeasurementInfoList_t    measInfoList;
+       GranularityPeriod_t      granulPeriod;
+       struct CGI      *cellGlobalID;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct DistMeasurementBinRangeList      *distMeasBinRangeInfo;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format1_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.c
new file mode 100644 (file)
index 0000000..bfee31d
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format2.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, ueID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format2, subscriptInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subscriptInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition_Format2),
+       offsetof(struct E2SM_KPM_ActionDefinition_Format2, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_Format2_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2 = {
+       "E2SM-KPM-ActionDefinition-Format2",
+       "E2SM-KPM-ActionDefinition-Format2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_Format2_1,
+       2,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format2.h
new file mode 100644 (file)
index 0000000..8c66bde
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_Format2_H_
+#define        _E2SM_KPM_ActionDefinition_Format2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format2 */
+typedef struct E2SM_KPM_ActionDefinition_Format2 {
+       UEID_t   ueID;
+       E2SM_KPM_ActionDefinition_Format1_t      subscriptInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format2;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format2_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format2_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.c
new file mode 100644 (file)
index 0000000..f80a834
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format3.h"
+
+#include "CGI.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, measCondList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementCondList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measCondList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format3, granulPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GranularityPeriod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "granulPeriod"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_ActionDefinition_Format3, cellGlobalID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CGI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellGlobalID"
+               },
+};
+static const int asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measCondList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* granulPeriod */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellGlobalID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition_Format3),
+       offsetof(struct E2SM_KPM_ActionDefinition_Format3, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_Format3_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_ActionDefinition_Format3_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3 = {
+       "E2SM-KPM-ActionDefinition-Format3",
+       "E2SM-KPM-ActionDefinition-Format3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format3_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_Format3_1,
+       3,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format3.h
new file mode 100644 (file)
index 0000000..543f93d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_Format3_H_
+#define        _E2SM_KPM_ActionDefinition_Format3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementCondList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CGI;
+
+/* E2SM-KPM-ActionDefinition-Format3 */
+typedef struct E2SM_KPM_ActionDefinition_Format3 {
+       MeasurementCondList_t    measCondList;
+       GranularityPeriod_t      granulPeriod;
+       struct CGI      *cellGlobalID;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format3;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format3_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format3_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format3_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.c
new file mode 100644 (file)
index 0000000..45cd462
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format4.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, matchingUeCondList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingUeCondPerSubList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingUeCondList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format4, subscriptionInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subscriptionInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUeCondList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition_Format4),
+       offsetof(struct E2SM_KPM_ActionDefinition_Format4, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_Format4_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4 = {
+       "E2SM-KPM-ActionDefinition-Format4",
+       "E2SM-KPM-ActionDefinition-Format4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format4_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_Format4_1,
+       2,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format4.h
new file mode 100644 (file)
index 0000000..cf0d764
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_Format4_H_
+#define        _E2SM_KPM_ActionDefinition_Format4_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingUeCondPerSubList.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format4 */
+typedef struct E2SM_KPM_ActionDefinition_Format4 {
+       MatchingUeCondPerSubList_t       matchingUeCondList;
+       E2SM_KPM_ActionDefinition_Format1_t      subscriptionInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format4_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format4;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format4_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format4_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format4_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.c
new file mode 100644 (file)
index 0000000..ab14ae1
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition-Format5.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, matchingUEidList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingUEidPerSubList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingUEidList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition_Format5, subscriptionInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subscriptionInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingUEidList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* subscriptionInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition_Format5),
+       offsetof(struct E2SM_KPM_ActionDefinition_Format5, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_Format5_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5 = {
+       "E2SM-KPM-ActionDefinition-Format5",
+       "E2SM-KPM-ActionDefinition-Format5",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_Format5_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_Format5_1,
+       2,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition-Format5.h
new file mode 100644 (file)
index 0000000..9f66fa1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_Format5_H_
+#define        _E2SM_KPM_ActionDefinition_Format5_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingUEidPerSubList.h"
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-ActionDefinition-Format5 */
+typedef struct E2SM_KPM_ActionDefinition_Format5 {
+       MatchingUEidPerSubList_t         matchingUEidList;
+       E2SM_KPM_ActionDefinition_Format1_t      subscriptionInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_Format5_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition_Format5;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_Format5_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_Format5_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_Format5_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.c
new file mode 100644 (file)
index 0000000..69c2cd6
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-ActionDefinition.h"
+
+#include "E2SM-KPM-ActionDefinition-Format1.h"
+#include "E2SM-KPM-ActionDefinition-Format2.h"
+#include "E2SM-KPM-ActionDefinition-Format3.h"
+#include "E2SM-KPM-ActionDefinition-Format4.h"
+#include "E2SM-KPM-ActionDefinition-Format5.h"
+static asn_oer_constraints_t asn_OER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_actionDefinition_formats_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }    /* (0..2,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_actionDefinition_formats_3[] = {
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-Format1"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-Format2"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format3),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-Format3"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format4),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-Format4"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, choice.actionDefinition_Format5),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_ActionDefinition_Format5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-Format5"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_actionDefinition_formats_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionDefinition-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* actionDefinition-Format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* actionDefinition-Format3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* actionDefinition-Format4 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* actionDefinition-Format5 */
+};
+static asn_CHOICE_specifics_t asn_SPC_actionDefinition_formats_specs_3 = {
+       sizeof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats),
+       offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, _asn_ctx),
+       offsetof(struct E2SM_KPM_ActionDefinition__actionDefinition_formats, present),
+       sizeof(((struct E2SM_KPM_ActionDefinition__actionDefinition_formats *)0)->present),
+       asn_MAP_actionDefinition_formats_tag2el_3,
+       5,      /* Count of tags in the map */
+       0, 0,
+       3       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_actionDefinition_formats_3 = {
+       "actionDefinition-formats",
+       "actionDefinition-formats",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_actionDefinition_formats_constr_3, &asn_PER_type_actionDefinition_formats_constr_3, CHOICE_constraint },
+       asn_MBR_actionDefinition_formats_3,
+       5,      /* Elements count */
+       &asn_SPC_actionDefinition_formats_specs_3       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_ActionDefinition_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, ric_Style_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Style_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-Style-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_ActionDefinition, actionDefinition_formats),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_actionDefinition_formats_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "actionDefinition-formats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_ActionDefinition_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-Style-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionDefinition-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_ActionDefinition_specs_1 = {
+       sizeof(struct E2SM_KPM_ActionDefinition),
+       offsetof(struct E2SM_KPM_ActionDefinition, _asn_ctx),
+       asn_MAP_E2SM_KPM_ActionDefinition_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition = {
+       "E2SM-KPM-ActionDefinition",
+       "E2SM-KPM-ActionDefinition",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_ActionDefinition_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_ActionDefinition_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_ActionDefinition_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_ActionDefinition_1,
+       2,      /* Elements count */
+       &asn_SPC_E2SM_KPM_ActionDefinition_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-ActionDefinition.h
new file mode 100644 (file)
index 0000000..1bde7e0
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_ActionDefinition_H_
+#define        _E2SM_KPM_ActionDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_ActionDefinition__actionDefinition_formats_PR {
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_NOTHING, /* No components present */
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format1,
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format2,
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format3,
+       /* Extensions may appear below */
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format4,
+       E2SM_KPM_ActionDefinition__actionDefinition_formats_PR_actionDefinition_Format5
+} E2SM_KPM_ActionDefinition__actionDefinition_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_ActionDefinition_Format1;
+struct E2SM_KPM_ActionDefinition_Format2;
+struct E2SM_KPM_ActionDefinition_Format3;
+struct E2SM_KPM_ActionDefinition_Format4;
+struct E2SM_KPM_ActionDefinition_Format5;
+
+/* E2SM-KPM-ActionDefinition */
+typedef struct E2SM_KPM_ActionDefinition {
+       RIC_Style_Type_t         ric_Style_Type;
+       struct E2SM_KPM_ActionDefinition__actionDefinition_formats {
+               E2SM_KPM_ActionDefinition__actionDefinition_formats_PR present;
+               union E2SM_KPM_ActionDefinition__actionDefinition_formats_u {
+                       struct E2SM_KPM_ActionDefinition_Format1        *actionDefinition_Format1;
+                       struct E2SM_KPM_ActionDefinition_Format2        *actionDefinition_Format2;
+                       struct E2SM_KPM_ActionDefinition_Format3        *actionDefinition_Format3;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct E2SM_KPM_ActionDefinition_Format4        *actionDefinition_Format4;
+                       struct E2SM_KPM_ActionDefinition_Format5        *actionDefinition_Format5;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } actionDefinition_formats;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_ActionDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_ActionDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_ActionDefinition_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.c
new file mode 100644 (file)
index 0000000..a7ea3ee
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
+
+static int
+reportingPeriod_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       unsigned long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const unsigned long *)sptr;
+       
+       if((value >= 1 && value <= 4294967295)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_reportingPeriod_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       unsigned long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const unsigned long *)sptr;
+       
+       if((value >= 1 && value <= 4294967295)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_type_reportingPeriod_constr_2 CC_NOTUSED = {
+       { 4, 1 }        /* (1..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_type_reportingPeriod_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  1,  4294967295 }      /* (1..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reportingPeriod_constr_2 CC_NOTUSED = {
+       { 4, 1 }        /* (1..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_reportingPeriod_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  1,  4294967295 }      /* (1..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportingPeriod_specs_2 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_reportingPeriod_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2 = {
+       "reportingPeriod",
+       "reportingPeriod",
+       &asn_OP_NativeInteger,
+       asn_DEF_reportingPeriod_tags_2,
+       sizeof(asn_DEF_reportingPeriod_tags_2)
+               /sizeof(asn_DEF_reportingPeriod_tags_2[0]) - 1, /* 1 */
+       asn_DEF_reportingPeriod_tags_2, /* Same as above */
+       sizeof(asn_DEF_reportingPeriod_tags_2)
+               /sizeof(asn_DEF_reportingPeriod_tags_2[0]), /* 2 */
+       { &asn_OER_type_reportingPeriod_constr_2, &asn_PER_type_reportingPeriod_constr_2, reportingPeriod_2_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_reportingPeriod_specs_2        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, reportingPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportingPeriod_2,
+               0,
+               { &asn_OER_memb_reportingPeriod_constr_2, &asn_PER_memb_reportingPeriod_constr_2,  memb_reportingPeriod_constraint_1 },
+               0, 0, /* No default value */
+               "reportingPeriod"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportingPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1 = {
+       sizeof(struct E2SM_KPM_EventTriggerDefinition_Format1),
+       offsetof(struct E2SM_KPM_EventTriggerDefinition_Format1, _asn_ctx),
+       asn_MAP_E2SM_KPM_EventTriggerDefinition_Format1_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1 = {
+       "E2SM-KPM-EventTriggerDefinition-Format1",
+       "E2SM-KPM-EventTriggerDefinition-Format1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1, /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1,
+       1,      /* Elements count */
+       &asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition-Format1.h
new file mode 100644 (file)
index 0000000..ccadae9
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_EventTriggerDefinition_Format1_H_
+#define        _E2SM_KPM_EventTriggerDefinition_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-EventTriggerDefinition-Format1 */
+typedef struct E2SM_KPM_EventTriggerDefinition_Format1 {
+       unsigned long    reportingPeriod;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_Format1_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportingPeriod_2;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_Format1_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_EventTriggerDefinition_Format1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.c
new file mode 100644 (file)
index 0000000..d929ed1
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-EventTriggerDefinition.h"
+
+#include "E2SM-KPM-EventTriggerDefinition-Format1.h"
+static asn_oer_constraints_t asn_OER_type_eventDefinition_formats_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eventDefinition_formats_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_eventDefinition_formats_2[] = {
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, choice.eventDefinition_Format1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_EventTriggerDefinition_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventDefinition-Format1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventDefinition_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_eventDefinition_formats_specs_2 = {
+       sizeof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats),
+       offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, _asn_ctx),
+       offsetof(struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats, present),
+       sizeof(((struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats *)0)->present),
+       asn_MAP_eventDefinition_formats_tag2el_2,
+       1,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventDefinition_formats_2 = {
+       "eventDefinition-formats",
+       "eventDefinition-formats",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_eventDefinition_formats_constr_2, &asn_PER_type_eventDefinition_formats_constr_2, CHOICE_constraint },
+       asn_MBR_eventDefinition_formats_2,
+       1,      /* Elements count */
+       &asn_SPC_eventDefinition_formats_specs_2        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_EventTriggerDefinition_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_EventTriggerDefinition, eventDefinition_formats),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_eventDefinition_formats_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventDefinition-formats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1 = {
+       sizeof(struct E2SM_KPM_EventTriggerDefinition),
+       offsetof(struct E2SM_KPM_EventTriggerDefinition, _asn_ctx),
+       asn_MAP_E2SM_KPM_EventTriggerDefinition_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition = {
+       "E2SM-KPM-EventTriggerDefinition",
+       "E2SM-KPM-EventTriggerDefinition",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1, /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_EventTriggerDefinition_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_EventTriggerDefinition_1,
+       1,      /* Elements count */
+       &asn_SPC_E2SM_KPM_EventTriggerDefinition_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-EventTriggerDefinition.h
new file mode 100644 (file)
index 0000000..5ba8081
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_EventTriggerDefinition_H_
+#define        _E2SM_KPM_EventTriggerDefinition_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR {
+       E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_NOTHING,    /* No components present */
+       E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR_eventDefinition_Format1
+       /* Extensions may appear below */
+       
+} E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_EventTriggerDefinition_Format1;
+
+/* E2SM-KPM-EventTriggerDefinition */
+typedef struct E2SM_KPM_EventTriggerDefinition {
+       struct E2SM_KPM_EventTriggerDefinition__eventDefinition_formats {
+               E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_PR present;
+               union E2SM_KPM_EventTriggerDefinition__eventDefinition_formats_u {
+                       struct E2SM_KPM_EventTriggerDefinition_Format1  *eventDefinition_Format1;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } eventDefinition_formats;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_EventTriggerDefinition_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_EventTriggerDefinition;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_EventTriggerDefinition_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.c
new file mode 100644 (file)
index 0000000..eea9b17
--- /dev/null
@@ -0,0 +1,404 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationHeader-Format1.h"
+
+static const int permitted_alphabet_table_3[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_3[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_3(const void *sptr) {
+       const int *table = permitted_alphabet_table_3;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static const int permitted_alphabet_table_4[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_4[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_4(const void *sptr) {
+       const int *table = permitted_alphabet_table_4;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static const int permitted_alphabet_table_5[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_5[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_5(const void *sptr) {
+       const int *table = permitted_alphabet_table_5;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static const int permitted_alphabet_table_6[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_6[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_6(const void *sptr) {
+       const int *table = permitted_alphabet_table_6;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static int
+memb_fileFormatversion_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size <= 15)
+                && !check_permitted_alphabet_3(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_fileFormatversion_3_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0]))
+               return -1;
+       return permitted_alphabet_table_3[value] - 1;
+}
+static int asn_PER_MAP_fileFormatversion_3_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0]))
+               return -1;
+       return permitted_alphabet_code2value_3[code];
+}
+static int
+memb_senderName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size <= 400)
+                && !check_permitted_alphabet_4(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_senderName_4_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0]))
+               return -1;
+       return permitted_alphabet_table_4[value] - 1;
+}
+static int asn_PER_MAP_senderName_4_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0]))
+               return -1;
+       return permitted_alphabet_code2value_4[code];
+}
+static int
+memb_senderType_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size <= 8)
+                && !check_permitted_alphabet_5(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_senderType_5_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_5)/sizeof(permitted_alphabet_table_5[0]))
+               return -1;
+       return permitted_alphabet_table_5[value] - 1;
+}
+static int asn_PER_MAP_senderType_5_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_5)/sizeof(permitted_alphabet_code2value_5[0]))
+               return -1;
+       return permitted_alphabet_code2value_5[code];
+}
+static int
+memb_vendorName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size <= 32)
+                && !check_permitted_alphabet_6(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_vendorName_6_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_6)/sizeof(permitted_alphabet_table_6[0]))
+               return -1;
+       return permitted_alphabet_table_6[value] - 1;
+}
+static int asn_PER_MAP_vendorName_6_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_6)/sizeof(permitted_alphabet_code2value_6[0]))
+               return -1;
+       return permitted_alphabet_code2value_6[code];
+}
+static asn_oer_constraints_t asn_OER_memb_fileFormatversion_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_fileFormatversion_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  15 }   /* (SIZE(0..15,...)) */,
+       asn_PER_MAP_fileFormatversion_3_v2c,    /* Value to PER code map */
+       asn_PER_MAP_fileFormatversion_3_c2v     /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_senderName_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_senderName_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  9,  9,  0,  400 }  /* (SIZE(0..400,...)) */,
+       asn_PER_MAP_senderName_4_v2c,   /* Value to PER code map */
+       asn_PER_MAP_senderName_4_c2v    /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_senderType_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_senderType_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  8 }    /* (SIZE(0..8,...)) */,
+       asn_PER_MAP_senderType_5_v2c,   /* Value to PER code map */
+       asn_PER_MAP_senderType_5_c2v    /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_vendorName_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_vendorName_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  6,  6,  0,  32 }   /* (SIZE(0..32,...)) */,
+       asn_PER_MAP_vendorName_6_v2c,   /* Value to PER code map */
+       asn_PER_MAP_vendorName_6_c2v    /* PER code to value map */
+};
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader_Format1, colletStartTime),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeStamp,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "colletStartTime"
+               },
+       { ATF_POINTER, 4, offsetof(struct E2SM_KPM_IndicationHeader_Format1, fileFormatversion),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_fileFormatversion_constr_3, &asn_PER_memb_fileFormatversion_constr_3,  memb_fileFormatversion_constraint_1 },
+               0, 0, /* No default value */
+               "fileFormatversion"
+               },
+       { ATF_POINTER, 3, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderName),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_senderName_constr_4, &asn_PER_memb_senderName_constr_4,  memb_senderName_constraint_1 },
+               0, 0, /* No default value */
+               "senderName"
+               },
+       { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationHeader_Format1, senderType),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_senderType_constr_5, &asn_PER_memb_senderType_constr_5,  memb_senderType_constraint_1 },
+               0, 0, /* No default value */
+               "senderType"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationHeader_Format1, vendorName),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_vendorName_constr_6, &asn_PER_memb_vendorName_constr_6,  memb_vendorName_constraint_1 },
+               0, 0, /* No default value */
+               "vendorName"
+               },
+};
+static const int asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* colletStartTime */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* fileFormatversion */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* senderName */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* senderType */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* vendorName */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationHeader_Format1),
+       offsetof(struct E2SM_KPM_IndicationHeader_Format1, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationHeader_Format1_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_IndicationHeader_Format1_oms_1,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1 = {
+       "E2SM-KPM-IndicationHeader-Format1",
+       "E2SM-KPM-IndicationHeader-Format1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_Format1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationHeader_Format1_1,
+       5,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader-Format1.h
new file mode 100644 (file)
index 0000000..617321b
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationHeader_Format1_H_
+#define        _E2SM_KPM_IndicationHeader_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TimeStamp.h"
+#include <PrintableString.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationHeader-Format1 */
+typedef struct E2SM_KPM_IndicationHeader_Format1 {
+       TimeStamp_t      colletStartTime;
+       PrintableString_t       *fileFormatversion;     /* OPTIONAL */
+       PrintableString_t       *senderName;    /* OPTIONAL */
+       PrintableString_t       *senderType;    /* OPTIONAL */
+       PrintableString_t       *vendorName;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_Format1_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationHeader_Format1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.c
new file mode 100644 (file)
index 0000000..efecfab
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationHeader.h"
+
+#include "E2SM-KPM-IndicationHeader-Format1.h"
+static asn_oer_constraints_t asn_OER_type_indicationHeader_formats_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_indicationHeader_formats_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_indicationHeader_formats_2[] = {
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, choice.indicationHeader_Format1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_IndicationHeader_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationHeader-Format1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_indicationHeader_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_indicationHeader_formats_specs_2 = {
+       sizeof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats),
+       offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, _asn_ctx),
+       offsetof(struct E2SM_KPM_IndicationHeader__indicationHeader_formats, present),
+       sizeof(((struct E2SM_KPM_IndicationHeader__indicationHeader_formats *)0)->present),
+       asn_MAP_indicationHeader_formats_tag2el_2,
+       1,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indicationHeader_formats_2 = {
+       "indicationHeader-formats",
+       "indicationHeader-formats",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_indicationHeader_formats_constr_2, &asn_PER_type_indicationHeader_formats_constr_2, CHOICE_constraint },
+       asn_MBR_indicationHeader_formats_2,
+       1,      /* Elements count */
+       &asn_SPC_indicationHeader_formats_specs_2       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationHeader_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationHeader, indicationHeader_formats),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_indicationHeader_formats_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationHeader-formats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationHeader_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationHeader_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationHeader),
+       offsetof(struct E2SM_KPM_IndicationHeader, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationHeader_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader = {
+       "E2SM-KPM-IndicationHeader",
+       "E2SM-KPM-IndicationHeader",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationHeader_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationHeader_tags_1,       /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationHeader_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationHeader_1,
+       1,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationHeader_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationHeader.h
new file mode 100644 (file)
index 0000000..c63e2ac
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationHeader_H_
+#define        _E2SM_KPM_IndicationHeader_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationHeader__indicationHeader_formats_PR {
+       E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_NOTHING, /* No components present */
+       E2SM_KPM_IndicationHeader__indicationHeader_formats_PR_indicationHeader_Format1
+       /* Extensions may appear below */
+       
+} E2SM_KPM_IndicationHeader__indicationHeader_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationHeader_Format1;
+
+/* E2SM-KPM-IndicationHeader */
+typedef struct E2SM_KPM_IndicationHeader {
+       struct E2SM_KPM_IndicationHeader__indicationHeader_formats {
+               E2SM_KPM_IndicationHeader__indicationHeader_formats_PR present;
+               union E2SM_KPM_IndicationHeader__indicationHeader_formats_u {
+                       struct E2SM_KPM_IndicationHeader_Format1        *indicationHeader_Format1;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } indicationHeader_formats;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationHeader_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationHeader;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationHeader_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.c
new file mode 100644 (file)
index 0000000..e9b12c9
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+
+#include "MeasurementInfoList.h"
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measData),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementData,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measData"
+               },
+       { ATF_POINTER, 2, offsetof(struct E2SM_KPM_IndicationMessage_Format1, measInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measInfoList"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format1, granulPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GranularityPeriod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "granulPeriod"
+               },
+};
+static const int asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationMessage_Format1),
+       offsetof(struct E2SM_KPM_IndicationMessage_Format1, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationMessage_Format1_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_IndicationMessage_Format1_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1 = {
+       "E2SM-KPM-IndicationMessage-Format1",
+       "E2SM-KPM-IndicationMessage-Format1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1,      /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationMessage_Format1_1,
+       3,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format1.h
new file mode 100644 (file)
index 0000000..8edda55
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationMessage_Format1_H_
+#define        _E2SM_KPM_IndicationMessage_Format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementData.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementInfoList;
+
+/* E2SM-KPM-IndicationMessage-Format1 */
+typedef struct E2SM_KPM_IndicationMessage_Format1 {
+       MeasurementData_t        measData;
+       struct MeasurementInfoList      *measInfoList;  /* OPTIONAL */
+       GranularityPeriod_t     *granulPeriod;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format1_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.c
new file mode 100644 (file)
index 0000000..acd3f38
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format2.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measData),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementData,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measData"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format2, measCondUEidList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementCondUEidList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measCondUEidList"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_IndicationMessage_Format2, granulPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GranularityPeriod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "granulPeriod"
+               },
+};
+static const int asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measData */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measCondUEidList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* granulPeriod */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationMessage_Format2),
+       offsetof(struct E2SM_KPM_IndicationMessage_Format2, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationMessage_Format2_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_IndicationMessage_Format2_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2 = {
+       "E2SM-KPM-IndicationMessage-Format2",
+       "E2SM-KPM-IndicationMessage-Format2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1,      /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationMessage_Format2_1,
+       3,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format2.h
new file mode 100644 (file)
index 0000000..0e8ac29
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationMessage_Format2_H_
+#define        _E2SM_KPM_IndicationMessage_Format2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementData.h"
+#include "MeasurementCondUEidList.h"
+#include "GranularityPeriod.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationMessage-Format2 */
+typedef struct E2SM_KPM_IndicationMessage_Format2 {
+       MeasurementData_t        measData;
+       MeasurementCondUEidList_t        measCondUEidList;
+       GranularityPeriod_t     *granulPeriod;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format2;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format2_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format2_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.c
new file mode 100644 (file)
index 0000000..5e30683
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage-Format3.h"
+
+asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage_Format3, ueMeasReportList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEMeasurementReportList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueMeasReportList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueMeasReportList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationMessage_Format3),
+       offsetof(struct E2SM_KPM_IndicationMessage_Format3, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationMessage_Format3_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3 = {
+       "E2SM-KPM-IndicationMessage-Format3",
+       "E2SM-KPM-IndicationMessage-Format3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1,      /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_Format3_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationMessage_Format3_1,
+       1,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage-Format3.h
new file mode 100644 (file)
index 0000000..7b3ecb7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationMessage_Format3_H_
+#define        _E2SM_KPM_IndicationMessage_Format3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEMeasurementReportList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* E2SM-KPM-IndicationMessage-Format3 */
+typedef struct E2SM_KPM_IndicationMessage_Format3 {
+       UEMeasurementReportList_t        ueMeasReportList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_Format3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage_Format3;
+extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_Format3_specs_1;
+extern asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_Format3_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_Format3_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.c
new file mode 100644 (file)
index 0000000..0127565
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-IndicationMessage.h"
+
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+#include "E2SM-KPM-IndicationMessage-Format2.h"
+#include "E2SM-KPM-IndicationMessage-Format3.h"
+static asn_oer_constraints_t asn_OER_type_indicationMessage_formats_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_indicationMessage_formats_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_indicationMessage_formats_2[] = {
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_IndicationMessage_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationMessage-Format1"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_IndicationMessage_Format2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationMessage-Format2"
+               },
+       { ATF_POINTER, 0, offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, choice.indicationMessage_Format3),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_IndicationMessage_Format3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationMessage-Format3"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_indicationMessage_formats_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* indicationMessage-Format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* indicationMessage-Format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* indicationMessage-Format3 */
+};
+static asn_CHOICE_specifics_t asn_SPC_indicationMessage_formats_specs_2 = {
+       sizeof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats),
+       offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, _asn_ctx),
+       offsetof(struct E2SM_KPM_IndicationMessage__indicationMessage_formats, present),
+       sizeof(((struct E2SM_KPM_IndicationMessage__indicationMessage_formats *)0)->present),
+       asn_MAP_indicationMessage_formats_tag2el_2,
+       3,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_indicationMessage_formats_2 = {
+       "indicationMessage-formats",
+       "indicationMessage-formats",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_indicationMessage_formats_constr_2, &asn_PER_type_indicationMessage_formats_constr_2, CHOICE_constraint },
+       asn_MBR_indicationMessage_formats_2,
+       3,      /* Elements count */
+       &asn_SPC_indicationMessage_formats_specs_2      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_IndicationMessage_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_IndicationMessage, indicationMessage_formats),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_indicationMessage_formats_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "indicationMessage-formats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_IndicationMessage_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_IndicationMessage_specs_1 = {
+       sizeof(struct E2SM_KPM_IndicationMessage),
+       offsetof(struct E2SM_KPM_IndicationMessage, _asn_ctx),
+       asn_MAP_E2SM_KPM_IndicationMessage_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage = {
+       "E2SM-KPM-IndicationMessage",
+       "E2SM-KPM-IndicationMessage",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_IndicationMessage_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_IndicationMessage_tags_1,      /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_IndicationMessage_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_IndicationMessage_1,
+       1,      /* Elements count */
+       &asn_SPC_E2SM_KPM_IndicationMessage_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-IndicationMessage.h
new file mode 100644 (file)
index 0000000..79f22d8
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_IndicationMessage_H_
+#define        _E2SM_KPM_IndicationMessage_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum E2SM_KPM_IndicationMessage__indicationMessage_formats_PR {
+       E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_NOTHING,       /* No components present */
+       E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format1,
+       E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format2,
+       /* Extensions may appear below */
+       E2SM_KPM_IndicationMessage__indicationMessage_formats_PR_indicationMessage_Format3
+} E2SM_KPM_IndicationMessage__indicationMessage_formats_PR;
+
+/* Forward declarations */
+struct E2SM_KPM_IndicationMessage_Format1;
+struct E2SM_KPM_IndicationMessage_Format2;
+struct E2SM_KPM_IndicationMessage_Format3;
+
+/* E2SM-KPM-IndicationMessage */
+typedef struct E2SM_KPM_IndicationMessage {
+       struct E2SM_KPM_IndicationMessage__indicationMessage_formats {
+               E2SM_KPM_IndicationMessage__indicationMessage_formats_PR present;
+               union E2SM_KPM_IndicationMessage__indicationMessage_formats_u {
+                       struct E2SM_KPM_IndicationMessage_Format1       *indicationMessage_Format1;
+                       struct E2SM_KPM_IndicationMessage_Format2       *indicationMessage_Format2;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct E2SM_KPM_IndicationMessage_Format3       *indicationMessage_Format3;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } indicationMessage_formats;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_IndicationMessage_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_IndicationMessage;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_IndicationMessage_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.c
new file mode 100644 (file)
index 0000000..2a58008
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "E2SM-KPM-RANfunction-Description.h"
+
+#include "RIC-EventTriggerStyle-Item.h"
+#include "RIC-ReportStyle-Item.h"
+static int
+memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       /* Determine the number of elements */
+       size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+       
+       if((size >= 1 && size <= 63)) {
+               /* Perform validation of the inner elements */
+               return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       /* Determine the number of elements */
+       size = _A_CSEQUENCE_FROM_VOID(sptr)->count;
+       
+       if((size >= 1 && size <= 63)) {
+               /* Perform validation of the inner elements */
+               return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..63)) */};
+static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RIC_EventTriggerStyle_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = {
+       sizeof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List),
+       offsetof(struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = {
+       "ric-EventTriggerStyle-List",
+       "ric-EventTriggerStyle-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ric_EventTriggerStyle_List_tags_3,
+       sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
+               /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ric_EventTriggerStyle_List_tags_3,      /* Same as above */
+       sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3)
+               /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */
+       { &asn_OER_type_ric_EventTriggerStyle_List_constr_3, &asn_PER_type_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ric_EventTriggerStyle_List_3,
+       1,      /* Single element */
+       &asn_SPC_ric_EventTriggerStyle_List_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RIC_ReportStyle_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_5 = {
+       sizeof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List),
+       offsetof(struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_5 = {
+       "ric-ReportStyle-List",
+       "ric-ReportStyle-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ric_ReportStyle_List_tags_5,
+       sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
+               /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */
+       asn_DEF_ric_ReportStyle_List_tags_5,    /* Same as above */
+       sizeof(asn_DEF_ric_ReportStyle_List_tags_5)
+               /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]), /* 2 */
+       { &asn_OER_type_ric_ReportStyle_List_constr_5, &asn_PER_type_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_ric_ReportStyle_List_5,
+       1,      /* Single element */
+       &asn_SPC_ric_ReportStyle_List_specs_5   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_E2SM_KPM_RANfunction_Description_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct E2SM_KPM_RANfunction_Description, ranFunction_Name),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RANfunction_Name,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ranFunction-Name"
+               },
+       { ATF_POINTER, 2, offsetof(struct E2SM_KPM_RANfunction_Description, ric_EventTriggerStyle_List),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ric_EventTriggerStyle_List_3,
+               0,
+               { &asn_OER_memb_ric_EventTriggerStyle_List_constr_3, &asn_PER_memb_ric_EventTriggerStyle_List_constr_3,  memb_ric_EventTriggerStyle_List_constraint_1 },
+               0, 0, /* No default value */
+               "ric-EventTriggerStyle-List"
+               },
+       { ATF_POINTER, 1, offsetof(struct E2SM_KPM_RANfunction_Description, ric_ReportStyle_List),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ric_ReportStyle_List_5,
+               0,
+               { &asn_OER_memb_ric_ReportStyle_List_constr_5, &asn_PER_memb_ric_ReportStyle_List_constr_5,  memb_ric_ReportStyle_List_constraint_1 },
+               0, 0, /* No default value */
+               "ric-ReportStyle-List"
+               },
+};
+static const int asn_MAP_E2SM_KPM_RANfunction_Description_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-ReportStyle-List */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_E2SM_KPM_RANfunction_Description_specs_1 = {
+       sizeof(struct E2SM_KPM_RANfunction_Description),
+       offsetof(struct E2SM_KPM_RANfunction_Description, _asn_ctx),
+       asn_MAP_E2SM_KPM_RANfunction_Description_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_E2SM_KPM_RANfunction_Description_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description = {
+       "E2SM-KPM-RANfunction-Description",
+       "E2SM-KPM-RANfunction-Description",
+       &asn_OP_SEQUENCE,
+       asn_DEF_E2SM_KPM_RANfunction_Description_tags_1,
+       sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */
+       asn_DEF_E2SM_KPM_RANfunction_Description_tags_1,        /* Same as above */
+       sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1)
+               /sizeof(asn_DEF_E2SM_KPM_RANfunction_Description_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_E2SM_KPM_RANfunction_Description_1,
+       3,      /* Elements count */
+       &asn_SPC_E2SM_KPM_RANfunction_Description_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h b/src/codec_utils/E2SM_KPM/E2SM-KPM-RANfunction-Description.h
new file mode 100644 (file)
index 0000000..5956a11
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _E2SM_KPM_RANfunction_Description_H_
+#define        _E2SM_KPM_RANfunction_Description_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RANfunction-Name.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RIC_EventTriggerStyle_Item;
+struct RIC_ReportStyle_Item;
+
+/* E2SM-KPM-RANfunction-Description */
+typedef struct E2SM_KPM_RANfunction_Description {
+       RANfunction_Name_t       ranFunction_Name;
+       struct E2SM_KPM_RANfunction_Description__ric_EventTriggerStyle_List {
+               A_SEQUENCE_OF(struct RIC_EventTriggerStyle_Item) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ric_EventTriggerStyle_List;
+       struct E2SM_KPM_RANfunction_Description__ric_ReportStyle_List {
+               A_SEQUENCE_OF(struct RIC_ReportStyle_Item) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ric_ReportStyle_List;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} E2SM_KPM_RANfunction_Description_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_E2SM_KPM_RANfunction_Description;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _E2SM_KPM_RANfunction_Description_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.c
new file mode 100644 (file)
index 0000000..a65c326
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ENB-UE-X2AP-ID-Extension.h"
+
+int
+ENB_UE_X2AP_ID_Extension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 0 && value <= 4095)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  12,  12,  0,  4095 }       /* (0..4095,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension = {
+       "ENB-UE-X2AP-ID-Extension",
+       "ENB-UE-X2AP-ID-Extension",
+       &asn_OP_NativeInteger,
+       asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1,
+       sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+               /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+       asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1,        /* Same as above */
+       sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1)
+               /sizeof(asn_DEF_ENB_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */
+       { &asn_OER_type_ENB_UE_X2AP_ID_Extension_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1, ENB_UE_X2AP_ID_Extension_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID-Extension.h
new file mode 100644 (file)
index 0000000..00c656f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ENB_UE_X2AP_ID_Extension_H_
+#define        _ENB_UE_X2AP_ID_Extension_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ENB-UE-X2AP-ID-Extension */
+typedef long    ENB_UE_X2AP_ID_Extension_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_Extension_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID_Extension;
+asn_struct_free_f ENB_UE_X2AP_ID_Extension_free;
+asn_struct_print_f ENB_UE_X2AP_ID_Extension_print;
+asn_constr_check_f ENB_UE_X2AP_ID_Extension_constraint;
+ber_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_ber;
+der_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_der;
+xer_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_xer;
+xer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_xer;
+oer_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_oer;
+oer_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_oer;
+per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_uper;
+per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_uper;
+per_type_decoder_f ENB_UE_X2AP_ID_Extension_decode_aper;
+per_type_encoder_f ENB_UE_X2AP_ID_Extension_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ENB_UE_X2AP_ID_Extension_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.c
new file mode 100644 (file)
index 0000000..756b98e
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ENB-UE-X2AP-ID.h"
+
+int
+ENB_UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 0 && value <= 4095)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..4095) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  4095 }   /* (0..4095) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ENB_UE_X2AP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID = {
+       "ENB-UE-X2AP-ID",
+       "ENB-UE-X2AP-ID",
+       &asn_OP_NativeInteger,
+       asn_DEF_ENB_UE_X2AP_ID_tags_1,
+       sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+               /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+       asn_DEF_ENB_UE_X2AP_ID_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1)
+               /sizeof(asn_DEF_ENB_UE_X2AP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_ENB_UE_X2AP_ID_constr_1, &asn_PER_type_ENB_UE_X2AP_ID_constr_1, ENB_UE_X2AP_ID_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h b/src/codec_utils/E2SM_KPM/ENB-UE-X2AP-ID.h
new file mode 100644 (file)
index 0000000..fcd0ac4
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ENB_UE_X2AP_ID_H_
+#define        _ENB_UE_X2AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ENB-UE-X2AP-ID */
+typedef long    ENB_UE_X2AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ENB_UE_X2AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ENB_UE_X2AP_ID;
+asn_struct_free_f ENB_UE_X2AP_ID_free;
+asn_struct_print_f ENB_UE_X2AP_ID_print;
+asn_constr_check_f ENB_UE_X2AP_ID_constraint;
+ber_type_decoder_f ENB_UE_X2AP_ID_decode_ber;
+der_type_encoder_f ENB_UE_X2AP_ID_encode_der;
+xer_type_decoder_f ENB_UE_X2AP_ID_decode_xer;
+xer_type_encoder_f ENB_UE_X2AP_ID_encode_xer;
+oer_type_decoder_f ENB_UE_X2AP_ID_decode_oer;
+oer_type_encoder_f ENB_UE_X2AP_ID_encode_oer;
+per_type_decoder_f ENB_UE_X2AP_ID_decode_uper;
+per_type_encoder_f ENB_UE_X2AP_ID_encode_uper;
+per_type_decoder_f ENB_UE_X2AP_ID_decode_aper;
+per_type_encoder_f ENB_UE_X2AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ENB_UE_X2AP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/EUTRA-CGI.c b/src/codec_utils/E2SM_KPM/EUTRA-CGI.c
new file mode 100644 (file)
index 0000000..5d930e3
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-CGI.h"
+
+asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_CGI, eUTRACellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRACellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eUTRACellIdentity"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_CGI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRACellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1 = {
+       sizeof(struct EUTRA_CGI),
+       offsetof(struct EUTRA_CGI, _asn_ctx),
+       asn_MAP_EUTRA_CGI_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI = {
+       "EUTRA-CGI",
+       "EUTRA-CGI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_CGI_tags_1,
+       sizeof(asn_DEF_EUTRA_CGI_tags_1)
+               /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_CGI_tags_1,       /* Same as above */
+       sizeof(asn_DEF_EUTRA_CGI_tags_1)
+               /sizeof(asn_DEF_EUTRA_CGI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_CGI_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_CGI_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/EUTRA-CGI.h b/src/codec_utils/E2SM_KPM/EUTRA-CGI.h
new file mode 100644 (file)
index 0000000..58a9198
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_CGI_H_
+#define        _EUTRA_CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "EUTRACellIdentity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-CGI */
+typedef struct EUTRA_CGI {
+       PLMNIdentity_t   pLMNIdentity;
+       EUTRACellIdentity_t      eUTRACellIdentity;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_CGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_CGI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_CGI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/EUTRACellIdentity.c b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.c
new file mode 100644 (file)
index 0000000..f9226a6
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRACellIdentity.h"
+
+int
+EUTRACellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 28)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       28      /* (SIZE(28..28)) */};
+asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  28,  28 }      /* (SIZE(28..28)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_EUTRACellIdentity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity = {
+       "EUTRACellIdentity",
+       "EUTRACellIdentity",
+       &asn_OP_BIT_STRING,
+       asn_DEF_EUTRACellIdentity_tags_1,
+       sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+               /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+       asn_DEF_EUTRACellIdentity_tags_1,       /* Same as above */
+       sizeof(asn_DEF_EUTRACellIdentity_tags_1)
+               /sizeof(asn_DEF_EUTRACellIdentity_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRACellIdentity_constr_1, &asn_PER_type_EUTRACellIdentity_constr_1, EUTRACellIdentity_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/EUTRACellIdentity.h b/src/codec_utils/E2SM_KPM/EUTRACellIdentity.h
new file mode 100644 (file)
index 0000000..c77bea9
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRACellIdentity_H_
+#define        _EUTRACellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRACellIdentity */
+typedef BIT_STRING_t    EUTRACellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRACellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRACellIdentity;
+asn_struct_free_f EUTRACellIdentity_free;
+asn_struct_print_f EUTRACellIdentity_print;
+asn_constr_check_f EUTRACellIdentity_constraint;
+ber_type_decoder_f EUTRACellIdentity_decode_ber;
+der_type_encoder_f EUTRACellIdentity_encode_der;
+xer_type_decoder_f EUTRACellIdentity_decode_xer;
+xer_type_encoder_f EUTRACellIdentity_encode_xer;
+oer_type_decoder_f EUTRACellIdentity_decode_oer;
+oer_type_encoder_f EUTRACellIdentity_encode_oer;
+per_type_decoder_f EUTRACellIdentity_decode_uper;
+per_type_encoder_f EUTRACellIdentity_encode_uper;
+per_type_decoder_f EUTRACellIdentity_decode_aper;
+per_type_encoder_f EUTRACellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRACellIdentity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/FiveQI.c b/src/codec_utils/E2SM_KPM/FiveQI.c
new file mode 100644 (file)
index 0000000..5eddbb3
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FiveQI.h"
+
+int
+FiveQI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 0 && value <= 255)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_FiveQI_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_FiveQI_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  0,  255 }  /* (0..255,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FiveQI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FiveQI = {
+       "FiveQI",
+       "FiveQI",
+       &asn_OP_NativeInteger,
+       asn_DEF_FiveQI_tags_1,
+       sizeof(asn_DEF_FiveQI_tags_1)
+               /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */
+       asn_DEF_FiveQI_tags_1,  /* Same as above */
+       sizeof(asn_DEF_FiveQI_tags_1)
+               /sizeof(asn_DEF_FiveQI_tags_1[0]), /* 1 */
+       { &asn_OER_type_FiveQI_constr_1, &asn_PER_type_FiveQI_constr_1, FiveQI_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/FiveQI.h b/src/codec_utils/E2SM_KPM/FiveQI.h
new file mode 100644 (file)
index 0000000..02b06ff
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FiveQI_H_
+#define        _FiveQI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FiveQI */
+typedef long    FiveQI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FiveQI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FiveQI;
+asn_struct_free_f FiveQI_free;
+asn_struct_print_f FiveQI_print;
+asn_constr_check_f FiveQI_constraint;
+ber_type_decoder_f FiveQI_decode_ber;
+der_type_encoder_f FiveQI_encode_der;
+xer_type_decoder_f FiveQI_decode_xer;
+xer_type_encoder_f FiveQI_encode_xer;
+oer_type_decoder_f FiveQI_decode_oer;
+oer_type_encoder_f FiveQI_encode_oer;
+per_type_decoder_f FiveQI_decode_uper;
+per_type_encoder_f FiveQI_encode_uper;
+per_type_decoder_f FiveQI_decode_aper;
+per_type_encoder_f FiveQI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FiveQI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.c
new file mode 100644 (file)
index 0000000..d169a29
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+
+int
+GNB_CU_CP_UE_E1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID = {
+       "GNB-CU-CP-UE-E1AP-ID",
+       "GNB-CU-CP-UE-E1AP-ID",
+       &asn_OP_NativeInteger,
+       asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1,
+       sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+               /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+       asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1,    /* Same as above */
+       sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1)
+               /sizeof(asn_DEF_GNB_CU_CP_UE_E1AP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, &asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1, GNB_CU_CP_UE_E1AP_ID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h b/src/codec_utils/E2SM_KPM/GNB-CU-CP-UE-E1AP-ID.h
new file mode 100644 (file)
index 0000000..5e06a2d
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GNB_CU_CP_UE_E1AP_ID_H_
+#define        _GNB_CU_CP_UE_E1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-CU-CP-UE-E1AP-ID */
+typedef unsigned long   GNB_CU_CP_UE_E1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_CU_CP_UE_E1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_CP_UE_E1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_CP_UE_E1AP_ID_specs_1;
+asn_struct_free_f GNB_CU_CP_UE_E1AP_ID_free;
+asn_struct_print_f GNB_CU_CP_UE_E1AP_ID_print;
+asn_constr_check_f GNB_CU_CP_UE_E1AP_ID_constraint;
+ber_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_ber;
+der_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_der;
+xer_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_xer;
+xer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_xer;
+oer_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_oer;
+oer_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_oer;
+per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_uper;
+per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_uper;
+per_type_decoder_f GNB_CU_CP_UE_E1AP_ID_decode_aper;
+per_type_encoder_f GNB_CU_CP_UE_E1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_CU_CP_UE_E1AP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.c
new file mode 100644 (file)
index 0000000..4fbc21a
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-CU-UE-F1AP-ID.h"
+
+int
+GNB_CU_UE_F1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID = {
+       "GNB-CU-UE-F1AP-ID",
+       "GNB-CU-UE-F1AP-ID",
+       &asn_OP_NativeInteger,
+       asn_DEF_GNB_CU_UE_F1AP_ID_tags_1,
+       sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+               /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+       asn_DEF_GNB_CU_UE_F1AP_ID_tags_1,       /* Same as above */
+       sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1)
+               /sizeof(asn_DEF_GNB_CU_UE_F1AP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_GNB_CU_UE_F1AP_ID_constr_1, &asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1, GNB_CU_UE_F1AP_ID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_GNB_CU_UE_F1AP_ID_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h b/src/codec_utils/E2SM_KPM/GNB-CU-UE-F1AP-ID.h
new file mode 100644 (file)
index 0000000..0f867d8
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GNB_CU_UE_F1AP_ID_H_
+#define        _GNB_CU_UE_F1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GNB-CU-UE-F1AP-ID */
+typedef unsigned long   GNB_CU_UE_F1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GNB_CU_UE_F1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UE_F1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_GNB_CU_UE_F1AP_ID_specs_1;
+asn_struct_free_f GNB_CU_UE_F1AP_ID_free;
+asn_struct_print_f GNB_CU_UE_F1AP_ID_print;
+asn_constr_check_f GNB_CU_UE_F1AP_ID_constraint;
+ber_type_decoder_f GNB_CU_UE_F1AP_ID_decode_ber;
+der_type_encoder_f GNB_CU_UE_F1AP_ID_encode_der;
+xer_type_decoder_f GNB_CU_UE_F1AP_ID_decode_xer;
+xer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_xer;
+oer_type_decoder_f GNB_CU_UE_F1AP_ID_decode_oer;
+oer_type_encoder_f GNB_CU_UE_F1AP_ID_encode_oer;
+per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_uper;
+per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_uper;
+per_type_decoder_f GNB_CU_UE_F1AP_ID_decode_aper;
+per_type_encoder_f GNB_CU_UE_F1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_CU_UE_F1AP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GNB-ID.c b/src/codec_utils/E2SM_KPM/GNB-ID.c
new file mode 100644 (file)
index 0000000..6df644a
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GNB-ID.h"
+
+static int
+memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size >= 22 && size <= 32)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_gNB_ID_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(22..32)) */};
+static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  22,  32 }      /* (SIZE(22..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_GNB_ID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GNB_ID_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_gNB_ID_constr_2, &asn_PER_memb_gNB_ID_constr_2,  memb_gNB_ID_constraint_1 },
+               0, 0, /* No default value */
+               "gNB-ID"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = {
+       sizeof(struct GNB_ID),
+       offsetof(struct GNB_ID, _asn_ctx),
+       offsetof(struct GNB_ID, present),
+       sizeof(((struct GNB_ID *)0)->present),
+       asn_MAP_GNB_ID_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GNB_ID = {
+       "GNB-ID",
+       "GNB-ID",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_GNB_ID_constr_1, &asn_PER_type_GNB_ID_constr_1, CHOICE_constraint },
+       asn_MBR_GNB_ID_1,
+       1,      /* Elements count */
+       &asn_SPC_GNB_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GNB-ID.h b/src/codec_utils/E2SM_KPM/GNB-ID.h
new file mode 100644 (file)
index 0000000..2be18c4
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GNB_ID_H_
+#define        _GNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GNB_ID_PR {
+       GNB_ID_PR_NOTHING,      /* No components present */
+       GNB_ID_PR_gNB_ID
+       /* Extensions may appear below */
+       
+} GNB_ID_PR;
+
+/* GNB-ID */
+typedef struct GNB_ID {
+       GNB_ID_PR present;
+       union GNB_ID_u {
+               BIT_STRING_t     gNB_ID;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GNB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GNB_ID_1[1];
+extern asn_per_constraints_t asn_PER_type_GNB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GUAMI.c b/src/codec_utils/E2SM_KPM/GUAMI.c
new file mode 100644 (file)
index 0000000..d42876c
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GUAMI.h"
+
+asn_TYPE_member_t asn_MBR_GUAMI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GUAMI, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFRegionID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMFRegionID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aMFRegionID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFSetID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMFSetID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aMFSetID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GUAMI, aMFPointer),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMFPointer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aMFPointer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GUAMI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUAMI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMFRegionID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aMFSetID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* aMFPointer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1 = {
+       sizeof(struct GUAMI),
+       offsetof(struct GUAMI, _asn_ctx),
+       asn_MAP_GUAMI_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUAMI = {
+       "GUAMI",
+       "GUAMI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GUAMI_tags_1,
+       sizeof(asn_DEF_GUAMI_tags_1)
+               /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+       asn_DEF_GUAMI_tags_1,   /* Same as above */
+       sizeof(asn_DEF_GUAMI_tags_1)
+               /sizeof(asn_DEF_GUAMI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GUAMI_1,
+       4,      /* Elements count */
+       &asn_SPC_GUAMI_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GUAMI.h b/src/codec_utils/E2SM_KPM/GUAMI.h
new file mode 100644 (file)
index 0000000..e326c6b
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GUAMI_H_
+#define        _GUAMI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "AMFRegionID.h"
+#include "AMFSetID.h"
+#include "AMFPointer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GUAMI */
+typedef struct GUAMI {
+       PLMNIdentity_t   pLMNIdentity;
+       AMFRegionID_t    aMFRegionID;
+       AMFSetID_t       aMFSetID;
+       AMFPointer_t     aMFPointer;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GUAMI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GUAMI;
+extern asn_SEQUENCE_specifics_t asn_SPC_GUAMI_specs_1;
+extern asn_TYPE_member_t asn_MBR_GUAMI_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GUAMI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GUMMEI.c b/src/codec_utils/E2SM_KPM/GUMMEI.c
new file mode 100644 (file)
index 0000000..128aea7
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GUMMEI.h"
+
+asn_TYPE_member_t asn_MBR_GUMMEI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, pLMN_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMN-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Group_ID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MME_Group_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mME-Group-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MME_Code,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mME-Code"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* mME-Code */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = {
+       sizeof(struct GUMMEI),
+       offsetof(struct GUMMEI, _asn_ctx),
+       asn_MAP_GUMMEI_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GUMMEI = {
+       "GUMMEI",
+       "GUMMEI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GUMMEI_tags_1,
+       sizeof(asn_DEF_GUMMEI_tags_1)
+               /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+       asn_DEF_GUMMEI_tags_1,  /* Same as above */
+       sizeof(asn_DEF_GUMMEI_tags_1)
+               /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GUMMEI_1,
+       3,      /* Elements count */
+       &asn_SPC_GUMMEI_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GUMMEI.h b/src/codec_utils/E2SM_KPM/GUMMEI.h
new file mode 100644 (file)
index 0000000..e986855
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GUMMEI_H_
+#define        _GUMMEI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "MME-Group-ID.h"
+#include "MME-Code.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GUMMEI */
+typedef struct GUMMEI {
+       PLMNIdentity_t   pLMN_Identity;
+       MME_Group_ID_t   mME_Group_ID;
+       MME_Code_t       mME_Code;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GUMMEI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GUMMEI;
+extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1;
+extern asn_TYPE_member_t asn_MBR_GUMMEI_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GUMMEI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GlobalENB-ID.c b/src/codec_utils/E2SM_KPM/GlobalENB-ID.c
new file mode 100644 (file)
index 0000000..1779899
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalENB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eNB-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = {
+       sizeof(struct GlobalENB_ID),
+       offsetof(struct GlobalENB_ID, _asn_ctx),
+       asn_MAP_GlobalENB_ID_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = {
+       "GlobalENB-ID",
+       "GlobalENB-ID",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GlobalENB_ID_tags_1,
+       sizeof(asn_DEF_GlobalENB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */
+       asn_DEF_GlobalENB_ID_tags_1,    /* Same as above */
+       sizeof(asn_DEF_GlobalENB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GlobalENB_ID_1,
+       2,      /* Elements count */
+       &asn_SPC_GlobalENB_ID_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GlobalENB-ID.h b/src/codec_utils/E2SM_KPM/GlobalENB-ID.h
new file mode 100644 (file)
index 0000000..d6728d7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GlobalENB_ID_H_
+#define        _GlobalENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "ENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalENB-ID */
+typedef struct GlobalENB_ID {
+       PLMNIdentity_t   pLMNIdentity;
+       ENB_ID_t         eNB_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GlobalENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GlobalGNB-ID.c b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.c
new file mode 100644 (file)
index 0000000..f70ae4b
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalGNB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_GNB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = {
+       sizeof(struct GlobalGNB_ID),
+       offsetof(struct GlobalGNB_ID, _asn_ctx),
+       asn_MAP_GlobalGNB_ID_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = {
+       "GlobalGNB-ID",
+       "GlobalGNB-ID",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GlobalGNB_ID_tags_1,
+       sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+       asn_DEF_GlobalGNB_ID_tags_1,    /* Same as above */
+       sizeof(asn_DEF_GlobalGNB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GlobalGNB_ID_1,
+       2,      /* Elements count */
+       &asn_SPC_GlobalGNB_ID_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GlobalGNB-ID.h b/src/codec_utils/E2SM_KPM/GlobalGNB-ID.h
new file mode 100644 (file)
index 0000000..e041878
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GlobalGNB_ID_H_
+#define        _GlobalGNB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "GNB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalGNB-ID */
+typedef struct GlobalGNB_ID {
+       PLMNIdentity_t   pLMNIdentity;
+       GNB_ID_t         gNB_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GlobalGNB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalGNB_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.c
new file mode 100644 (file)
index 0000000..ee94299
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalNGRANNodeID.h"
+
+#include "GlobalGNB-ID.h"
+#include "GlobalNgENB-ID.h"
+static asn_oer_constraints_t asn_OER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[] = {
+       { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.gNB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalGNB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB"
+               },
+       { ATF_POINTER, 0, offsetof(struct GlobalNGRANNodeID, choice.ng_eNB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalNgENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-eNB"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNGRANNodeID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-eNB */
+};
+asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1 = {
+       sizeof(struct GlobalNGRANNodeID),
+       offsetof(struct GlobalNGRANNodeID, _asn_ctx),
+       offsetof(struct GlobalNGRANNodeID, present),
+       sizeof(((struct GlobalNGRANNodeID *)0)->present),
+       asn_MAP_GlobalNGRANNodeID_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID = {
+       "GlobalNGRANNodeID",
+       "GlobalNGRANNodeID",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_GlobalNGRANNodeID_constr_1, &asn_PER_type_GlobalNGRANNodeID_constr_1, CHOICE_constraint },
+       asn_MBR_GlobalNGRANNodeID_1,
+       2,      /* Elements count */
+       &asn_SPC_GlobalNGRANNodeID_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h b/src/codec_utils/E2SM_KPM/GlobalNGRANNodeID.h
new file mode 100644 (file)
index 0000000..e4dd05b
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GlobalNGRANNodeID_H_
+#define        _GlobalNGRANNodeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GlobalNGRANNodeID_PR {
+       GlobalNGRANNodeID_PR_NOTHING,   /* No components present */
+       GlobalNGRANNodeID_PR_gNB,
+       GlobalNGRANNodeID_PR_ng_eNB
+       /* Extensions may appear below */
+       
+} GlobalNGRANNodeID_PR;
+
+/* Forward declarations */
+struct GlobalGNB_ID;
+struct GlobalNgENB_ID;
+
+/* GlobalNGRANNodeID */
+typedef struct GlobalNGRANNodeID {
+       GlobalNGRANNodeID_PR present;
+       union GlobalNGRANNodeID_u {
+               struct GlobalGNB_ID     *gNB;
+               struct GlobalNgENB_ID   *ng_eNB;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GlobalNGRANNodeID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalNGRANNodeID;
+extern asn_CHOICE_specifics_t asn_SPC_GlobalNGRANNodeID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalNGRANNodeID_1[2];
+extern asn_per_constraints_t asn_PER_type_GlobalNGRANNodeID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalNGRANNodeID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.c
new file mode 100644 (file)
index 0000000..3d60a04
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GlobalNgENB-ID.h"
+
+asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GlobalNgENB_ID, ngENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_NgENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ngENB-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GlobalNgENB_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GlobalNgENB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ngENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1 = {
+       sizeof(struct GlobalNgENB_ID),
+       offsetof(struct GlobalNgENB_ID, _asn_ctx),
+       asn_MAP_GlobalNgENB_ID_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID = {
+       "GlobalNgENB-ID",
+       "GlobalNgENB-ID",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GlobalNgENB_ID_tags_1,
+       sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+       asn_DEF_GlobalNgENB_ID_tags_1,  /* Same as above */
+       sizeof(asn_DEF_GlobalNgENB_ID_tags_1)
+               /sizeof(asn_DEF_GlobalNgENB_ID_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GlobalNgENB_ID_1,
+       2,      /* Elements count */
+       &asn_SPC_GlobalNgENB_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h b/src/codec_utils/E2SM_KPM/GlobalNgENB-ID.h
new file mode 100644 (file)
index 0000000..dbac110
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GlobalNgENB_ID_H_
+#define        _GlobalNgENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "NgENB-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GlobalNgENB-ID */
+typedef struct GlobalNgENB_ID {
+       PLMNIdentity_t   pLMNIdentity;
+       NgENB_ID_t       ngENB_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GlobalNgENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_GlobalNgENB_ID;
+extern asn_SEQUENCE_specifics_t asn_SPC_GlobalNgENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_GlobalNgENB_ID_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GlobalNgENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/GranularityPeriod.c b/src/codec_utils/E2SM_KPM/GranularityPeriod.c
new file mode 100644 (file)
index 0000000..03bd819
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GranularityPeriod.h"
+
+int
+GranularityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       unsigned long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const unsigned long *)sptr;
+       
+       if((value >= 1 && value <= 4294967295)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_GranularityPeriod_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (1..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  1,  4294967295 }      /* (1..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_GranularityPeriod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_GranularityPeriod = {
+       "GranularityPeriod",
+       "GranularityPeriod",
+       &asn_OP_NativeInteger,
+       asn_DEF_GranularityPeriod_tags_1,
+       sizeof(asn_DEF_GranularityPeriod_tags_1)
+               /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */
+       asn_DEF_GranularityPeriod_tags_1,       /* Same as above */
+       sizeof(asn_DEF_GranularityPeriod_tags_1)
+               /sizeof(asn_DEF_GranularityPeriod_tags_1[0]), /* 1 */
+       { &asn_OER_type_GranularityPeriod_constr_1, &asn_PER_type_GranularityPeriod_constr_1, GranularityPeriod_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_GranularityPeriod_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/GranularityPeriod.h b/src/codec_utils/E2SM_KPM/GranularityPeriod.h
new file mode 100644 (file)
index 0000000..6fae898
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GranularityPeriod_H_
+#define        _GranularityPeriod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* GranularityPeriod */
+typedef unsigned long   GranularityPeriod_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_GranularityPeriod_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_GranularityPeriod;
+extern const asn_INTEGER_specifics_t asn_SPC_GranularityPeriod_specs_1;
+asn_struct_free_f GranularityPeriod_free;
+asn_struct_print_f GranularityPeriod_print;
+asn_constr_check_f GranularityPeriod_constraint;
+ber_type_decoder_f GranularityPeriod_decode_ber;
+der_type_encoder_f GranularityPeriod_encode_der;
+xer_type_decoder_f GranularityPeriod_decode_xer;
+xer_type_encoder_f GranularityPeriod_encode_xer;
+oer_type_decoder_f GranularityPeriod_decode_oer;
+oer_type_encoder_f GranularityPeriod_encode_oer;
+per_type_decoder_f GranularityPeriod_decode_uper;
+per_type_encoder_f GranularityPeriod_encode_uper;
+per_type_decoder_f GranularityPeriod_decode_aper;
+per_type_encoder_f GranularityPeriod_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GranularityPeriod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/LabelInfoItem.c b/src/codec_utils/E2SM_KPM/LabelInfoItem.c
new file mode 100644 (file)
index 0000000..8e91a7c
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LabelInfoItem.h"
+
+asn_TYPE_member_t asn_MBR_LabelInfoItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct LabelInfoItem, measLabel),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementLabel,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measLabel"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_LabelInfoItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LabelInfoItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measLabel */
+};
+asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1 = {
+       sizeof(struct LabelInfoItem),
+       offsetof(struct LabelInfoItem, _asn_ctx),
+       asn_MAP_LabelInfoItem_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_LabelInfoItem = {
+       "LabelInfoItem",
+       "LabelInfoItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_LabelInfoItem_tags_1,
+       sizeof(asn_DEF_LabelInfoItem_tags_1)
+               /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */
+       asn_DEF_LabelInfoItem_tags_1,   /* Same as above */
+       sizeof(asn_DEF_LabelInfoItem_tags_1)
+               /sizeof(asn_DEF_LabelInfoItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_LabelInfoItem_1,
+       1,      /* Elements count */
+       &asn_SPC_LabelInfoItem_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/LabelInfoItem.h b/src/codec_utils/E2SM_KPM/LabelInfoItem.h
new file mode 100644 (file)
index 0000000..6744b79
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LabelInfoItem_H_
+#define        _LabelInfoItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementLabel.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* LabelInfoItem */
+typedef struct LabelInfoItem {
+       MeasurementLabel_t       measLabel;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LabelInfoItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LabelInfoItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_LabelInfoItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_LabelInfoItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LabelInfoItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/LabelInfoList.c b/src/codec_utils/E2SM_KPM/LabelInfoList.c
new file mode 100644 (file)
index 0000000..0ff7895
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LabelInfoList.h"
+
+#include "LabelInfoItem.h"
+static asn_oer_constraints_t asn_OER_type_LabelInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2147483647)) */};
+asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       31, -1,  1,  2147483647 }      /* (SIZE(1..2147483647)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_LabelInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_LabelInfoItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_LabelInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1 = {
+       sizeof(struct LabelInfoList),
+       offsetof(struct LabelInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_LabelInfoList = {
+       "LabelInfoList",
+       "LabelInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_LabelInfoList_tags_1,
+       sizeof(asn_DEF_LabelInfoList_tags_1)
+               /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */
+       asn_DEF_LabelInfoList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_LabelInfoList_tags_1)
+               /sizeof(asn_DEF_LabelInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_LabelInfoList_constr_1, &asn_PER_type_LabelInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_LabelInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_LabelInfoList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/LabelInfoList.h b/src/codec_utils/E2SM_KPM/LabelInfoList.h
new file mode 100644 (file)
index 0000000..f23eda7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LabelInfoList_H_
+#define        _LabelInfoList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct LabelInfoItem;
+
+/* LabelInfoList */
+typedef struct LabelInfoList {
+       A_SEQUENCE_OF(struct LabelInfoItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LabelInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LabelInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_LabelInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_LabelInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_LabelInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LabelInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/LogicalOR.c b/src/codec_utils/E2SM_KPM/LogicalOR.c
new file mode 100644 (file)
index 0000000..52991dc
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LogicalOR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_LogicalOR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_LogicalOR_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_LogicalOR_value2enum_1[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_LogicalOR_enum2value_1[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1 = {
+       asn_MAP_LogicalOR_value2enum_1, /* "tag" => N; sorted by tag */
+       asn_MAP_LogicalOR_enum2value_1, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_LogicalOR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_LogicalOR = {
+       "LogicalOR",
+       "LogicalOR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_LogicalOR_tags_1,
+       sizeof(asn_DEF_LogicalOR_tags_1)
+               /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+       asn_DEF_LogicalOR_tags_1,       /* Same as above */
+       sizeof(asn_DEF_LogicalOR_tags_1)
+               /sizeof(asn_DEF_LogicalOR_tags_1[0]), /* 1 */
+       { &asn_OER_type_LogicalOR_constr_1, &asn_PER_type_LogicalOR_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_LogicalOR_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/LogicalOR.h b/src/codec_utils/E2SM_KPM/LogicalOR.h
new file mode 100644 (file)
index 0000000..c66f5bf
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LogicalOR_H_
+#define        _LogicalOR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LogicalOR {
+       LogicalOR_true  = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_LogicalOR;
+
+/* LogicalOR */
+typedef long    LogicalOR_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_LogicalOR_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_LogicalOR;
+extern const asn_INTEGER_specifics_t asn_SPC_LogicalOR_specs_1;
+asn_struct_free_f LogicalOR_free;
+asn_struct_print_f LogicalOR_print;
+asn_constr_check_f LogicalOR_constraint;
+ber_type_decoder_f LogicalOR_decode_ber;
+der_type_encoder_f LogicalOR_encode_der;
+xer_type_decoder_f LogicalOR_decode_xer;
+xer_type_encoder_f LogicalOR_encode_xer;
+oer_type_decoder_f LogicalOR_decode_oer;
+oer_type_encoder_f LogicalOR_encode_oer;
+per_type_decoder_f LogicalOR_decode_uper;
+per_type_encoder_f LogicalOR_encode_uper;
+per_type_decoder_f LogicalOR_decode_aper;
+per_type_encoder_f LogicalOR_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LogicalOR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MME-Code.c b/src/codec_utils/E2SM_KPM/MME-Code.c
new file mode 100644 (file)
index 0000000..1690fca
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-Code.h"
+
+int
+MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 1)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_Code_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Code = {
+       "MME-Code",
+       "MME-Code",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_MME_Code_tags_1,
+       sizeof(asn_DEF_MME_Code_tags_1)
+               /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+       asn_DEF_MME_Code_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MME_Code_tags_1)
+               /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */
+       { &asn_OER_type_MME_Code_constr_1, &asn_PER_type_MME_Code_constr_1, MME_Code_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MME-Code.h b/src/codec_utils/E2SM_KPM/MME-Code.h
new file mode 100644 (file)
index 0000000..62da967
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MME_Code_H_
+#define        _MME_Code_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-Code */
+typedef OCTET_STRING_t  MME_Code_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_Code_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_Code;
+asn_struct_free_f MME_Code_free;
+asn_struct_print_f MME_Code_print;
+asn_constr_check_f MME_Code_constraint;
+ber_type_decoder_f MME_Code_decode_ber;
+der_type_encoder_f MME_Code_encode_der;
+xer_type_decoder_f MME_Code_decode_xer;
+xer_type_encoder_f MME_Code_encode_xer;
+oer_type_decoder_f MME_Code_decode_oer;
+oer_type_encoder_f MME_Code_encode_oer;
+per_type_decoder_f MME_Code_decode_uper;
+per_type_encoder_f MME_Code_encode_uper;
+per_type_decoder_f MME_Code_decode_aper;
+per_type_encoder_f MME_Code_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_Code_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MME-Group-ID.c b/src/codec_utils/E2SM_KPM/MME-Group-ID.c
new file mode 100644 (file)
index 0000000..1e80e52
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-Group-ID.h"
+
+int
+MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 2)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = {
+       "MME-Group-ID",
+       "MME-Group-ID",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_MME_Group_ID_tags_1,
+       sizeof(asn_DEF_MME_Group_ID_tags_1)
+               /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+       asn_DEF_MME_Group_ID_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MME_Group_ID_tags_1)
+               /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_MME_Group_ID_constr_1, &asn_PER_type_MME_Group_ID_constr_1, MME_Group_ID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MME-Group-ID.h b/src/codec_utils/E2SM_KPM/MME-Group-ID.h
new file mode 100644 (file)
index 0000000..a32f7de
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MME_Group_ID_H_
+#define        _MME_Group_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-Group-ID */
+typedef OCTET_STRING_t  MME_Group_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_Group_ID;
+asn_struct_free_f MME_Group_ID_free;
+asn_struct_print_f MME_Group_ID_print;
+asn_constr_check_f MME_Group_ID_constraint;
+ber_type_decoder_f MME_Group_ID_decode_ber;
+der_type_encoder_f MME_Group_ID_encode_der;
+xer_type_decoder_f MME_Group_ID_decode_xer;
+xer_type_encoder_f MME_Group_ID_encode_xer;
+oer_type_decoder_f MME_Group_ID_decode_oer;
+oer_type_encoder_f MME_Group_ID_encode_oer;
+per_type_decoder_f MME_Group_ID_decode_uper;
+per_type_encoder_f MME_Group_ID_encode_uper;
+per_type_decoder_f MME_Group_ID_decode_aper;
+per_type_encoder_f MME_Group_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_Group_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.c
new file mode 100644 (file)
index 0000000..a58dba6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MME-UE-S1AP-ID.h"
+
+int
+MME_UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_MME_UE_S1AP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID = {
+       "MME-UE-S1AP-ID",
+       "MME-UE-S1AP-ID",
+       &asn_OP_NativeInteger,
+       asn_DEF_MME_UE_S1AP_ID_tags_1,
+       sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+               /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+       asn_DEF_MME_UE_S1AP_ID_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1)
+               /sizeof(asn_DEF_MME_UE_S1AP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_MME_UE_S1AP_ID_constr_1, &asn_PER_type_MME_UE_S1AP_ID_constr_1, MME_UE_S1AP_ID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_MME_UE_S1AP_ID_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h b/src/codec_utils/E2SM_KPM/MME-UE-S1AP-ID.h
new file mode 100644 (file)
index 0000000..fd743c8
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MME_UE_S1AP_ID_H_
+#define        _MME_UE_S1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MME-UE-S1AP-ID */
+typedef unsigned long   MME_UE_S1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MME_UE_S1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MME_UE_S1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_MME_UE_S1AP_ID_specs_1;
+asn_struct_free_f MME_UE_S1AP_ID_free;
+asn_struct_print_f MME_UE_S1AP_ID_print;
+asn_constr_check_f MME_UE_S1AP_ID_constraint;
+ber_type_decoder_f MME_UE_S1AP_ID_decode_ber;
+der_type_encoder_f MME_UE_S1AP_ID_encode_der;
+xer_type_decoder_f MME_UE_S1AP_ID_decode_xer;
+xer_type_encoder_f MME_UE_S1AP_ID_encode_xer;
+oer_type_decoder_f MME_UE_S1AP_ID_decode_oer;
+oer_type_encoder_f MME_UE_S1AP_ID_encode_oer;
+per_type_decoder_f MME_UE_S1AP_ID_decode_uper;
+per_type_encoder_f MME_UE_S1AP_ID_encode_uper;
+per_type_decoder_f MME_UE_S1AP_ID_decode_aper;
+per_type_encoder_f MME_UE_S1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MME_UE_S1AP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/Makefile.am.libasncodec b/src/codec_utils/E2SM_KPM/Makefile.am.libasncodec
new file mode 100644 (file)
index 0000000..0d4a8d7
--- /dev/null
@@ -0,0 +1,330 @@
+ASN_MODULE_SRCS=       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/CGI.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NR-CGI.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/PLMNIdentity.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NRCellIdentity.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/EUTRACellIdentity.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/EUTRA-CGI.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/SD.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/S-NSSAI.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/SST.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/FiveQI.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/QCI.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/QosFlowIdentifier.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RANfunction-Name.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Format-Type.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Type.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Name.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB-DU.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-EN-GNB.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-ENB.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GUMMEI.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-Group-ID.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-Code.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalENB-ID.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-UE-S1AP-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID-Extension.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-DU.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-UP.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NGENB-CU-UE-W1AP-ID.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMF-UE-NGAP-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GUAMI.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFRegionID.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFSetID.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFPointer.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-F1AP-ID-List.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-F1AP-ID-Item.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-UE-F1AP-ID.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-List.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-Item.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-CP-UE-E1AP-ID.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RANUEID.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NG-RANnodeUEXnAPID.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalGNB-ID.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNGRANNodeID.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNgENB-ID.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NgENB-ID.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TimeStamp.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinIndex.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeValue.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GranularityPeriod.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LogicalOR.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementType.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeName.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeID.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementLabel.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCondInfo.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Type.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Expression.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Value.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeDefinition.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeList.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeItem.c   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeList.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeItem.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoList.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoItem.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoList.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoItem.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementData.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementDataItem.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecord.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecordItem.c  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-List.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-Item.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondList.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondItem.c    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidList.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidItem.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondList.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem-Choice.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP-Item.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList-PerGP.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem-PerGP.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubList.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubItem.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubList.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubItem.c \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportList.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportItem.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition-Format1.c        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format1.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format2.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format3.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format4.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format5.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader-Format1.c      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format1.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format2.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format3.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-RANfunction-Description.c       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-EventTriggerStyle-Item.c     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-ReportStyle-Item.c
+
+ASN_MODULE_HDRS=       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/CGI.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NR-CGI.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/PLMNIdentity.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NRCellIdentity.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/EUTRACellIdentity.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/EUTRA-CGI.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/SD.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/S-NSSAI.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/SST.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/FiveQI.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/QCI.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/QosFlowIdentifier.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RANfunction-Name.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Format-Type.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Type.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-Style-Name.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB-DU.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-EN-GNB.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-ENB.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GUMMEI.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-Group-ID.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-Code.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalENB-ID.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MME-UE-S1AP-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/ENB-UE-X2AP-ID-Extension.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-DU.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-UP.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-NG-ENB.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NGENB-CU-UE-W1AP-ID.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMF-UE-NGAP-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GUAMI.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFRegionID.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFSetID.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/AMFPointer.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-F1AP-ID-List.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-F1AP-ID-Item.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-UE-F1AP-ID.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-List.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEID-GNB-CU-CP-E1AP-ID-Item.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-CU-CP-UE-E1AP-ID.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RANUEID.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NG-RANnodeUEXnAPID.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalGNB-ID.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GNB-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNGRANNodeID.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GlobalNgENB-ID.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/NgENB-ID.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TimeStamp.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinIndex.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeValue.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/GranularityPeriod.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LogicalOR.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementType.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeName.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementTypeID.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementLabel.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCondInfo.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Type.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Expression.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/TestCond-Value.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeDefinition.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeList.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/BinRangeItem.h   \
+       ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeList.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/DistMeasurementBinRangeItem.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoList.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfoItem.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoList.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/LabelInfoItem.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementData.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementDataItem.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecord.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementRecordItem.h  \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-List.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementInfo-Action-Item.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondList.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondItem.h    \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidList.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MeasurementCondUEidItem.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondList.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingCondItem-Choice.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerGP-Item.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidList-PerGP.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidItem-PerGP.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubList.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUeCondPerSubItem.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubList.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/MatchingUEidPerSubItem.h \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportList.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/UEMeasurementReportItem.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-EventTriggerDefinition-Format1.h        \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format1.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format2.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format3.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format4.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-ActionDefinition-Format5.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationHeader-Format1.h      \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format1.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format2.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-IndicationMessage-Format3.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/E2SM-KPM-RANfunction-Description.h       \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-EventTriggerStyle-Item.h     \
+       ./../../E2_output/E2SM_KPM_v3.0_output/RIC-ReportStyle-Item.h
+
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/BOOLEAN.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BOOLEAN.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NULL.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NULL.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeReal.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeReal.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/REAL.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/PrintableString.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/PrintableString.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/REAL.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SET_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_SET_OF.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_application.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_application.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_ioc.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_system.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_internal.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_internal.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_random_fill.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_random_fill.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_bit_data.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_bit_data.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs_prim.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/asn_codecs_prim.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_length.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_length.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_tag.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_tlv_tag.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/ber_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/der_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/der_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_TYPE.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_TYPE.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/constraints.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constraints.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_support.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/xer_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_support.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_decoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_decoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_encoder.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_encoder.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/per_opentype.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/per_opentype.c
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_decoder.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_encoder.h
+ASN_MODULE_HDRS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_support.h
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_decoder.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_encoder.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/oer_support.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OPEN_TYPE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/INTEGER_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/BIT_STRING_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/OCTET_STRING_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeInteger_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/NativeEnumerated_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_CHOICE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SEQUENCE_oer.c
+ASN_MODULE_SRCS+=./../../E2_output/E2SM_KPM_v3.0_output/constr_SET_OF_oer.c
+
+ASN_MODULE_CFLAGS=
+
+lib_LTLIBRARIES+=libasncodec.la
+libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS)
+libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./../../E2_output/E2SM_KPM_v3.0_output/
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.c
new file mode 100644 (file)
index 0000000..f01893c
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondItem-Choice.h"
+
+#include "MeasurementLabel.h"
+#include "TestCondInfo.h"
+static asn_oer_constraints_t asn_OER_type_MatchingCondItem_Choice_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[] = {
+       { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.measLabel),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementLabel,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measLabel"
+               },
+       { ATF_POINTER, 0, offsetof(struct MatchingCondItem_Choice, choice.testCondInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TestCondInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "testCondInfo"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_Choice_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measLabel */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* testCondInfo */
+};
+asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1 = {
+       sizeof(struct MatchingCondItem_Choice),
+       offsetof(struct MatchingCondItem_Choice, _asn_ctx),
+       offsetof(struct MatchingCondItem_Choice, present),
+       sizeof(((struct MatchingCondItem_Choice *)0)->present),
+       asn_MAP_MatchingCondItem_Choice_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice = {
+       "MatchingCondItem-Choice",
+       "MatchingCondItem-Choice",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MatchingCondItem_Choice_constr_1, &asn_PER_type_MatchingCondItem_Choice_constr_1, CHOICE_constraint },
+       asn_MBR_MatchingCondItem_Choice_1,
+       2,      /* Elements count */
+       &asn_SPC_MatchingCondItem_Choice_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h b/src/codec_utils/E2SM_KPM/MatchingCondItem-Choice.h
new file mode 100644 (file)
index 0000000..bb2dfd2
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingCondItem_Choice_H_
+#define        _MatchingCondItem_Choice_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MatchingCondItem_Choice_PR {
+       MatchingCondItem_Choice_PR_NOTHING,     /* No components present */
+       MatchingCondItem_Choice_PR_measLabel,
+       MatchingCondItem_Choice_PR_testCondInfo
+       /* Extensions may appear below */
+       
+} MatchingCondItem_Choice_PR;
+
+/* Forward declarations */
+struct MeasurementLabel;
+struct TestCondInfo;
+
+/* MatchingCondItem-Choice */
+typedef struct MatchingCondItem_Choice {
+       MatchingCondItem_Choice_PR present;
+       union MatchingCondItem_Choice_u {
+               struct MeasurementLabel *measLabel;
+               struct TestCondInfo     *testCondInfo;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingCondItem_Choice_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem_Choice;
+extern asn_CHOICE_specifics_t asn_SPC_MatchingCondItem_Choice_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondItem_Choice_1[2];
+extern asn_per_constraints_t asn_PER_type_MatchingCondItem_Choice_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondItem_Choice_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem.c b/src/codec_utils/E2SM_KPM/MatchingCondItem.c
new file mode 100644 (file)
index 0000000..58339ba
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingCondItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingCondItem, matchingCondChoice),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MatchingCondItem_Choice,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingCondChoice"
+               },
+       { ATF_POINTER, 1, offsetof(struct MatchingCondItem, logicalOR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalOR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalOR"
+               },
+};
+static const int asn_MAP_MatchingCondItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MatchingCondItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingCondItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* matchingCondChoice */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1 = {
+       sizeof(struct MatchingCondItem),
+       offsetof(struct MatchingCondItem, _asn_ctx),
+       asn_MAP_MatchingCondItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MatchingCondItem_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondItem = {
+       "MatchingCondItem",
+       "MatchingCondItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingCondItem_tags_1,
+       sizeof(asn_DEF_MatchingCondItem_tags_1)
+               /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */
+       asn_DEF_MatchingCondItem_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingCondItem_tags_1)
+               /sizeof(asn_DEF_MatchingCondItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingCondItem_1,
+       2,      /* Elements count */
+       &asn_SPC_MatchingCondItem_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondItem.h b/src/codec_utils/E2SM_KPM/MatchingCondItem.h
new file mode 100644 (file)
index 0000000..6333593
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingCondItem_H_
+#define        _MatchingCondItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MatchingCondItem-Choice.h"
+#include "LogicalOR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingCondItem */
+typedef struct MatchingCondItem {
+       MatchingCondItem_Choice_t        matchingCondChoice;
+       LogicalOR_t     *logicalOR;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingCondItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingCondItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondList.c b/src/codec_utils/E2SM_KPM/MatchingCondList.c
new file mode 100644 (file)
index 0000000..2cac517
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingCondList.h"
+
+#include "MatchingCondItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingCondList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32768)) */};
+asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       15,  15,  1,  32768 }  /* (SIZE(1..32768)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingCondList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingCondItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingCondList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1 = {
+       sizeof(struct MatchingCondList),
+       offsetof(struct MatchingCondList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingCondList = {
+       "MatchingCondList",
+       "MatchingCondList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingCondList_tags_1,
+       sizeof(asn_DEF_MatchingCondList_tags_1)
+               /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */
+       asn_DEF_MatchingCondList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingCondList_tags_1)
+               /sizeof(asn_DEF_MatchingCondList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingCondList_constr_1, &asn_PER_type_MatchingCondList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingCondList_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingCondList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingCondList.h b/src/codec_utils/E2SM_KPM/MatchingCondList.h
new file mode 100644 (file)
index 0000000..e1c2bde
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingCondList_H_
+#define        _MatchingCondList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingCondItem;
+
+/* MatchingCondList */
+typedef struct MatchingCondList {
+       A_SEQUENCE_OF(struct MatchingCondItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingCondList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingCondList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingCondList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingCondList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingCondList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingCondList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.c
new file mode 100644 (file)
index 0000000..c30b535
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidItem-PerGP.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem_PerGP, ueID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_PerGP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_PerGP_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1 = {
+       sizeof(struct MatchingUEidItem_PerGP),
+       offsetof(struct MatchingUEidItem_PerGP, _asn_ctx),
+       asn_MAP_MatchingUEidItem_PerGP_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP = {
+       "MatchingUEidItem-PerGP",
+       "MatchingUEidItem-PerGP",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingUEidItem_PerGP_tags_1,
+       sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidItem_PerGP_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidItem_PerGP_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingUEidItem_PerGP_1,
+       1,      /* Elements count */
+       &asn_SPC_MatchingUEidItem_PerGP_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidItem-PerGP.h
new file mode 100644 (file)
index 0000000..3a8978f
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidItem_PerGP_H_
+#define        _MatchingUEidItem_PerGP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidItem-PerGP */
+typedef struct MatchingUEidItem_PerGP {
+       UEID_t   ueID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidItem_PerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem_PerGP;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_PerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_PerGP_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidItem_PerGP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem.c b/src/codec_utils/E2SM_KPM/MatchingUEidItem.c
new file mode 100644 (file)
index 0000000..a63a916
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidItem, ueID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1 = {
+       sizeof(struct MatchingUEidItem),
+       offsetof(struct MatchingUEidItem, _asn_ctx),
+       asn_MAP_MatchingUEidItem_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem = {
+       "MatchingUEidItem",
+       "MatchingUEidItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingUEidItem_tags_1,
+       sizeof(asn_DEF_MatchingUEidItem_tags_1)
+               /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidItem_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingUEidItem_tags_1)
+               /sizeof(asn_DEF_MatchingUEidItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingUEidItem_1,
+       1,      /* Elements count */
+       &asn_SPC_MatchingUEidItem_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidItem.h b/src/codec_utils/E2SM_KPM/MatchingUEidItem.h
new file mode 100644 (file)
index 0000000..5eb93a3
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidItem_H_
+#define        _MatchingUEidItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidItem */
+typedef struct MatchingUEidItem {
+       UEID_t   ueID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.c
new file mode 100644 (file)
index 0000000..c18bd5a
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidList-PerGP.h"
+
+#include "MatchingUEidItem-PerGP.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidList_PerGP_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingUEidItem_PerGP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidList_PerGP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1 = {
+       sizeof(struct MatchingUEidList_PerGP),
+       offsetof(struct MatchingUEidList_PerGP, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP = {
+       "MatchingUEidList-PerGP",
+       "MatchingUEidList-PerGP",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingUEidList_PerGP_tags_1,
+       sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidList_PerGP_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidList_PerGP_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingUEidList_PerGP_constr_1, &asn_PER_type_MatchingUEidList_PerGP_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingUEidList_PerGP_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingUEidList_PerGP_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidList-PerGP.h
new file mode 100644 (file)
index 0000000..b9e19fa
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidList_PerGP_H_
+#define        _MatchingUEidList_PerGP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidItem_PerGP;
+
+/* MatchingUEidList-PerGP */
+typedef struct MatchingUEidList_PerGP {
+       A_SEQUENCE_OF(struct MatchingUEidItem_PerGP) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidList_PerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList_PerGP;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_PerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidList_PerGP_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidList_PerGP_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidList_PerGP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList.c b/src/codec_utils/E2SM_KPM/MatchingUEidList.c
new file mode 100644 (file)
index 0000000..4af9330
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidList.h"
+
+#include "MatchingUEidItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingUEidItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1 = {
+       sizeof(struct MatchingUEidList),
+       offsetof(struct MatchingUEidList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidList = {
+       "MatchingUEidList",
+       "MatchingUEidList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingUEidList_tags_1,
+       sizeof(asn_DEF_MatchingUEidList_tags_1)
+               /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingUEidList_tags_1)
+               /sizeof(asn_DEF_MatchingUEidList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingUEidList_constr_1, &asn_PER_type_MatchingUEidList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingUEidList_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingUEidList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidList.h b/src/codec_utils/E2SM_KPM/MatchingUEidList.h
new file mode 100644 (file)
index 0000000..79a83e5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidList_H_
+#define        _MatchingUEidList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidItem;
+
+/* MatchingUEidList */
+typedef struct MatchingUEidList {
+       A_SEQUENCE_OF(struct MatchingUEidItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.c
new file mode 100644 (file)
index 0000000..4398cd5
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerGP-Item.h"
+
+#include "MatchingUEidList-PerGP.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_noUEmatched_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_noUEmatched_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_matchedPerGP_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_matchedPerGP_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_noUEmatched_value2enum_3[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_noUEmatched_enum2value_3[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_noUEmatched_specs_3 = {
+       asn_MAP_noUEmatched_value2enum_3,       /* "tag" => N; sorted by tag */
+       asn_MAP_noUEmatched_enum2value_3,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_noUEmatched_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_noUEmatched_3 = {
+       "noUEmatched",
+       "noUEmatched",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_noUEmatched_tags_3,
+       sizeof(asn_DEF_noUEmatched_tags_3)
+               /sizeof(asn_DEF_noUEmatched_tags_3[0]) - 1, /* 1 */
+       asn_DEF_noUEmatched_tags_3,     /* Same as above */
+       sizeof(asn_DEF_noUEmatched_tags_3)
+               /sizeof(asn_DEF_noUEmatched_tags_3[0]), /* 2 */
+       { &asn_OER_type_noUEmatched_constr_3, &asn_PER_type_noUEmatched_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_noUEmatched_specs_3    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_matchedPerGP_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.noUEmatched),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_noUEmatched_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "noUEmatched"
+               },
+       { ATF_POINTER, 0, offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, choice.oneOrMoreUEmatched),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingUEidList_PerGP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "oneOrMoreUEmatched"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_matchedPerGP_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noUEmatched */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* oneOrMoreUEmatched */
+};
+static asn_CHOICE_specifics_t asn_SPC_matchedPerGP_specs_2 = {
+       sizeof(struct MatchingUEidPerGP_Item__matchedPerGP),
+       offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, _asn_ctx),
+       offsetof(struct MatchingUEidPerGP_Item__matchedPerGP, present),
+       sizeof(((struct MatchingUEidPerGP_Item__matchedPerGP *)0)->present),
+       asn_MAP_matchedPerGP_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_matchedPerGP_2 = {
+       "matchedPerGP",
+       "matchedPerGP",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_matchedPerGP_constr_2, &asn_PER_type_matchedPerGP_constr_2, CHOICE_constraint },
+       asn_MBR_matchedPerGP_2,
+       2,      /* Elements count */
+       &asn_SPC_matchedPerGP_specs_2   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerGP_Item, matchedPerGP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_matchedPerGP_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchedPerGP"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerGP_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* matchedPerGP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1 = {
+       sizeof(struct MatchingUEidPerGP_Item),
+       offsetof(struct MatchingUEidPerGP_Item, _asn_ctx),
+       asn_MAP_MatchingUEidPerGP_Item_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item = {
+       "MatchingUEidPerGP-Item",
+       "MatchingUEidPerGP-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingUEidPerGP_Item_tags_1,
+       sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidPerGP_Item_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerGP_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingUEidPerGP_Item_1,
+       1,      /* Elements count */
+       &asn_SPC_MatchingUEidPerGP_Item_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP-Item.h
new file mode 100644 (file)
index 0000000..5109db8
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidPerGP_Item_H_
+#define        _MatchingUEidPerGP_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MatchingUEidPerGP_Item__matchedPerGP_PR {
+       MatchingUEidPerGP_Item__matchedPerGP_PR_NOTHING,        /* No components present */
+       MatchingUEidPerGP_Item__matchedPerGP_PR_noUEmatched,
+       MatchingUEidPerGP_Item__matchedPerGP_PR_oneOrMoreUEmatched
+       /* Extensions may appear below */
+       
+} MatchingUEidPerGP_Item__matchedPerGP_PR;
+typedef enum MatchingUEidPerGP_Item__matchedPerGP__noUEmatched {
+       MatchingUEidPerGP_Item__matchedPerGP__noUEmatched_true  = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MatchingUEidPerGP_Item__matchedPerGP__noUEmatched;
+
+/* Forward declarations */
+struct MatchingUEidList_PerGP;
+
+/* MatchingUEidPerGP-Item */
+typedef struct MatchingUEidPerGP_Item {
+       struct MatchingUEidPerGP_Item__matchedPerGP {
+               MatchingUEidPerGP_Item__matchedPerGP_PR present;
+               union MatchingUEidPerGP_Item__matchedPerGP_u {
+                       long     noUEmatched;
+                       struct MatchingUEidList_PerGP   *oneOrMoreUEmatched;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } matchedPerGP;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerGP_Item_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_noUEmatched_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerGP_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerGP_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.c
new file mode 100644 (file)
index 0000000..4b58a13
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerGP.h"
+
+#include "MatchingUEidPerGP-Item.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidPerGP_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingUEidPerGP_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerGP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1 = {
+       sizeof(struct MatchingUEidPerGP),
+       offsetof(struct MatchingUEidPerGP, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP = {
+       "MatchingUEidPerGP",
+       "MatchingUEidPerGP",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingUEidPerGP_tags_1,
+       sizeof(asn_DEF_MatchingUEidPerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidPerGP_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MatchingUEidPerGP_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerGP_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingUEidPerGP_constr_1, &asn_PER_type_MatchingUEidPerGP_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingUEidPerGP_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingUEidPerGP_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerGP.h
new file mode 100644 (file)
index 0000000..a545432
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidPerGP_H_
+#define        _MatchingUEidPerGP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidPerGP_Item;
+
+/* MatchingUEidPerGP */
+typedef struct MatchingUEidPerGP {
+       A_SEQUENCE_OF(struct MatchingUEidPerGP_Item) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerGP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerGP;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerGP_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerGP_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidPerGP_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerGP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.c
new file mode 100644 (file)
index 0000000..7112346
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerSubItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUEidPerSubItem, ueID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUEidPerSubItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ueID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1 = {
+       sizeof(struct MatchingUEidPerSubItem),
+       offsetof(struct MatchingUEidPerSubItem, _asn_ctx),
+       asn_MAP_MatchingUEidPerSubItem_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem = {
+       "MatchingUEidPerSubItem",
+       "MatchingUEidPerSubItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingUEidPerSubItem_tags_1,
+       sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidPerSubItem_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerSubItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingUEidPerSubItem_1,
+       1,      /* Elements count */
+       &asn_SPC_MatchingUEidPerSubItem_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubItem.h
new file mode 100644 (file)
index 0000000..6a130fc
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidPerSubItem_H_
+#define        _MatchingUEidPerSubItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUEidPerSubItem */
+typedef struct MatchingUEidPerSubItem {
+       UEID_t   ueID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerSubItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUEidPerSubItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubItem_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerSubItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.c
new file mode 100644 (file)
index 0000000..1f4fc06
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUEidPerSubList.h"
+
+#include "MatchingUEidPerSubItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUEidPerSubList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(2..65535)) */};
+asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  2,  65535 }  /* (SIZE(2..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingUEidPerSubItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUEidPerSubList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1 = {
+       sizeof(struct MatchingUEidPerSubList),
+       offsetof(struct MatchingUEidPerSubList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList = {
+       "MatchingUEidPerSubList",
+       "MatchingUEidPerSubList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingUEidPerSubList_tags_1,
+       sizeof(asn_DEF_MatchingUEidPerSubList_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUEidPerSubList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MatchingUEidPerSubList_tags_1)
+               /sizeof(asn_DEF_MatchingUEidPerSubList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingUEidPerSubList_constr_1, &asn_PER_type_MatchingUEidPerSubList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingUEidPerSubList_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingUEidPerSubList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h b/src/codec_utils/E2SM_KPM/MatchingUEidPerSubList.h
new file mode 100644 (file)
index 0000000..d0cb106
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUEidPerSubList_H_
+#define        _MatchingUEidPerSubList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidPerSubItem;
+
+/* MatchingUEidPerSubList */
+typedef struct MatchingUEidPerSubList {
+       A_SEQUENCE_OF(struct MatchingUEidPerSubItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUEidPerSubList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUEidPerSubList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUEidPerSubList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUEidPerSubList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUEidPerSubList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUEidPerSubList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.c
new file mode 100644 (file)
index 0000000..7f0d783
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUeCondPerSubItem.h"
+
+asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MatchingUeCondPerSubItem, testCondInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TestCondInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "testCondInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct MatchingUeCondPerSubItem, logicalOR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalOR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalOR"
+               },
+};
+static const int asn_MAP_MatchingUeCondPerSubItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MatchingUeCondPerSubItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testCondInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalOR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1 = {
+       sizeof(struct MatchingUeCondPerSubItem),
+       offsetof(struct MatchingUeCondPerSubItem, _asn_ctx),
+       asn_MAP_MatchingUeCondPerSubItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MatchingUeCondPerSubItem_oms_1, /* Optional members */
+       0, 1,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem = {
+       "MatchingUeCondPerSubItem",
+       "MatchingUeCondPerSubItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MatchingUeCondPerSubItem_tags_1,
+       sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1)
+               /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUeCondPerSubItem_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1)
+               /sizeof(asn_DEF_MatchingUeCondPerSubItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MatchingUeCondPerSubItem_1,
+       2,      /* Elements count */
+       &asn_SPC_MatchingUeCondPerSubItem_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubItem.h
new file mode 100644 (file)
index 0000000..1fc7439
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUeCondPerSubItem_H_
+#define        _MatchingUeCondPerSubItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TestCondInfo.h"
+#include "LogicalOR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MatchingUeCondPerSubItem */
+typedef struct MatchingUeCondPerSubItem {
+       TestCondInfo_t   testCondInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       LogicalOR_t     *logicalOR;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUeCondPerSubItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MatchingUeCondPerSubItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUeCondPerSubItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.c
new file mode 100644 (file)
index 0000000..302c495
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MatchingUeCondPerSubList.h"
+
+#include "MatchingUeCondPerSubItem.h"
+static asn_oer_constraints_t asn_OER_type_MatchingUeCondPerSubList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32768)) */};
+asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       15,  15,  1,  32768 }  /* (SIZE(1..32768)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MatchingUeCondPerSubItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MatchingUeCondPerSubList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1 = {
+       sizeof(struct MatchingUeCondPerSubList),
+       offsetof(struct MatchingUeCondPerSubList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList = {
+       "MatchingUeCondPerSubList",
+       "MatchingUeCondPerSubList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MatchingUeCondPerSubList_tags_1,
+       sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1)
+               /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */
+       asn_DEF_MatchingUeCondPerSubList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1)
+               /sizeof(asn_DEF_MatchingUeCondPerSubList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MatchingUeCondPerSubList_constr_1, &asn_PER_type_MatchingUeCondPerSubList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MatchingUeCondPerSubList_1,
+       1,      /* Single element */
+       &asn_SPC_MatchingUeCondPerSubList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h b/src/codec_utils/E2SM_KPM/MatchingUeCondPerSubList.h
new file mode 100644 (file)
index 0000000..bc0a0b8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MatchingUeCondPerSubList_H_
+#define        _MatchingUeCondPerSubList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUeCondPerSubItem;
+
+/* MatchingUeCondPerSubList */
+typedef struct MatchingUeCondPerSubList {
+       A_SEQUENCE_OF(struct MatchingUeCondPerSubItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MatchingUeCondPerSubList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MatchingUeCondPerSubList;
+extern asn_SET_OF_specifics_t asn_SPC_MatchingUeCondPerSubList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MatchingUeCondPerSubList_1[1];
+extern asn_per_constraints_t asn_PER_type_MatchingUeCondPerSubList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MatchingUeCondPerSubList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondItem.c b/src/codec_utils/E2SM_KPM/MeasurementCondItem.c
new file mode 100644 (file)
index 0000000..5c9cb97
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondItem.h"
+
+#include "BinRangeDefinition.h"
+asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, measType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasurementType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondItem, matchingCond),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingCondList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingCond"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementCondItem, binRangeDef),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeDefinition,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeDef"
+               },
+};
+static const int asn_MAP_MeasurementCondItem_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MeasurementCondItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1 = {
+       sizeof(struct MeasurementCondItem),
+       offsetof(struct MeasurementCondItem, _asn_ctx),
+       asn_MAP_MeasurementCondItem_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasurementCondItem_oms_1,      /* Optional members */
+       0, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem = {
+       "MeasurementCondItem",
+       "MeasurementCondItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementCondItem_tags_1,
+       sizeof(asn_DEF_MeasurementCondItem_tags_1)
+               /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementCondItem_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementCondItem_tags_1)
+               /sizeof(asn_DEF_MeasurementCondItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementCondItem_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasurementCondItem_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondItem.h b/src/codec_utils/E2SM_KPM/MeasurementCondItem.h
new file mode 100644 (file)
index 0000000..0325a55
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementCondItem_H_
+#define        _MeasurementCondItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MatchingCondList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeDefinition;
+
+/* MeasurementCondItem */
+typedef struct MeasurementCondItem {
+       MeasurementType_t        measType;
+       MatchingCondList_t       matchingCond;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct BinRangeDefinition       *binRangeDef;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementCondItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondItem_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondList.c b/src/codec_utils/E2SM_KPM/MeasurementCondList.c
new file mode 100644 (file)
index 0000000..e188f44
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondList.h"
+
+#include "MeasurementCondItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementCondList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementCondList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasurementCondItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementCondList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1 = {
+       sizeof(struct MeasurementCondList),
+       offsetof(struct MeasurementCondList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondList = {
+       "MeasurementCondList",
+       "MeasurementCondList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementCondList_tags_1,
+       sizeof(asn_DEF_MeasurementCondList_tags_1)
+               /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementCondList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementCondList_tags_1)
+               /sizeof(asn_DEF_MeasurementCondList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementCondList_constr_1, &asn_PER_type_MeasurementCondList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementCondList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementCondList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondList.h b/src/codec_utils/E2SM_KPM/MeasurementCondList.h
new file mode 100644 (file)
index 0000000..185a07b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementCondList_H_
+#define        _MeasurementCondList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementCondItem;
+
+/* MeasurementCondList */
+typedef struct MeasurementCondList {
+       A_SEQUENCE_OF(struct MeasurementCondItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementCondList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementCondList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.c
new file mode 100644 (file)
index 0000000..dad4d9a
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondUEidItem.h"
+
+#include "MatchingUEidList.h"
+#include "MatchingUEidPerGP.h"
+asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, measType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasurementType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementCondUEidItem, matchingCond),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingCondList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingCond"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasurementCondUEidItem, matchingUEidList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingUEidList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingUEidList"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementCondUEidItem, matchingUEidPerGP),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MatchingUEidPerGP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "matchingUEidPerGP"
+               },
+};
+static const int asn_MAP_MeasurementCondUEidItem_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementCondUEidItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* matchingCond */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* matchingUEidList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* matchingUEidPerGP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1 = {
+       sizeof(struct MeasurementCondUEidItem),
+       offsetof(struct MeasurementCondUEidItem, _asn_ctx),
+       asn_MAP_MeasurementCondUEidItem_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_MeasurementCondUEidItem_oms_1,  /* Optional members */
+       1, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem = {
+       "MeasurementCondUEidItem",
+       "MeasurementCondUEidItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementCondUEidItem_tags_1,
+       sizeof(asn_DEF_MeasurementCondUEidItem_tags_1)
+               /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementCondUEidItem_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasurementCondUEidItem_tags_1)
+               /sizeof(asn_DEF_MeasurementCondUEidItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementCondUEidItem_1,
+       4,      /* Elements count */
+       &asn_SPC_MeasurementCondUEidItem_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h b/src/codec_utils/E2SM_KPM/MeasurementCondUEidItem.h
new file mode 100644 (file)
index 0000000..e873b72
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementCondUEidItem_H_
+#define        _MeasurementCondUEidItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "MatchingCondList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MatchingUEidList;
+struct MatchingUEidPerGP;
+
+/* MeasurementCondUEidItem */
+typedef struct MeasurementCondUEidItem {
+       MeasurementType_t        measType;
+       MatchingCondList_t       matchingCond;
+       struct MatchingUEidList *matchingUEidList;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MatchingUEidPerGP        *matchingUEidPerGP;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementCondUEidItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidItem_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondUEidItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.c
new file mode 100644 (file)
index 0000000..de309b9
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementCondUEidList.h"
+
+#include "MeasurementCondUEidItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementCondUEidList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasurementCondUEidItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementCondUEidList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1 = {
+       sizeof(struct MeasurementCondUEidList),
+       offsetof(struct MeasurementCondUEidList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList = {
+       "MeasurementCondUEidList",
+       "MeasurementCondUEidList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementCondUEidList_tags_1,
+       sizeof(asn_DEF_MeasurementCondUEidList_tags_1)
+               /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementCondUEidList_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasurementCondUEidList_tags_1)
+               /sizeof(asn_DEF_MeasurementCondUEidList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementCondUEidList_constr_1, &asn_PER_type_MeasurementCondUEidList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementCondUEidList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementCondUEidList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h b/src/codec_utils/E2SM_KPM/MeasurementCondUEidList.h
new file mode 100644 (file)
index 0000000..3321055
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementCondUEidList_H_
+#define        _MeasurementCondUEidList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementCondUEidItem;
+
+/* MeasurementCondUEidList */
+typedef struct MeasurementCondUEidList {
+       A_SEQUENCE_OF(struct MeasurementCondUEidItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementCondUEidList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementCondUEidList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementCondUEidList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementCondUEidList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementCondUEidList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementCondUEidList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementData.c b/src/codec_utils/E2SM_KPM/MeasurementData.c
new file mode 100644 (file)
index 0000000..b690dba
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementData.h"
+
+#include "MeasurementDataItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementData_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementData_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementData_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasurementDataItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementData_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1 = {
+       sizeof(struct MeasurementData),
+       offsetof(struct MeasurementData, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementData = {
+       "MeasurementData",
+       "MeasurementData",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementData_tags_1,
+       sizeof(asn_DEF_MeasurementData_tags_1)
+               /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementData_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasurementData_tags_1)
+               /sizeof(asn_DEF_MeasurementData_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementData_constr_1, &asn_PER_type_MeasurementData_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementData_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementData_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementData.h b/src/codec_utils/E2SM_KPM/MeasurementData.h
new file mode 100644 (file)
index 0000000..d4f10a0
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementData_H_
+#define        _MeasurementData_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementDataItem;
+
+/* MeasurementData */
+typedef struct MeasurementData {
+       A_SEQUENCE_OF(struct MeasurementDataItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementData_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementData;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementData_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementData_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementData_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementData_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementDataItem.c b/src/codec_utils/E2SM_KPM/MeasurementDataItem.c
new file mode 100644 (file)
index 0000000..118d214
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementDataItem.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_incompleteFlag_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_incompleteFlag_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_incompleteFlag_value2enum_3[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_incompleteFlag_enum2value_3[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_incompleteFlag_specs_3 = {
+       asn_MAP_incompleteFlag_value2enum_3,    /* "tag" => N; sorted by tag */
+       asn_MAP_incompleteFlag_enum2value_3,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_incompleteFlag_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3 = {
+       "incompleteFlag",
+       "incompleteFlag",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_incompleteFlag_tags_3,
+       sizeof(asn_DEF_incompleteFlag_tags_3)
+               /sizeof(asn_DEF_incompleteFlag_tags_3[0]) - 1, /* 1 */
+       asn_DEF_incompleteFlag_tags_3,  /* Same as above */
+       sizeof(asn_DEF_incompleteFlag_tags_3)
+               /sizeof(asn_DEF_incompleteFlag_tags_3[0]), /* 2 */
+       { &asn_OER_type_incompleteFlag_constr_3, &asn_PER_type_incompleteFlag_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_incompleteFlag_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementDataItem, measRecord),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementRecord,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measRecord"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementDataItem, incompleteFlag),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_incompleteFlag_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "incompleteFlag"
+               },
+};
+static const int asn_MAP_MeasurementDataItem_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_MeasurementDataItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementDataItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measRecord */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* incompleteFlag */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1 = {
+       sizeof(struct MeasurementDataItem),
+       offsetof(struct MeasurementDataItem, _asn_ctx),
+       asn_MAP_MeasurementDataItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MeasurementDataItem_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem = {
+       "MeasurementDataItem",
+       "MeasurementDataItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementDataItem_tags_1,
+       sizeof(asn_DEF_MeasurementDataItem_tags_1)
+               /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementDataItem_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementDataItem_tags_1)
+               /sizeof(asn_DEF_MeasurementDataItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementDataItem_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasurementDataItem_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementDataItem.h b/src/codec_utils/E2SM_KPM/MeasurementDataItem.h
new file mode 100644 (file)
index 0000000..9cb1674
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementDataItem_H_
+#define        _MeasurementDataItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementRecord.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementDataItem__incompleteFlag {
+       MeasurementDataItem__incompleteFlag_true        = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementDataItem__incompleteFlag;
+
+/* MeasurementDataItem */
+typedef struct MeasurementDataItem {
+       MeasurementRecord_t      measRecord;
+       long    *incompleteFlag;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementDataItem_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_incompleteFlag_3;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementDataItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementDataItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementDataItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementDataItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.c
new file mode 100644 (file)
index 0000000..4ecfcb4
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfo-Action-Item.h"
+
+#include "BinRangeDefinition.h"
+asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfo_Action_Item, measName),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementTypeName,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measName"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasurementInfo_Action_Item, measID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementTypeID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measID"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementInfo_Action_Item, binRangeDef),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BinRangeDefinition,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "binRangeDef"
+               },
+};
+static const int asn_MAP_MeasurementInfo_Action_Item_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfo_Action_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* binRangeDef */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1 = {
+       sizeof(struct MeasurementInfo_Action_Item),
+       offsetof(struct MeasurementInfo_Action_Item, _asn_ctx),
+       asn_MAP_MeasurementInfo_Action_Item_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasurementInfo_Action_Item_oms_1,      /* Optional members */
+       1, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item = {
+       "MeasurementInfo-Action-Item",
+       "MeasurementInfo-Action-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementInfo_Action_Item_tags_1,
+       sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1)
+               /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementInfo_Action_Item_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1)
+               /sizeof(asn_DEF_MeasurementInfo_Action_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementInfo_Action_Item_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasurementInfo_Action_Item_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-Item.h
new file mode 100644 (file)
index 0000000..b670e3b
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementInfo_Action_Item_H_
+#define        _MeasurementInfo_Action_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementTypeName.h"
+#include "MeasurementTypeID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BinRangeDefinition;
+
+/* MeasurementInfo-Action-Item */
+typedef struct MeasurementInfo_Action_Item {
+       MeasurementTypeName_t    measName;
+       MeasurementTypeID_t     *measID;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct BinRangeDefinition       *binRangeDef;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementInfo_Action_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfo_Action_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfo_Action_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.c
new file mode 100644 (file)
index 0000000..d279577
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfo-Action-List.h"
+
+#include "MeasurementInfo-Action-Item.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementInfo_Action_List_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasurementInfo_Action_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfo_Action_List_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1 = {
+       sizeof(struct MeasurementInfo_Action_List),
+       offsetof(struct MeasurementInfo_Action_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List = {
+       "MeasurementInfo-Action-List",
+       "MeasurementInfo-Action-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementInfo_Action_List_tags_1,
+       sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1)
+               /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementInfo_Action_List_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1)
+               /sizeof(asn_DEF_MeasurementInfo_Action_List_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementInfo_Action_List_constr_1, &asn_PER_type_MeasurementInfo_Action_List_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementInfo_Action_List_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementInfo_Action_List_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h b/src/codec_utils/E2SM_KPM/MeasurementInfo-Action-List.h
new file mode 100644 (file)
index 0000000..7c81cf9
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementInfo_Action_List_H_
+#define        _MeasurementInfo_Action_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementInfo_Action_Item;
+
+/* MeasurementInfo-Action-List */
+typedef struct MeasurementInfo_Action_List {
+       A_SEQUENCE_OF(struct MeasurementInfo_Action_Item) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementInfo_Action_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfo_Action_List;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfo_Action_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfo_Action_List_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementInfo_Action_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfo_Action_List_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoItem.c b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.c
new file mode 100644 (file)
index 0000000..ecd8aea
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfoItem.h"
+
+asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, measType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasurementType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementInfoItem, labelInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LabelInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "labelInfoList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfoItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementInfoItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* labelInfoList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1 = {
+       sizeof(struct MeasurementInfoItem),
+       offsetof(struct MeasurementInfoItem, _asn_ctx),
+       asn_MAP_MeasurementInfoItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem = {
+       "MeasurementInfoItem",
+       "MeasurementInfoItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementInfoItem_tags_1,
+       sizeof(asn_DEF_MeasurementInfoItem_tags_1)
+               /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementInfoItem_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementInfoItem_tags_1)
+               /sizeof(asn_DEF_MeasurementInfoItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementInfoItem_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasurementInfoItem_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoItem.h b/src/codec_utils/E2SM_KPM/MeasurementInfoItem.h
new file mode 100644 (file)
index 0000000..1f294a2
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementInfoItem_H_
+#define        _MeasurementInfoItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementType.h"
+#include "LabelInfoList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementInfoItem */
+typedef struct MeasurementInfoItem {
+       MeasurementType_t        measType;
+       LabelInfoList_t  labelInfoList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInfoItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfoItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoList.c b/src/codec_utils/E2SM_KPM/MeasurementInfoList.c
new file mode 100644 (file)
index 0000000..09f82e9
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementInfoList.h"
+
+#include "MeasurementInfoItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasurementInfoItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1 = {
+       sizeof(struct MeasurementInfoList),
+       offsetof(struct MeasurementInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList = {
+       "MeasurementInfoList",
+       "MeasurementInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementInfoList_tags_1,
+       sizeof(asn_DEF_MeasurementInfoList_tags_1)
+               /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementInfoList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementInfoList_tags_1)
+               /sizeof(asn_DEF_MeasurementInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementInfoList_constr_1, &asn_PER_type_MeasurementInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementInfoList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementInfoList.h b/src/codec_utils/E2SM_KPM/MeasurementInfoList.h
new file mode 100644 (file)
index 0000000..cba8a12
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementInfoList_H_
+#define        _MeasurementInfoList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementInfoItem;
+
+/* MeasurementInfoList */
+typedef struct MeasurementInfoList {
+       A_SEQUENCE_OF(struct MeasurementInfoItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementLabel.c b/src/codec_utils/E2SM_KPM/MeasurementLabel.c
new file mode 100644 (file)
index 0000000..682bfcd
--- /dev/null
@@ -0,0 +1,958 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementLabel.h"
+
+#include "S-NSSAI.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_aRPmax_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 15)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_aRPmin_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 15)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_bitrateRange_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_layerMU_MIMO_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_distBinX_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_distBinY_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_distBinZ_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_ssbIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_nonGoB_BFmode_Index_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65535)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_mIMO_mode_Index_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 2)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_type_noLabel_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_noLabel_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sUM_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sUM_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_preLabelOverride_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_preLabelOverride_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_startEndInd_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_startEndInd_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_min_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_min_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_max_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_max_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_avg_constr_35 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_avg_constr_35 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aRPmax_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_aRPmax_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  1,  15 }   /* (1..15,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aRPmin_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_aRPmin_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  1,  15 }   /* (1..15,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_bitrateRange_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_bitrateRange_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_layerMU_MIMO_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_layerMU_MIMO_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinX_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_distBinX_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinY_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_distBinY_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_distBinZ_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_distBinZ_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ssbIndex_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_ssbIndex_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nonGoB_BFmode_Index_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_nonGoB_BFmode_Index_constr_40 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16,  16,  1,  65535 }      /* (1..65535,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mIMO_mode_Index_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_memb_mIMO_mode_Index_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  1,  2 }    /* (1..2,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_noLabel_value2enum_2[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_noLabel_enum2value_2[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_noLabel_specs_2 = {
+       asn_MAP_noLabel_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_noLabel_enum2value_2,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_noLabel_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_noLabel_2 = {
+       "noLabel",
+       "noLabel",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_noLabel_tags_2,
+       sizeof(asn_DEF_noLabel_tags_2)
+               /sizeof(asn_DEF_noLabel_tags_2[0]) - 1, /* 1 */
+       asn_DEF_noLabel_tags_2, /* Same as above */
+       sizeof(asn_DEF_noLabel_tags_2)
+               /sizeof(asn_DEF_noLabel_tags_2[0]), /* 2 */
+       { &asn_OER_type_noLabel_constr_2, &asn_PER_type_noLabel_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_noLabel_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sUM_value2enum_16[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_sUM_enum2value_16[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sUM_specs_16 = {
+       asn_MAP_sUM_value2enum_16,      /* "tag" => N; sorted by tag */
+       asn_MAP_sUM_enum2value_16,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sUM_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sUM_16 = {
+       "sUM",
+       "sUM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sUM_tags_16,
+       sizeof(asn_DEF_sUM_tags_16)
+               /sizeof(asn_DEF_sUM_tags_16[0]) - 1, /* 1 */
+       asn_DEF_sUM_tags_16,    /* Same as above */
+       sizeof(asn_DEF_sUM_tags_16)
+               /sizeof(asn_DEF_sUM_tags_16[0]), /* 2 */
+       { &asn_OER_type_sUM_constr_16, &asn_PER_type_sUM_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sUM_specs_16   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_preLabelOverride_value2enum_22[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_preLabelOverride_enum2value_22[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_preLabelOverride_specs_22 = {
+       asn_MAP_preLabelOverride_value2enum_22, /* "tag" => N; sorted by tag */
+       asn_MAP_preLabelOverride_enum2value_22, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_preLabelOverride_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22 = {
+       "preLabelOverride",
+       "preLabelOverride",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_preLabelOverride_tags_22,
+       sizeof(asn_DEF_preLabelOverride_tags_22)
+               /sizeof(asn_DEF_preLabelOverride_tags_22[0]) - 1, /* 1 */
+       asn_DEF_preLabelOverride_tags_22,       /* Same as above */
+       sizeof(asn_DEF_preLabelOverride_tags_22)
+               /sizeof(asn_DEF_preLabelOverride_tags_22[0]), /* 2 */
+       { &asn_OER_type_preLabelOverride_constr_22, &asn_PER_type_preLabelOverride_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_preLabelOverride_specs_22      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_startEndInd_value2enum_25[] = {
+       { 0,    5,      "start" },
+       { 1,    3,      "end" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_startEndInd_enum2value_25[] = {
+       1,      /* end(1) */
+       0       /* start(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_startEndInd_specs_25 = {
+       asn_MAP_startEndInd_value2enum_25,      /* "tag" => N; sorted by tag */
+       asn_MAP_startEndInd_enum2value_25,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       3,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_startEndInd_tags_25[] = {
+       (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_startEndInd_25 = {
+       "startEndInd",
+       "startEndInd",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_startEndInd_tags_25,
+       sizeof(asn_DEF_startEndInd_tags_25)
+               /sizeof(asn_DEF_startEndInd_tags_25[0]) - 1, /* 1 */
+       asn_DEF_startEndInd_tags_25,    /* Same as above */
+       sizeof(asn_DEF_startEndInd_tags_25)
+               /sizeof(asn_DEF_startEndInd_tags_25[0]), /* 2 */
+       { &asn_OER_type_startEndInd_constr_25, &asn_PER_type_startEndInd_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_startEndInd_specs_25   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_min_value2enum_29[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_min_enum2value_29[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_min_specs_29 = {
+       asn_MAP_min_value2enum_29,      /* "tag" => N; sorted by tag */
+       asn_MAP_min_enum2value_29,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_min_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_min_29 = {
+       "min",
+       "min",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_min_tags_29,
+       sizeof(asn_DEF_min_tags_29)
+               /sizeof(asn_DEF_min_tags_29[0]) - 1, /* 1 */
+       asn_DEF_min_tags_29,    /* Same as above */
+       sizeof(asn_DEF_min_tags_29)
+               /sizeof(asn_DEF_min_tags_29[0]), /* 2 */
+       { &asn_OER_type_min_constr_29, &asn_PER_type_min_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_min_specs_29   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_max_value2enum_32[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_max_enum2value_32[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_max_specs_32 = {
+       asn_MAP_max_value2enum_32,      /* "tag" => N; sorted by tag */
+       asn_MAP_max_enum2value_32,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_max_tags_32[] = {
+       (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_max_32 = {
+       "max",
+       "max",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_max_tags_32,
+       sizeof(asn_DEF_max_tags_32)
+               /sizeof(asn_DEF_max_tags_32[0]) - 1, /* 1 */
+       asn_DEF_max_tags_32,    /* Same as above */
+       sizeof(asn_DEF_max_tags_32)
+               /sizeof(asn_DEF_max_tags_32[0]), /* 2 */
+       { &asn_OER_type_max_constr_32, &asn_PER_type_max_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_max_specs_32   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_avg_value2enum_35[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_avg_enum2value_35[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_avg_specs_35 = {
+       asn_MAP_avg_value2enum_35,      /* "tag" => N; sorted by tag */
+       asn_MAP_avg_enum2value_35,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_avg_tags_35[] = {
+       (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_avg_35 = {
+       "avg",
+       "avg",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_avg_tags_35,
+       sizeof(asn_DEF_avg_tags_35)
+               /sizeof(asn_DEF_avg_tags_35[0]) - 1, /* 1 */
+       asn_DEF_avg_tags_35,    /* Same as above */
+       sizeof(asn_DEF_avg_tags_35)
+               /sizeof(asn_DEF_avg_tags_35[0]), /* 2 */
+       { &asn_OER_type_avg_constr_35, &asn_PER_type_avg_constr_35, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_avg_specs_35   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementLabel_1[] = {
+       { ATF_POINTER, 24, offsetof(struct MeasurementLabel, noLabel),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_noLabel_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "noLabel"
+               },
+       { ATF_POINTER, 23, offsetof(struct MeasurementLabel, plmnID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmnID"
+               },
+       { ATF_POINTER, 22, offsetof(struct MeasurementLabel, sliceID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_S_NSSAI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sliceID"
+               },
+       { ATF_POINTER, 21, offsetof(struct MeasurementLabel, fiveQI),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FiveQI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fiveQI"
+               },
+       { ATF_POINTER, 20, offsetof(struct MeasurementLabel, qFI),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QosFlowIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qFI"
+               },
+       { ATF_POINTER, 19, offsetof(struct MeasurementLabel, qCI),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QCI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qCI"
+               },
+       { ATF_POINTER, 18, offsetof(struct MeasurementLabel, qCImax),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QCI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qCImax"
+               },
+       { ATF_POINTER, 17, offsetof(struct MeasurementLabel, qCImin),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QCI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qCImin"
+               },
+       { ATF_POINTER, 16, offsetof(struct MeasurementLabel, aRPmax),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_aRPmax_constr_12, &asn_PER_memb_aRPmax_constr_12,  memb_aRPmax_constraint_1 },
+               0, 0, /* No default value */
+               "aRPmax"
+               },
+       { ATF_POINTER, 15, offsetof(struct MeasurementLabel, aRPmin),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_aRPmin_constr_13, &asn_PER_memb_aRPmin_constr_13,  memb_aRPmin_constraint_1 },
+               0, 0, /* No default value */
+               "aRPmin"
+               },
+       { ATF_POINTER, 14, offsetof(struct MeasurementLabel, bitrateRange),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_bitrateRange_constr_14, &asn_PER_memb_bitrateRange_constr_14,  memb_bitrateRange_constraint_1 },
+               0, 0, /* No default value */
+               "bitrateRange"
+               },
+       { ATF_POINTER, 13, offsetof(struct MeasurementLabel, layerMU_MIMO),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_layerMU_MIMO_constr_15, &asn_PER_memb_layerMU_MIMO_constr_15,  memb_layerMU_MIMO_constraint_1 },
+               0, 0, /* No default value */
+               "layerMU-MIMO"
+               },
+       { ATF_POINTER, 12, offsetof(struct MeasurementLabel, sUM),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sUM_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sUM"
+               },
+       { ATF_POINTER, 11, offsetof(struct MeasurementLabel, distBinX),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_distBinX_constr_19, &asn_PER_memb_distBinX_constr_19,  memb_distBinX_constraint_1 },
+               0, 0, /* No default value */
+               "distBinX"
+               },
+       { ATF_POINTER, 10, offsetof(struct MeasurementLabel, distBinY),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_distBinY_constr_20, &asn_PER_memb_distBinY_constr_20,  memb_distBinY_constraint_1 },
+               0, 0, /* No default value */
+               "distBinY"
+               },
+       { ATF_POINTER, 9, offsetof(struct MeasurementLabel, distBinZ),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_distBinZ_constr_21, &asn_PER_memb_distBinZ_constr_21,  memb_distBinZ_constraint_1 },
+               0, 0, /* No default value */
+               "distBinZ"
+               },
+       { ATF_POINTER, 8, offsetof(struct MeasurementLabel, preLabelOverride),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_preLabelOverride_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "preLabelOverride"
+               },
+       { ATF_POINTER, 7, offsetof(struct MeasurementLabel, startEndInd),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_startEndInd_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "startEndInd"
+               },
+       { ATF_POINTER, 6, offsetof(struct MeasurementLabel, min),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_min_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "min"
+               },
+       { ATF_POINTER, 5, offsetof(struct MeasurementLabel, max),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_max_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "max"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasurementLabel, avg),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_avg_35,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "avg"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasurementLabel, ssbIndex),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ssbIndex_constr_39, &asn_PER_memb_ssbIndex_constr_39,  memb_ssbIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ssbIndex"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasurementLabel, nonGoB_BFmode_Index),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nonGoB_BFmode_Index_constr_40, &asn_PER_memb_nonGoB_BFmode_Index_constr_40,  memb_nonGoB_BFmode_Index_constraint_1 },
+               0, 0, /* No default value */
+               "nonGoB-BFmode-Index"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementLabel, mIMO_mode_Index),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_mIMO_mode_Index_constr_41, &asn_PER_memb_mIMO_mode_Index_constr_41,  memb_mIMO_mode_Index_constraint_1 },
+               0, 0, /* No default value */
+               "mIMO-mode-Index"
+               },
+};
+static const int asn_MAP_MeasurementLabel_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
+static const ber_tlv_tag_t asn_DEF_MeasurementLabel_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementLabel_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* noLabel */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* plmnID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sliceID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* fiveQI */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* qFI */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* qCI */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* qCImax */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* qCImin */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* aRPmax */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* aRPmin */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* bitrateRange */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* layerMU-MIMO */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sUM */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* distBinX */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* distBinY */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* distBinZ */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* preLabelOverride */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* startEndInd */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* min */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* max */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* avg */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* ssbIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* nonGoB-BFmode-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 } /* mIMO-mode-Index */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1 = {
+       sizeof(struct MeasurementLabel),
+       offsetof(struct MeasurementLabel, _asn_ctx),
+       asn_MAP_MeasurementLabel_tag2el_1,
+       24,     /* Count of tags in the map */
+       asn_MAP_MeasurementLabel_oms_1, /* Optional members */
+       21, 3,  /* Root/Additions */
+       21,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementLabel = {
+       "MeasurementLabel",
+       "MeasurementLabel",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementLabel_tags_1,
+       sizeof(asn_DEF_MeasurementLabel_tags_1)
+               /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementLabel_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MeasurementLabel_tags_1)
+               /sizeof(asn_DEF_MeasurementLabel_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementLabel_1,
+       24,     /* Elements count */
+       &asn_SPC_MeasurementLabel_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementLabel.h b/src/codec_utils/E2SM_KPM/MeasurementLabel.h
new file mode 100644 (file)
index 0000000..b2fd50e
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementLabel_H_
+#define        _MeasurementLabel_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "PLMNIdentity.h"
+#include "FiveQI.h"
+#include "QosFlowIdentifier.h"
+#include "QCI.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementLabel__noLabel {
+       MeasurementLabel__noLabel_true  = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__noLabel;
+typedef enum MeasurementLabel__sUM {
+       MeasurementLabel__sUM_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__sUM;
+typedef enum MeasurementLabel__preLabelOverride {
+       MeasurementLabel__preLabelOverride_true = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__preLabelOverride;
+typedef enum MeasurementLabel__startEndInd {
+       MeasurementLabel__startEndInd_start     = 0,
+       MeasurementLabel__startEndInd_end       = 1
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__startEndInd;
+typedef enum MeasurementLabel__min {
+       MeasurementLabel__min_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__min;
+typedef enum MeasurementLabel__max {
+       MeasurementLabel__max_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__max;
+typedef enum MeasurementLabel__avg {
+       MeasurementLabel__avg_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_MeasurementLabel__avg;
+
+/* Forward declarations */
+struct S_NSSAI;
+
+/* MeasurementLabel */
+typedef struct MeasurementLabel {
+       long    *noLabel;       /* OPTIONAL */
+       PLMNIdentity_t  *plmnID;        /* OPTIONAL */
+       struct S_NSSAI  *sliceID;       /* OPTIONAL */
+       FiveQI_t        *fiveQI;        /* OPTIONAL */
+       QosFlowIdentifier_t     *qFI;   /* OPTIONAL */
+       QCI_t   *qCI;   /* OPTIONAL */
+       QCI_t   *qCImax;        /* OPTIONAL */
+       QCI_t   *qCImin;        /* OPTIONAL */
+       long    *aRPmax;        /* OPTIONAL */
+       long    *aRPmin;        /* OPTIONAL */
+       long    *bitrateRange;  /* OPTIONAL */
+       long    *layerMU_MIMO;  /* OPTIONAL */
+       long    *sUM;   /* OPTIONAL */
+       long    *distBinX;      /* OPTIONAL */
+       long    *distBinY;      /* OPTIONAL */
+       long    *distBinZ;      /* OPTIONAL */
+       long    *preLabelOverride;      /* OPTIONAL */
+       long    *startEndInd;   /* OPTIONAL */
+       long    *min;   /* OPTIONAL */
+       long    *max;   /* OPTIONAL */
+       long    *avg;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       long    *ssbIndex;      /* OPTIONAL */
+       long    *nonGoB_BFmode_Index;   /* OPTIONAL */
+       long    *mIMO_mode_Index;       /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementLabel_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_noLabel_2;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sUM_16;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_preLabelOverride_22;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_startEndInd_25;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_min_29;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_max_32;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_avg_35;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementLabel;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementLabel_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementLabel_1[24];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementLabel_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecord.c b/src/codec_utils/E2SM_KPM/MeasurementRecord.c
new file mode 100644 (file)
index 0000000..6d31cff
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementRecord.h"
+
+#include "MeasurementRecordItem.h"
+static asn_oer_constraints_t asn_OER_type_MeasurementRecord_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2147483647)) */};
+asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       31, -1,  1,  2147483647 }      /* (SIZE(1..2147483647)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementRecord_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_MeasurementRecordItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementRecord_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1 = {
+       sizeof(struct MeasurementRecord),
+       offsetof(struct MeasurementRecord, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementRecord = {
+       "MeasurementRecord",
+       "MeasurementRecord",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasurementRecord_tags_1,
+       sizeof(asn_DEF_MeasurementRecord_tags_1)
+               /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementRecord_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasurementRecord_tags_1)
+               /sizeof(asn_DEF_MeasurementRecord_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementRecord_constr_1, &asn_PER_type_MeasurementRecord_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasurementRecord_1,
+       1,      /* Single element */
+       &asn_SPC_MeasurementRecord_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecord.h b/src/codec_utils/E2SM_KPM/MeasurementRecord.h
new file mode 100644 (file)
index 0000000..93cd445
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementRecord_H_
+#define        _MeasurementRecord_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasurementRecordItem;
+
+/* MeasurementRecord */
+typedef struct MeasurementRecord {
+       A_SEQUENCE_OF(struct MeasurementRecordItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementRecord_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecord;
+extern asn_SET_OF_specifics_t asn_SPC_MeasurementRecord_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementRecord_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasurementRecord_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementRecord_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecordItem.c b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.c
new file mode 100644 (file)
index 0000000..9765c76
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementRecordItem.h"
+
+static int
+integer_2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_integer_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+static asn_oer_constraints_t asn_OER_type_integer_constr_2 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_type_integer_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_integer_constr_2 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_integer_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_MeasurementRecordItem_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }    /* (0..2,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_integer_specs_2 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_integer_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_integer_2 = {
+       "integer",
+       "integer",
+       &asn_OP_NativeInteger,
+       asn_DEF_integer_tags_2,
+       sizeof(asn_DEF_integer_tags_2)
+               /sizeof(asn_DEF_integer_tags_2[0]) - 1, /* 1 */
+       asn_DEF_integer_tags_2, /* Same as above */
+       sizeof(asn_DEF_integer_tags_2)
+               /sizeof(asn_DEF_integer_tags_2[0]), /* 2 */
+       { &asn_OER_type_integer_constr_2, &asn_PER_type_integer_constr_2, integer_2_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_integer_specs_2        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.integer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_integer_2,
+               0,
+               { &asn_OER_memb_integer_constr_2, &asn_PER_memb_integer_constr_2,  memb_integer_constraint_1 },
+               0, 0, /* No default value */
+               "integer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.real),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeReal,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "real"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementRecordItem, choice.noValue),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "noValue"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementRecordItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* integer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* real */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* noValue */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1 = {
+       sizeof(struct MeasurementRecordItem),
+       offsetof(struct MeasurementRecordItem, _asn_ctx),
+       offsetof(struct MeasurementRecordItem, present),
+       sizeof(((struct MeasurementRecordItem *)0)->present),
+       asn_MAP_MeasurementRecordItem_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       3       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem = {
+       "MeasurementRecordItem",
+       "MeasurementRecordItem",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MeasurementRecordItem_constr_1, &asn_PER_type_MeasurementRecordItem_constr_1, CHOICE_constraint },
+       asn_MBR_MeasurementRecordItem_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasurementRecordItem_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementRecordItem.h b/src/codec_utils/E2SM_KPM/MeasurementRecordItem.h
new file mode 100644 (file)
index 0000000..457a1ed
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementRecordItem_H_
+#define        _MeasurementRecordItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeReal.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementRecordItem_PR {
+       MeasurementRecordItem_PR_NOTHING,       /* No components present */
+       MeasurementRecordItem_PR_integer,
+       MeasurementRecordItem_PR_real,
+       MeasurementRecordItem_PR_noValue
+       /* Extensions may appear below */
+       
+} MeasurementRecordItem_PR;
+
+/* MeasurementRecordItem */
+typedef struct MeasurementRecordItem {
+       MeasurementRecordItem_PR present;
+       union MeasurementRecordItem_u {
+               unsigned long    integer;
+               double   real;
+               NULL_t   noValue;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementRecordItem_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_integer_2;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementRecordItem;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementRecordItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementRecordItem_1[3];
+extern asn_per_constraints_t asn_PER_type_MeasurementRecordItem_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementRecordItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementType.c b/src/codec_utils/E2SM_KPM/MeasurementType.c
new file mode 100644 (file)
index 0000000..643627d
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementType.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasurementType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasurementType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  1,  1,  0,  1 }    /* (0..1,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasurementType_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measName),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementTypeName,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measName"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementType, choice.measID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementTypeID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measID"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measName */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measID */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1 = {
+       sizeof(struct MeasurementType),
+       offsetof(struct MeasurementType, _asn_ctx),
+       offsetof(struct MeasurementType, present),
+       sizeof(((struct MeasurementType *)0)->present),
+       asn_MAP_MeasurementType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementType = {
+       "MeasurementType",
+       "MeasurementType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MeasurementType_constr_1, &asn_PER_type_MeasurementType_constr_1, CHOICE_constraint },
+       asn_MBR_MeasurementType_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasurementType_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementType.h b/src/codec_utils/E2SM_KPM/MeasurementType.h
new file mode 100644 (file)
index 0000000..62c371d
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementType_H_
+#define        _MeasurementType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasurementTypeName.h"
+#include "MeasurementTypeID.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementType_PR {
+       MeasurementType_PR_NOTHING,     /* No components present */
+       MeasurementType_PR_measName,
+       MeasurementType_PR_measID
+       /* Extensions may appear below */
+       
+} MeasurementType_PR;
+
+/* MeasurementType */
+typedef struct MeasurementType {
+       MeasurementType_PR present;
+       union MeasurementType_u {
+               MeasurementTypeName_t    measName;
+               MeasurementTypeID_t      measID;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementType;
+extern asn_CHOICE_specifics_t asn_SPC_MeasurementType_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementType_1[2];
+extern asn_per_constraints_t asn_PER_type_MeasurementType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeID.c b/src/codec_utils/E2SM_KPM/MeasurementTypeID.c
new file mode 100644 (file)
index 0000000..cdd2230
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTypeID.h"
+
+int
+MeasurementTypeID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 1 && value <= 65536)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  16, -1,  1,  65536 }       /* (1..65536,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementTypeID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID = {
+       "MeasurementTypeID",
+       "MeasurementTypeID",
+       &asn_OP_NativeInteger,
+       asn_DEF_MeasurementTypeID_tags_1,
+       sizeof(asn_DEF_MeasurementTypeID_tags_1)
+               /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementTypeID_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasurementTypeID_tags_1)
+               /sizeof(asn_DEF_MeasurementTypeID_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementTypeID_constr_1, &asn_PER_type_MeasurementTypeID_constr_1, MeasurementTypeID_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeID.h b/src/codec_utils/E2SM_KPM/MeasurementTypeID.h
new file mode 100644 (file)
index 0000000..c3f521c
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementTypeID_H_
+#define        _MeasurementTypeID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeID */
+typedef long    MeasurementTypeID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeID;
+asn_struct_free_f MeasurementTypeID_free;
+asn_struct_print_f MeasurementTypeID_print;
+asn_constr_check_f MeasurementTypeID_constraint;
+ber_type_decoder_f MeasurementTypeID_decode_ber;
+der_type_encoder_f MeasurementTypeID_encode_der;
+xer_type_decoder_f MeasurementTypeID_decode_xer;
+xer_type_encoder_f MeasurementTypeID_encode_xer;
+oer_type_decoder_f MeasurementTypeID_decode_oer;
+oer_type_encoder_f MeasurementTypeID_encode_oer;
+per_type_decoder_f MeasurementTypeID_decode_uper;
+per_type_encoder_f MeasurementTypeID_encode_uper;
+per_type_decoder_f MeasurementTypeID_decode_aper;
+per_type_encoder_f MeasurementTypeID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTypeID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeName.c b/src/codec_utils/E2SM_KPM/MeasurementTypeName.c
new file mode 100644 (file)
index 0000000..a071d64
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTypeName.h"
+
+static const int permitted_alphabet_table_1[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_1[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_1(const void *sptr) {
+       const int *table = permitted_alphabet_table_1;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+int
+MeasurementTypeName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size >= 1 && size <= 150)
+                && !check_permitted_alphabet_1(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_MeasurementTypeName_1_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+               return -1;
+       return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_MeasurementTypeName_1_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+               return -1;
+       return permitted_alphabet_code2value_1[code];
+}
+/*
+ * This type is implemented using PrintableString,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }  /* (SIZE(1..150,...)) */,
+       asn_PER_MAP_MeasurementTypeName_1_v2c,  /* Value to PER code map */
+       asn_PER_MAP_MeasurementTypeName_1_c2v   /* PER code to value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementTypeName_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName = {
+       "MeasurementTypeName",
+       "MeasurementTypeName",
+       &asn_OP_PrintableString,
+       asn_DEF_MeasurementTypeName_tags_1,
+       sizeof(asn_DEF_MeasurementTypeName_tags_1)
+               /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementTypeName_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasurementTypeName_tags_1)
+               /sizeof(asn_DEF_MeasurementTypeName_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasurementTypeName_constr_1, &asn_PER_type_MeasurementTypeName_constr_1, MeasurementTypeName_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/MeasurementTypeName.h b/src/codec_utils/E2SM_KPM/MeasurementTypeName.h
new file mode 100644 (file)
index 0000000..81892f6
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementTypeName_H_
+#define        _MeasurementTypeName_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementTypeName */
+typedef PrintableString_t       MeasurementTypeName_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasurementTypeName_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTypeName;
+asn_struct_free_f MeasurementTypeName_free;
+asn_struct_print_f MeasurementTypeName_print;
+asn_constr_check_f MeasurementTypeName_constraint;
+ber_type_decoder_f MeasurementTypeName_decode_ber;
+der_type_encoder_f MeasurementTypeName_encode_der;
+xer_type_decoder_f MeasurementTypeName_decode_xer;
+xer_type_encoder_f MeasurementTypeName_encode_xer;
+oer_type_decoder_f MeasurementTypeName_decode_oer;
+oer_type_encoder_f MeasurementTypeName_encode_oer;
+per_type_decoder_f MeasurementTypeName_decode_uper;
+per_type_encoder_f MeasurementTypeName_encode_uper;
+per_type_decoder_f MeasurementTypeName_decode_aper;
+per_type_encoder_f MeasurementTypeName_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTypeName_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.c
new file mode 100644 (file)
index 0000000..f0935d3
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NG-RANnodeUEXnAPID.h"
+
+int
+NG_RANnodeUEXnAPID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NG_RANnodeUEXnAPID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID = {
+       "NG-RANnodeUEXnAPID",
+       "NG-RANnodeUEXnAPID",
+       &asn_OP_NativeInteger,
+       asn_DEF_NG_RANnodeUEXnAPID_tags_1,
+       sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+               /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+       asn_DEF_NG_RANnodeUEXnAPID_tags_1,      /* Same as above */
+       sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1)
+               /sizeof(asn_DEF_NG_RANnodeUEXnAPID_tags_1[0]), /* 1 */
+       { &asn_OER_type_NG_RANnodeUEXnAPID_constr_1, &asn_PER_type_NG_RANnodeUEXnAPID_constr_1, NG_RANnodeUEXnAPID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_NG_RANnodeUEXnAPID_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h b/src/codec_utils/E2SM_KPM/NG-RANnodeUEXnAPID.h
new file mode 100644 (file)
index 0000000..58e71f1
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NG_RANnodeUEXnAPID_H_
+#define        _NG_RANnodeUEXnAPID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NG-RANnodeUEXnAPID */
+typedef unsigned long   NG_RANnodeUEXnAPID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NG_RANnodeUEXnAPID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NG_RANnodeUEXnAPID;
+extern const asn_INTEGER_specifics_t asn_SPC_NG_RANnodeUEXnAPID_specs_1;
+asn_struct_free_f NG_RANnodeUEXnAPID_free;
+asn_struct_print_f NG_RANnodeUEXnAPID_print;
+asn_constr_check_f NG_RANnodeUEXnAPID_constraint;
+ber_type_decoder_f NG_RANnodeUEXnAPID_decode_ber;
+der_type_encoder_f NG_RANnodeUEXnAPID_encode_der;
+xer_type_decoder_f NG_RANnodeUEXnAPID_decode_xer;
+xer_type_encoder_f NG_RANnodeUEXnAPID_encode_xer;
+oer_type_decoder_f NG_RANnodeUEXnAPID_decode_oer;
+oer_type_encoder_f NG_RANnodeUEXnAPID_encode_oer;
+per_type_decoder_f NG_RANnodeUEXnAPID_decode_uper;
+per_type_encoder_f NG_RANnodeUEXnAPID_encode_uper;
+per_type_decoder_f NG_RANnodeUEXnAPID_decode_aper;
+per_type_encoder_f NG_RANnodeUEXnAPID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NG_RANnodeUEXnAPID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.c
new file mode 100644 (file)
index 0000000..79bf939
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NGENB-CU-UE-W1AP-ID.h"
+
+int
+NGENB_CU_UE_W1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       /* Constraint check succeeded */
+       return 0;
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID = {
+       "NGENB-CU-UE-W1AP-ID",
+       "NGENB-CU-UE-W1AP-ID",
+       &asn_OP_NativeInteger,
+       asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1,
+       sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+               /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+       asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1,     /* Same as above */
+       sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1)
+               /sizeof(asn_DEF_NGENB_CU_UE_W1AP_ID_tags_1[0]), /* 1 */
+       { &asn_OER_type_NGENB_CU_UE_W1AP_ID_constr_1, &asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1, NGENB_CU_UE_W1AP_ID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h b/src/codec_utils/E2SM_KPM/NGENB-CU-UE-W1AP-ID.h
new file mode 100644 (file)
index 0000000..55530cd
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NGENB_CU_UE_W1AP_ID_H_
+#define        _NGENB_CU_UE_W1AP_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NGENB-CU-UE-W1AP-ID */
+typedef unsigned long   NGENB_CU_UE_W1AP_ID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NGENB_CU_UE_W1AP_ID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NGENB_CU_UE_W1AP_ID;
+extern const asn_INTEGER_specifics_t asn_SPC_NGENB_CU_UE_W1AP_ID_specs_1;
+asn_struct_free_f NGENB_CU_UE_W1AP_ID_free;
+asn_struct_print_f NGENB_CU_UE_W1AP_ID_print;
+asn_constr_check_f NGENB_CU_UE_W1AP_ID_constraint;
+ber_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_ber;
+der_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_der;
+xer_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_xer;
+xer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_xer;
+oer_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_oer;
+oer_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_oer;
+per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_uper;
+per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_uper;
+per_type_decoder_f NGENB_CU_UE_W1AP_ID_decode_aper;
+per_type_encoder_f NGENB_CU_UE_W1AP_ID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NGENB_CU_UE_W1AP_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/NR-CGI.c b/src/codec_utils/E2SM_KPM/NR-CGI.c
new file mode 100644 (file)
index 0000000..fd0e0bd
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-CGI.h"
+
+asn_TYPE_member_t asn_MBR_NR_CGI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, pLMNIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMNIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pLMNIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NR_CGI, nRCellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NRCellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nRCellIdentity"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_NR_CGI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_CGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMNIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRCellIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1 = {
+       sizeof(struct NR_CGI),
+       offsetof(struct NR_CGI, _asn_ctx),
+       asn_MAP_NR_CGI_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_CGI = {
+       "NR-CGI",
+       "NR-CGI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NR_CGI_tags_1,
+       sizeof(asn_DEF_NR_CGI_tags_1)
+               /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+       asn_DEF_NR_CGI_tags_1,  /* Same as above */
+       sizeof(asn_DEF_NR_CGI_tags_1)
+               /sizeof(asn_DEF_NR_CGI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NR_CGI_1,
+       2,      /* Elements count */
+       &asn_SPC_NR_CGI_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/NR-CGI.h b/src/codec_utils/E2SM_KPM/NR-CGI.h
new file mode 100644 (file)
index 0000000..7c5ec16
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_CGI_H_
+#define        _NR_CGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMNIdentity.h"
+#include "NRCellIdentity.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NR-CGI */
+typedef struct NR_CGI {
+       PLMNIdentity_t   pLMNIdentity;
+       NRCellIdentity_t         nRCellIdentity;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NR_CGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_CGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_CGI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_CGI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/NRCellIdentity.c b/src/codec_utils/E2SM_KPM/NRCellIdentity.c
new file mode 100644 (file)
index 0000000..5a2bf45
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NRCellIdentity.h"
+
+int
+NRCellIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 36)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using BIT_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NRCellIdentity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       36      /* (SIZE(36..36)) */};
+asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  36,  36 }      /* (SIZE(36..36)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NRCellIdentity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NRCellIdentity = {
+       "NRCellIdentity",
+       "NRCellIdentity",
+       &asn_OP_BIT_STRING,
+       asn_DEF_NRCellIdentity_tags_1,
+       sizeof(asn_DEF_NRCellIdentity_tags_1)
+               /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */
+       asn_DEF_NRCellIdentity_tags_1,  /* Same as above */
+       sizeof(asn_DEF_NRCellIdentity_tags_1)
+               /sizeof(asn_DEF_NRCellIdentity_tags_1[0]), /* 1 */
+       { &asn_OER_type_NRCellIdentity_constr_1, &asn_PER_type_NRCellIdentity_constr_1, NRCellIdentity_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/NRCellIdentity.h b/src/codec_utils/E2SM_KPM/NRCellIdentity.h
new file mode 100644 (file)
index 0000000..416d089
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NRCellIdentity_H_
+#define        _NRCellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NRCellIdentity */
+typedef BIT_STRING_t    NRCellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NRCellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentity;
+asn_struct_free_f NRCellIdentity_free;
+asn_struct_print_f NRCellIdentity_print;
+asn_constr_check_f NRCellIdentity_constraint;
+ber_type_decoder_f NRCellIdentity_decode_ber;
+der_type_encoder_f NRCellIdentity_encode_der;
+xer_type_decoder_f NRCellIdentity_decode_xer;
+xer_type_encoder_f NRCellIdentity_encode_xer;
+oer_type_decoder_f NRCellIdentity_decode_oer;
+oer_type_encoder_f NRCellIdentity_encode_oer;
+per_type_decoder_f NRCellIdentity_decode_uper;
+per_type_encoder_f NRCellIdentity_encode_uper;
+per_type_decoder_f NRCellIdentity_decode_aper;
+per_type_encoder_f NRCellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NRCellIdentity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/NULL.c b/src/codec_utils/E2SM_KPM/NULL.c
new file mode 100644 (file)
index 0000000..4a2914f
--- /dev/null
@@ -0,0 +1,299 @@
+/*-
+ * Copyright (c) 2003, 2005 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#include <asn_internal.h>
+#include <asn_codecs_prim.h>
+#include <NULL.h>
+#include <BOOLEAN.h>   /* Implemented in terms of BOOLEAN type */
+
+/*
+ * NULL basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NULL_tags[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (5 << 2))
+};
+asn_TYPE_operation_t asn_OP_NULL = {
+       BOOLEAN_free,
+       NULL_print,
+       NULL_compare,
+       BOOLEAN_decode_ber,     /* Implemented in terms of BOOLEAN */
+       NULL_encode_der,        /* Special handling of DER encoding */
+       NULL_decode_xer,
+       NULL_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+       0,
+       0,
+#else
+       NULL_decode_oer,
+       NULL_encode_oer,
+#endif  /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+       0,
+       0,
+       0,
+       0,
+#else
+       NULL_decode_uper,       /* Unaligned PER decoder */
+       NULL_encode_uper,       /* Unaligned PER encoder */
+       NULL_decode_aper,       /* Aligned PER decoder */
+       NULL_encode_aper,       /* Aligned PER encoder */
+#endif /* ASN_DISABLE_PER_SUPPORT */
+       NULL_random_fill,
+       0       /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NULL = {
+       "NULL",
+       "NULL",
+       &asn_OP_NULL,
+       asn_DEF_NULL_tags,
+       sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+       asn_DEF_NULL_tags,      /* Same as above */
+       sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
+       { 0, 0, asn_generic_no_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
+asn_enc_rval_t
+NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode,
+                ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) {
+       asn_enc_rval_t erval = {0,0,0};
+
+       erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key);
+       if(erval.encoded == -1) {
+               erval.failed_type = td;
+               erval.structure_ptr = ptr;
+       }
+
+       ASN__ENCODED_OK(erval);
+}
+
+asn_enc_rval_t
+NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+                enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+                void *app_key) {
+       asn_enc_rval_t er = {0,0,0};
+
+       (void)td;
+       (void)sptr;
+       (void)ilevel;
+       (void)flags;
+       (void)cb;
+       (void)app_key;
+
+       /* XMLNullValue is empty */
+       er.encoded = 0;
+       ASN__ENCODED_OK(er);
+}
+
+
+static enum xer_pbd_rval
+NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+                      const void *chunk_buf, size_t chunk_size) {
+    (void)td;
+       (void)sptr;
+       (void)chunk_buf;    /* Going to be empty according to the rules below. */
+
+       /*
+        * There must be no content in self-terminating <NULL/> tag.
+        */
+       if(chunk_size)
+               return XPBD_BROKEN_ENCODING;
+       else
+               return XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+                const asn_TYPE_descriptor_t *td, void **sptr,
+                const char *opt_mname, const void *buf_ptr, size_t size) {
+    return xer_decode_primitive(opt_codec_ctx, td,
+               sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
+               NULL__xer_body_decode);
+}
+
+int
+NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) {
+    (void)td;
+    (void)a;
+    (void)b;
+    return 0;
+}
+
+int
+NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+           asn_app_consume_bytes_f *cb, void *app_key) {
+    (void)td;  /* Unused argument */
+       (void)ilevel;   /* Unused argument */
+
+       if(sptr) {
+               return (cb("<present>", 9, app_key) < 0) ? -1 : 0;
+       } else {
+               return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
+       }
+}
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+                const asn_TYPE_descriptor_t *td,
+                const asn_oer_constraints_t *constraints, void **sptr,
+                const void *ptr, size_t size) {
+    asn_dec_rval_t rv = {RC_OK, 0};
+    (void)opt_codec_ctx;
+    (void)td;
+    (void)constraints;
+    (void)ptr;
+    (void)size;
+
+    if(!*sptr) {
+        *sptr = MALLOC(sizeof(NULL_t));
+        if(*sptr) {
+            *(NULL_t *)*sptr = 0;
+        } else {
+            ASN__DECODE_FAILED;
+        }
+    }
+
+    return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_oer(const asn_TYPE_descriptor_t *td,
+                const asn_oer_constraints_t *constraints, const void *sptr,
+                asn_app_consume_bytes_f *cb, void *app_key) {
+    asn_enc_rval_t er = {0,0,0};
+
+    (void)td;
+    (void)sptr;
+    (void)constraints;
+    (void)cb;
+    (void)app_key;
+
+    er.encoded = 0; /* Encoding in 0 bytes. */
+
+    ASN__ENCODED_OK(er);
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+                 const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints, void **sptr,
+                 asn_per_data_t *pd) {
+    asn_dec_rval_t rv;
+
+       (void)opt_codec_ctx;
+       (void)td;
+       (void)constraints;
+       (void)pd;
+
+       if(!*sptr) {
+               *sptr = MALLOC(sizeof(NULL_t));
+               if(*sptr) {
+                       *(NULL_t *)*sptr = 0;
+               } else {
+                       ASN__DECODE_FAILED;
+               }
+       }
+
+       /*
+        * NULL type does not have content octets.
+        */
+
+       rv.code = RC_OK;
+       rv.consumed = 0;
+       return rv;
+}
+
+asn_enc_rval_t
+NULL_encode_uper(const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints, const void *sptr,
+                 asn_per_outp_t *po) {
+       asn_enc_rval_t er = {0,0,0};
+
+       (void)td;
+       (void)constraints;
+       (void)sptr;
+       (void)po;
+
+       er.encoded = 0;
+       ASN__ENCODED_OK(er);
+}
+
+asn_dec_rval_t
+NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+                 const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+       asn_dec_rval_t rv = {RC_OK, 0};
+
+       (void)opt_codec_ctx;
+       (void)td;
+       (void)constraints;
+       (void)pd;
+
+       if(!*sptr) {
+               *sptr = MALLOC(sizeof(NULL_t));
+               if(*sptr) {
+                       *(NULL_t *)*sptr = 0;
+               } else {
+                       ASN__DECODE_FAILED;
+               }
+       }
+
+       /*
+        * NULL type does not have content octets.
+        */
+
+       rv.code = RC_OK;
+       rv.consumed = 0;
+       return rv;
+}
+
+
+asn_enc_rval_t
+NULL_encode_aper(const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints,
+                 const void *sptr, asn_per_outp_t *po) {
+       asn_enc_rval_t er = {0,0,0};
+
+       (void)td;
+       (void)constraints;
+       (void)sptr;
+       (void)po;
+
+       er.encoded = 0;
+       ASN__ENCODED_OK(er);
+}
+
+#endif  /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+                    const asn_encoding_constraints_t *constr,
+                    size_t max_length) {
+    asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+    asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+    asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+    NULL_t *st = *sptr;
+
+    (void)td;
+    (void)constr;
+
+    if(max_length == 0) return result_skipped;
+
+    if(st == NULL) {
+        st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st)));
+        if(st == NULL) {
+            return result_failed;
+        }
+    }
+
+    return result_ok;
+}
+
diff --git a/src/codec_utils/E2SM_KPM/NULL.h b/src/codec_utils/E2SM_KPM/NULL.h
new file mode 100644 (file)
index 0000000..802d12c
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef        ASN_TYPE_NULL_H
+#define        ASN_TYPE_NULL_H
+
+#include <asn_application.h>
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * The value of the NULL type is meaningless: see BOOLEAN if you want to
+ * carry true/false semantics.
+ */
+typedef int NULL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NULL;
+extern asn_TYPE_operation_t asn_OP_NULL;
+
+asn_struct_print_f NULL_print;
+asn_struct_compare_f NULL_compare;
+der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
+xer_type_encoder_f NULL_encode_xer;
+oer_type_decoder_f NULL_decode_oer;
+oer_type_encoder_f NULL_encode_oer;
+per_type_decoder_f NULL_decode_uper;
+per_type_encoder_f NULL_encode_uper;
+per_type_decoder_f NULL_decode_aper;
+per_type_encoder_f NULL_encode_aper;
+asn_random_fill_f  NULL_random_fill;
+
+#define NULL_free      BOOLEAN_free
+#define NULL_decode_ber        BOOLEAN_decode_ber
+#define NULL_constraint        asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NULL_H */
diff --git a/src/codec_utils/E2SM_KPM/NativeReal.c b/src/codec_utils/E2SM_KPM/NativeReal.c
new file mode 100644 (file)
index 0000000..160a471
--- /dev/null
@@ -0,0 +1,781 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * Read the NativeReal.h for the explanation wrt. differences between
+ * REAL and NativeReal.
+ * Basically, both are decoders and encoders of ASN.1 REAL type, but this
+ * implementation deals with the standard (machine-specific) representation
+ * of them instead of using the platform-independent buffer.
+ */
+#include <asn_internal.h>
+#include <NativeReal.h>
+#include <REAL.h>
+#include <OCTET_STRING.h>
+#include <math.h>
+#include <float.h>
+
+#if defined(__clang__)
+/*
+ * isnan() is defined using generic selections and won't compile in
+ * strict C89 mode because of too fancy system's standard library.
+ * However, prior to C11 the math had a perfectly working isnan()
+ * in the math library.
+ * Disable generic selection warning so we can test C89 mode with newer libc.
+ */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc11-extensions"
+static int asn_isnan(double d) {
+    return isnan(d);
+}
+#pragma clang diagnostic pop
+#else
+#define asn_isnan(v)    isnan(v)
+#endif  /* generic selections */
+
+/*
+ * NativeReal basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_NativeReal_tags[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_operation_t asn_OP_NativeReal = {
+       NativeReal_free,
+       NativeReal_print,
+       NativeReal_compare,
+       NativeReal_decode_ber,
+       NativeReal_encode_der,
+       NativeReal_decode_xer,
+       NativeReal_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+       0,
+       0,
+#else
+       NativeReal_decode_oer,
+       NativeReal_encode_oer,
+#endif  /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+       0,
+       0,
+       0,
+       0,
+#else
+       NativeReal_decode_uper,
+       NativeReal_encode_uper,
+       NativeReal_decode_aper,
+       NativeReal_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+       NativeReal_random_fill,
+       0       /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_NativeReal = {
+       "REAL",                 /* The ASN.1 type is still REAL */
+       "REAL",
+       &asn_OP_NativeReal,
+       asn_DEF_NativeReal_tags,
+       sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]),
+       asn_DEF_NativeReal_tags,        /* Same as above */
+       sizeof(asn_DEF_NativeReal_tags) / sizeof(asn_DEF_NativeReal_tags[0]),
+       { 0, 0, asn_generic_no_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
+static size_t NativeReal__float_size(const asn_TYPE_descriptor_t *td);
+static double NativeReal__get_double(const asn_TYPE_descriptor_t *td,
+                                     const void *ptr);
+static ssize_t NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr,
+                               double d);
+
+/*
+ * Decode REAL type.
+ */
+asn_dec_rval_t
+NativeReal_decode_ber(const asn_codec_ctx_t *opt_codec_ctx,
+                      const asn_TYPE_descriptor_t *td, void **sptr,
+                      const void *buf_ptr, size_t size, int tag_mode) {
+    asn_dec_rval_t rval;
+    ber_tlv_len_t length;
+
+    ASN_DEBUG("Decoding %s as REAL (tm=%d)", td->name, tag_mode);
+
+    /*
+     * Check tags.
+     */
+    rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, tag_mode, 0,
+                          &length, 0);
+    if(rval.code != RC_OK) return rval;
+    assert(length >= 0);    /* Ensured by ber_check_tags */
+
+    ASN_DEBUG("%s length is %d bytes", td->name, (int)length);
+
+    /*
+     * Make sure we have this length.
+     */
+    buf_ptr = ((const char *)buf_ptr) + rval.consumed;
+    size -= rval.consumed;
+    if(length > (ber_tlv_len_t)size) {
+        rval.code = RC_WMORE;
+        rval.consumed = 0;
+        return rval;
+    }
+
+    /*
+     * ASN.1 encoded REAL: buf_ptr, length
+     * Fill the Dbl, at the same time checking for overflow.
+     * If overflow occured, return with RC_FAIL.
+     */
+    {
+        uint8_t scratch[24]; /* Longer than %.16f in decimal */
+        REAL_t tmp;
+        double d;
+        int ret;
+
+        if((size_t)length < sizeof(scratch)) {
+            tmp.buf = scratch;
+            tmp.size = length;
+        } else {
+            /* This rarely happens: impractically long value */
+            tmp.buf = CALLOC(1, length + 1);
+            tmp.size = length;
+            if(!tmp.buf) {
+                rval.code = RC_FAIL;
+                rval.consumed = 0;
+                return rval;
+            }
+        }
+
+        memcpy(tmp.buf, buf_ptr, length);
+        tmp.buf[length] = '\0';
+
+        ret = asn_REAL2double(&tmp, &d);
+        if(tmp.buf != scratch) FREEMEM(tmp.buf);
+        if(ret) {
+            rval.code = RC_FAIL;
+            rval.consumed = 0;
+            return rval;
+        }
+
+        if(NativeReal__set(td, sptr, d) < 0)
+            ASN__DECODE_FAILED;
+    }
+
+    rval.code = RC_OK;
+    rval.consumed += length;
+
+    ASN_DEBUG("Took %ld/%ld bytes to encode %s", (long)rval.consumed,
+              (long)length, td->name);
+
+    return rval;
+}
+
+/*
+ * Encode the NativeReal using the standard REAL type DER encoder.
+ */
+asn_enc_rval_t
+NativeReal_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr,
+                      int tag_mode, ber_tlv_tag_t tag,
+                      asn_app_consume_bytes_f *cb, void *app_key) {
+    double d = NativeReal__get_double(td, sptr);
+    asn_enc_rval_t erval = {0,0,0};
+       REAL_t tmp;
+
+       /* Prepare a temporary clean structure */
+       memset(&tmp, 0, sizeof(tmp));
+
+    if(asn_double2REAL(&tmp, d))
+        ASN__ENCODE_FAILED;
+
+    /* Encode a fake REAL */
+    erval = der_encode_primitive(td, &tmp, tag_mode, tag, cb, app_key);
+    if(erval.encoded == -1) {
+               assert(erval.structure_ptr == &tmp);
+               erval.structure_ptr = sptr;
+       }
+
+       /* Free possibly allocated members of the temporary structure */
+    ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+    return erval;
+}
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+/*
+ * Decode REAL type using PER.
+ */
+asn_dec_rval_t
+NativeReal_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+                       const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints, void **sptr,
+                       asn_per_data_t *pd) {
+    asn_dec_rval_t rval;
+    double d;
+       REAL_t tmp;
+       void *ptmp = &tmp;
+       int ret;
+
+       (void)constraints;
+
+       memset(&tmp, 0, sizeof(tmp));
+    rval = OCTET_STRING_decode_uper(opt_codec_ctx, &asn_DEF_REAL,
+                                    NULL, &ptmp, pd);
+    if(rval.code != RC_OK) {
+               ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+               return rval;
+       }
+
+       ret = asn_REAL2double(&tmp, &d);
+       ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+       if(ret) ASN__DECODE_FAILED;
+
+    if(NativeReal__set(td, sptr, d) < 0 )
+        ASN__DECODE_FAILED;
+
+       return rval;
+}
+
+/*
+ * Encode the NativeReal using the OCTET STRING PER encoder.
+ */
+asn_enc_rval_t
+NativeReal_encode_uper(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po) {
+    double d = NativeReal__get_double(td, sptr);
+       asn_enc_rval_t erval = {0,0,0};
+       REAL_t tmp;
+
+       (void)constraints;
+
+       /* Prepare a temporary clean structure */
+       memset(&tmp, 0, sizeof(tmp));
+
+       if(asn_double2REAL(&tmp, d))
+               ASN__ENCODE_FAILED;
+       
+       /* Encode a DER REAL */
+    erval = OCTET_STRING_encode_uper(&asn_DEF_REAL, NULL, &tmp, po);
+    if(erval.encoded == -1)
+               erval.structure_ptr = sptr;
+
+       /* Free possibly allocated members of the temporary structure */
+       ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+       return erval;
+}
+
+
+asn_dec_rval_t
+NativeReal_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+                       const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       void **dbl_ptr, asn_per_data_t *pd) {
+       double *Dbl = (double *)*dbl_ptr;
+       asn_dec_rval_t rval;
+       REAL_t tmp;
+       void *ptmp = &tmp;
+       int ret;
+
+       (void)constraints;
+
+       /*
+        * If the structure is not there, allocate it.
+        */
+       if(Dbl == NULL) {
+               *dbl_ptr = CALLOC(1, sizeof(*Dbl));
+               Dbl = (double *)*dbl_ptr;
+               if(Dbl == NULL)
+                       ASN__DECODE_FAILED;
+       }
+
+       memset(&tmp, 0, sizeof(tmp));
+       rval = OCTET_STRING_decode_aper(opt_codec_ctx, td, NULL,
+                       &ptmp, pd);
+       if(rval.code != RC_OK) {
+               ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+               return rval;
+       }
+
+       ret = asn_REAL2double(&tmp, Dbl);
+       ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+       if(ret) ASN__DECODE_FAILED;
+
+       return rval;
+}
+
+asn_enc_rval_t
+NativeReal_encode_aper(const asn_TYPE_descriptor_t *td,
+                       const asn_per_constraints_t *constraints,
+                       const void *sptr, asn_per_outp_t *po) {
+       double Dbl = *(const double *)sptr;
+       asn_enc_rval_t erval = {0,0,0};
+       REAL_t tmp;
+
+       (void)constraints;
+
+       /* Prepare a temporary clean structure */
+       memset(&tmp, 0, sizeof(tmp));
+
+       if(asn_double2REAL(&tmp, Dbl))
+               ASN__ENCODE_FAILED;
+
+       /* Encode a DER REAL */
+       erval = OCTET_STRING_encode_aper(td, NULL, &tmp, po);
+       if(erval.encoded == -1)
+               erval.structure_ptr = sptr;
+
+       /* Free possibly allocated members of the temporary structure */
+       ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+
+       return erval;
+}
+
+#endif /* ASN_DISABLE_PER_SUPPORT */
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+/*
+ * Swap bytes from/to network, if local is little-endian.
+ * Unused endianness sections are likely removed at compile phase.
+ */
+static void
+NativeReal__network_swap(size_t float_size, const void *srcp, uint8_t *dst) {
+    const uint8_t *src = srcp;
+    double test = -0.0;
+    int float_big_endian = *(const char *)&test != 0;
+    /* In lieu of static_assert(sizeof(double) == 8) */
+    static const char sizeof_double_is_8_a[sizeof(double)-7] CC_NOTUSED;
+    static const char sizeof_double_is_8_b[9-sizeof(double)] CC_NOTUSED;
+    /* In lieu of static_assert(sizeof(sizeof) == 4) */
+    static const char sizeof_float_is_4_a[sizeof(float)-3] CC_NOTUSED;
+    static const char sizeof_float_is_4_b[5-sizeof(float)] CC_NOTUSED;
+
+    switch(float_size) {
+    case sizeof(double):
+        assert(sizeof(double) == 8);
+        if(float_big_endian) {
+            dst[0] = src[0];
+            dst[1] = src[1];
+            dst[2] = src[2];
+            dst[3] = src[3];
+            dst[4] = src[4];
+            dst[5] = src[5];
+            dst[6] = src[6];
+            dst[7] = src[7];
+        } else {
+            dst[0] = src[7];
+            dst[1] = src[6];
+            dst[2] = src[5];
+            dst[3] = src[4];
+            dst[4] = src[3];
+            dst[5] = src[2];
+            dst[6] = src[1];
+            dst[7] = src[0];
+        }
+        return;
+    case sizeof(float):
+        assert(sizeof(float) == 4);
+        if(float_big_endian) {
+            dst[0] = src[0];
+            dst[1] = src[1];
+            dst[2] = src[2];
+            dst[3] = src[3];
+        } else {
+            dst[0] = src[3];
+            dst[1] = src[2];
+            dst[2] = src[1];
+            dst[3] = src[0];
+        }
+        return;
+    }
+}
+
+/*
+ * Encode as Canonical OER.
+ */
+asn_enc_rval_t
+NativeReal_encode_oer(const asn_TYPE_descriptor_t *td,
+                      const asn_oer_constraints_t *constraints,
+                      const void *sptr, asn_app_consume_bytes_f *cb,
+                      void *app_key) {
+    asn_enc_rval_t er = {0, 0, 0};
+
+    if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+    if(constraints && constraints->value.width != 0) {
+        /* X.696 IEEE 754 binary32 and binary64 encoding */
+        uint8_t scratch[sizeof(double)];
+        const asn_NativeReal_specifics_t *specs =
+            (const asn_NativeReal_specifics_t *)td->specifics;
+        size_t wire_size = constraints->value.width;
+
+        if(specs ? (wire_size == specs->float_size)
+                 : (wire_size == sizeof(double))) {
+            /*
+             * Our representation matches the wire, modulo endianness.
+             * That was the whole point of compact encoding!
+             */
+        } else {
+            assert((wire_size == sizeof(double))
+                   || (specs && specs->float_size == wire_size));
+            ASN__ENCODE_FAILED;
+        }
+
+        /*
+         * The X.696 standard doesn't specify endianness, neither is IEEE 754.
+         * So we assume the network format is big endian.
+         */
+        NativeReal__network_swap(wire_size, sptr, scratch);
+        if(cb(scratch, wire_size, app_key) < 0) {
+            ASN__ENCODE_FAILED;
+        } else {
+            er.encoded = wire_size;
+            ASN__ENCODED_OK(er);
+        }
+    } else {
+        double d = NativeReal__get_double(td, sptr);
+        ssize_t len_len;
+        REAL_t tmp;
+
+        /* Prepare a temporary clean structure */
+        memset(&tmp, 0, sizeof(tmp));
+
+        if(asn_double2REAL(&tmp, d)) {
+            ASN__ENCODE_FAILED;
+        }
+
+        /* Encode a fake REAL */
+        len_len = oer_serialize_length(tmp.size, cb, app_key);
+        if(len_len < 0 || cb(tmp.buf, tmp.size, app_key) < 0) {
+            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+            ASN__ENCODE_FAILED;
+        } else {
+            er.encoded = len_len + tmp.size;
+            ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
+            ASN__ENCODED_OK(er);
+        }
+    }
+}
+
+asn_dec_rval_t
+NativeReal_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+                      const asn_TYPE_descriptor_t *td,
+                      const asn_oer_constraints_t *constraints, void **sptr,
+                      const void *ptr, size_t size) {
+    asn_dec_rval_t ok = {RC_OK, 0};
+    double d;
+    ssize_t len_len;
+    size_t real_body_len;
+
+    (void)opt_codec_ctx;
+
+    if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+    if(constraints && constraints->value.width != 0) {
+        /* X.696 IEEE 754 binary32 and binary64 encoding */
+        uint8_t scratch[sizeof(double)];
+        size_t wire_size = constraints->value.width;
+
+        if(size < wire_size)
+            ASN__DECODE_STARVED;
+
+        /*
+         * The X.696 standard doesn't specify endianness, neither is IEEE 754.
+         * So we assume the network format is big endian.
+         */
+        NativeReal__network_swap(wire_size, ptr, scratch);
+
+
+        switch(wire_size) {
+            case sizeof(double):
+                {
+                    double tmp;
+                    memcpy(&tmp, scratch, sizeof(double));
+                    if(NativeReal__set(td, sptr, tmp) < 0)
+                        ASN__DECODE_FAILED;
+                }
+                break;
+            case sizeof(float):
+                {
+                    float tmp;
+                    memcpy(&tmp, scratch, sizeof(float));
+                    if(NativeReal__set(td, sptr, tmp) < 0)
+                        ASN__DECODE_FAILED;
+                }
+                break;
+        default:
+            ASN__DECODE_FAILED;
+        }
+
+        ok.consumed = wire_size;
+        return ok;
+    }
+
+    len_len = oer_fetch_length(ptr, size, &real_body_len);
+    if(len_len < 0) ASN__DECODE_FAILED;
+    if(len_len == 0) ASN__DECODE_STARVED;
+
+    ptr = (const char *)ptr + len_len;
+    size -= len_len;
+
+    if(real_body_len > size) ASN__DECODE_STARVED;
+
+    {
+        uint8_t scratch[24]; /* Longer than %.16f in decimal */
+        REAL_t tmp;
+        int ret;
+
+        if(real_body_len < sizeof(scratch)) {
+            tmp.buf = scratch;
+            tmp.size = real_body_len;
+        } else {
+            /* This rarely happens: impractically long value */
+            tmp.buf = CALLOC(1, real_body_len + 1);
+            tmp.size = real_body_len;
+            if(!tmp.buf) {
+                ASN__DECODE_FAILED;
+            }
+        }
+
+        memcpy(tmp.buf, ptr, real_body_len);
+        tmp.buf[real_body_len] = '\0';
+
+        ret = asn_REAL2double(&tmp, &d);
+        if(tmp.buf != scratch) FREEMEM(tmp.buf);
+        if(ret) {
+            ASN_DEBUG("REAL decoded in %" ASN_PRI_SIZE " bytes, but can't convert t double",
+                      real_body_len);
+            ASN__DECODE_FAILED;
+        }
+    }
+
+    if(NativeReal__set(td, sptr, d) < 0)
+        ASN__DECODE_FAILED;
+
+    ok.consumed = len_len + real_body_len;
+    return ok;
+}
+
+#endif /* ASN_DISABLE_OER_SUPPORT */
+
+/*
+ * Decode the chunk of XML text encoding REAL.
+ */
+asn_dec_rval_t
+NativeReal_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+                      const asn_TYPE_descriptor_t *td, void **sptr,
+                      const char *opt_mname, const void *buf_ptr, size_t size) {
+    asn_dec_rval_t rval;
+       REAL_t st = { 0, 0 };
+       REAL_t *stp = &st;
+
+       rval = REAL_decode_xer(opt_codec_ctx, td, (void **)&stp, opt_mname,
+               buf_ptr, size);
+       if(rval.code == RC_OK) {
+        double d;
+        if(asn_REAL2double(&st, &d) || NativeReal__set(td, sptr, d) < 0) {
+            rval.code = RC_FAIL;
+            rval.consumed = 0;
+        }
+       } else {
+        /* Convert all errors into RC_FAIL */
+        rval.consumed = 0;
+       }
+       ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &st);
+       return rval;
+}
+
+asn_enc_rval_t
+NativeReal_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr,
+                      int ilevel, enum xer_encoder_flags_e flags,
+                      asn_app_consume_bytes_f *cb, void *app_key) {
+       double d = NativeReal__get_double(td, sptr);
+       asn_enc_rval_t er = {0,0,0};
+
+       (void)ilevel;
+
+       er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key);
+       if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+       ASN__ENCODED_OK(er);
+}
+
+/*
+ * REAL specific human-readable output.
+ */
+int
+NativeReal_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+                 asn_app_consume_bytes_f *cb, void *app_key) {
+    (void)ilevel;      /* Unused argument */
+
+       if(sptr) {
+        double d = NativeReal__get_double(td, sptr);
+        return (REAL__dump(d, 0, cb, app_key) < 0) ? -1 : 0;
+    } else {
+        return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
+    }
+}
+
+int
+NativeReal_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+                   const void *bptr) {
+
+    if(aptr && bptr) {
+        double a = NativeReal__get_double(td, aptr);
+        double b = NativeReal__get_double(td, bptr);
+
+        /* NaN sorted above everything else */
+        if(asn_isnan(a)) {
+            if(asn_isnan(b)) {
+                return 0;
+            } else {
+                return -1;
+            }
+        } else if(asn_isnan(b)) {
+            return 1;
+        }
+        /* Value comparison. */
+        if(a < b) {
+            return -1;
+        } else if(a > b) {
+            return 1;
+        } else {
+            return 0;
+        }
+    } else if(!aptr) {
+        return -1;
+    } else {
+        return 1;
+    }
+}
+
+void
+NativeReal_free(const asn_TYPE_descriptor_t *td, void *ptr,
+                enum asn_struct_free_method method) {
+    if(!td || !ptr)
+               return;
+
+       ASN_DEBUG("Freeing %s as REAL (%d, %p, Native)",
+               td->name, method, ptr);
+
+    switch(method) {
+    case ASFM_FREE_EVERYTHING:
+        FREEMEM(ptr);
+        break;
+    case ASFM_FREE_UNDERLYING:
+        break;
+    case ASFM_FREE_UNDERLYING_AND_RESET: {
+        const asn_NativeReal_specifics_t *specs;
+        size_t float_size;
+        specs = (const asn_NativeReal_specifics_t *)td->specifics;
+        float_size = specs ? specs->float_size : sizeof(double);
+        memset(ptr, 0, float_size);
+    } break;
+    }
+}
+
+asn_random_fill_result_t
+NativeReal_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+                       const asn_encoding_constraints_t *constraints,
+                       size_t max_length) {
+    asn_random_fill_result_t result_ok = {ARFILL_OK, 0};
+    asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+    asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+#ifndef INFINITY
+#define INFINITY (1.0/0.0)
+#endif
+#ifndef NAN
+#define NAN (0.0/0.0)
+#endif
+    static const double double_values[] = {
+        -M_E, M_E, -M_PI, M_PI, /* Better precision than with floats */
+        -1E+308, 1E+308,
+        /* 2^51 */
+        -2251799813685248.0, 2251799813685248.0,
+        /* 2^52 */
+        -4503599627370496.0, 4503599627370496.0,
+        /* 2^100 */
+        -1267650600228229401496703205376.0, 1267650600228229401496703205376.0,
+        -DBL_MIN, DBL_MIN,
+        -DBL_MAX, DBL_MAX,
+#ifdef  DBL_TRUE_MIN
+        -DBL_TRUE_MIN, DBL_TRUE_MIN
+#endif
+    };
+    static const float float_values[] = {
+        0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255,
+        -FLT_MIN, FLT_MIN,
+        -FLT_MAX, FLT_MAX,
+#ifdef  FLT_TRUE_MIN
+        -FLT_TRUE_MIN, FLT_TRUE_MIN,
+#endif
+        INFINITY, -INFINITY, NAN
+    };
+    ssize_t float_set_size = NativeReal__float_size(td);
+    const size_t n_doubles = sizeof(double_values) / sizeof(double_values[0]);
+    const size_t n_floats = sizeof(float_values) / sizeof(float_values[0]);
+    double d;
+
+    (void)constraints;
+
+    if(max_length == 0) return result_skipped;
+
+    if(float_set_size == sizeof(double) && asn_random_between(0, 1) == 0) {
+        d = double_values[asn_random_between(0, n_doubles - 1)];
+    } else {
+        d = float_values[asn_random_between(0, n_floats - 1)];
+    }
+
+    if(NativeReal__set(td, sptr, d) < 0) {
+        return result_failed;
+    }
+
+    result_ok.length = float_set_size;
+    return result_ok;
+}
+
+
+/*
+ * Local helper functions.
+ */
+
+static size_t
+NativeReal__float_size(const asn_TYPE_descriptor_t *td) {
+    const asn_NativeReal_specifics_t *specs =
+        (const asn_NativeReal_specifics_t *)td->specifics;
+    return specs ? specs->float_size : sizeof(double);
+}
+
+static double
+NativeReal__get_double(const asn_TYPE_descriptor_t *td, const void *ptr) {
+    size_t float_size = NativeReal__float_size(td);
+    if(float_size == sizeof(float)) {
+        return *(const float *)ptr;
+    } else {
+        return *(const double *)ptr;
+    }
+}
+
+static ssize_t  /* Returns -1 or float size. */
+NativeReal__set(const asn_TYPE_descriptor_t *td, void **sptr, double d) {
+    size_t float_size = NativeReal__float_size(td);
+    void *native;
+
+    if(!(native = *sptr)) {
+        native = (*sptr = CALLOC(1, float_size));
+        if(!native) {
+            return -1;
+        }
+    }
+
+    if(float_size == sizeof(float)) {
+        if(asn_double2float(d, (float *)native)) {
+            return -1;
+        }
+    } else {
+        *(double *)native = d;
+    }
+
+    return float_size;
+}
+
diff --git a/src/codec_utils/E2SM_KPM/NativeReal.h b/src/codec_utils/E2SM_KPM/NativeReal.h
new file mode 100644 (file)
index 0000000..1bfdc96
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+/*
+ * This type differs from the standard REAL in that it is modelled using
+ * the fixed machine type (double), so it can hold only values of
+ * limited precision. There is no explicit type (i.e., NativeReal_t).
+ * Use of this type is normally enabled by -fnative-types.
+ */
+#ifndef        ASN_TYPE_NativeReal_H
+#define        ASN_TYPE_NativeReal_H
+
+#include <asn_application.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct asn_NativeReal_specifics_s {
+    unsigned float_size; /* sizeof(float) or sizeof(double) */
+} asn_NativeReal_specifics_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_NativeReal;
+extern asn_TYPE_operation_t asn_OP_NativeReal;
+
+asn_struct_free_f  NativeReal_free;
+asn_struct_print_f NativeReal_print;
+asn_struct_compare_f NativeReal_compare;
+ber_type_decoder_f NativeReal_decode_ber;
+der_type_encoder_f NativeReal_encode_der;
+per_type_decoder_f NativeReal_decode_uper;
+per_type_encoder_f NativeReal_encode_uper;
+per_type_decoder_f NativeReal_decode_aper;
+per_type_encoder_f NativeReal_encode_aper;
+oer_type_decoder_f NativeReal_decode_oer;
+oer_type_encoder_f NativeReal_encode_oer;
+xer_type_decoder_f NativeReal_decode_xer;
+xer_type_encoder_f NativeReal_encode_xer;
+asn_random_fill_f  NativeReal_random_fill;
+
+#define NativeReal_constraint  asn_generic_no_constraint
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_TYPE_NativeReal_H */
diff --git a/src/codec_utils/E2SM_KPM/NgENB-ID.c b/src/codec_utils/E2SM_KPM/NgENB-ID.c
new file mode 100644 (file)
index 0000000..ee4744c
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NgENB-ID.h"
+
+static int
+memb_macroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 20)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_shortMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 18)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int
+memb_longMacroNgENB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const BIT_STRING_t *st = (const BIT_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       if(st->size > 0) {
+               /* Size in bits */
+               size = 8 * st->size - (st->bits_unused & 0x07);
+       } else {
+               size = 0;
+       }
+       
+       if((size == 21)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       20      /* (SIZE(20..20)) */};
+static asn_per_constraints_t asn_PER_memb_macroNgENB_ID_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  20,  20 }      /* (SIZE(20..20)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       18      /* (SIZE(18..18)) */};
+static asn_per_constraints_t asn_PER_memb_shortMacroNgENB_ID_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  18,  18 }      /* (SIZE(18..18)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       21      /* (SIZE(21..21)) */};
+static asn_per_constraints_t asn_PER_memb_longMacroNgENB_ID_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  21,  21 }      /* (SIZE(21..21)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  2 }    /* (0..2,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NgENB_ID_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.macroNgENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_macroNgENB_ID_constr_2, &asn_PER_memb_macroNgENB_ID_constr_2,  memb_macroNgENB_ID_constraint_1 },
+               0, 0, /* No default value */
+               "macroNgENB-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.shortMacroNgENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_shortMacroNgENB_ID_constr_3, &asn_PER_memb_shortMacroNgENB_ID_constr_3,  memb_shortMacroNgENB_ID_constraint_1 },
+               0, 0, /* No default value */
+               "shortMacroNgENB-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NgENB_ID, choice.longMacroNgENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_longMacroNgENB_ID_constr_4, &asn_PER_memb_longMacroNgENB_ID_constr_4,  memb_longMacroNgENB_ID_constraint_1 },
+               0, 0, /* No default value */
+               "longMacroNgENB-ID"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_NgENB_ID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macroNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shortMacroNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longMacroNgENB-ID */
+};
+asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1 = {
+       sizeof(struct NgENB_ID),
+       offsetof(struct NgENB_ID, _asn_ctx),
+       offsetof(struct NgENB_ID, present),
+       sizeof(((struct NgENB_ID *)0)->present),
+       asn_MAP_NgENB_ID_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       3       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_NgENB_ID = {
+       "NgENB-ID",
+       "NgENB-ID",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_NgENB_ID_constr_1, &asn_PER_type_NgENB_ID_constr_1, CHOICE_constraint },
+       asn_MBR_NgENB_ID_1,
+       3,      /* Elements count */
+       &asn_SPC_NgENB_ID_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/NgENB-ID.h b/src/codec_utils/E2SM_KPM/NgENB-ID.h
new file mode 100644 (file)
index 0000000..fae3124
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NgENB_ID_H_
+#define        _NgENB_ID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NgENB_ID_PR {
+       NgENB_ID_PR_NOTHING,    /* No components present */
+       NgENB_ID_PR_macroNgENB_ID,
+       NgENB_ID_PR_shortMacroNgENB_ID,
+       NgENB_ID_PR_longMacroNgENB_ID
+       /* Extensions may appear below */
+       
+} NgENB_ID_PR;
+
+/* NgENB-ID */
+typedef struct NgENB_ID {
+       NgENB_ID_PR present;
+       union NgENB_ID_u {
+               BIT_STRING_t     macroNgENB_ID;
+               BIT_STRING_t     shortMacroNgENB_ID;
+               BIT_STRING_t     longMacroNgENB_ID;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NgENB_ID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NgENB_ID;
+extern asn_CHOICE_specifics_t asn_SPC_NgENB_ID_specs_1;
+extern asn_TYPE_member_t asn_MBR_NgENB_ID_1[3];
+extern asn_per_constraints_t asn_PER_type_NgENB_ID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NgENB_ID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/PLMNIdentity.c b/src/codec_utils/E2SM_KPM/PLMNIdentity.c
new file mode 100644 (file)
index 0000000..9b7a5b2
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMNIdentity.h"
+
+int
+PLMNIdentity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 3)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PLMNIdentity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PLMNIdentity = {
+       "PLMNIdentity",
+       "PLMNIdentity",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_PLMNIdentity_tags_1,
+       sizeof(asn_DEF_PLMNIdentity_tags_1)
+               /sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */
+       asn_DEF_PLMNIdentity_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PLMNIdentity_tags_1)
+               /sizeof(asn_DEF_PLMNIdentity_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMNIdentity_constr_1, &asn_PER_type_PLMNIdentity_constr_1, PLMNIdentity_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/PLMNIdentity.h b/src/codec_utils/E2SM_KPM/PLMNIdentity.h
new file mode 100644 (file)
index 0000000..5852bcd
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMNIdentity_H_
+#define        _PLMNIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PLMNIdentity */
+typedef OCTET_STRING_t  PLMNIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PLMNIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PLMNIdentity;
+asn_struct_free_f PLMNIdentity_free;
+asn_struct_print_f PLMNIdentity_print;
+asn_constr_check_f PLMNIdentity_constraint;
+ber_type_decoder_f PLMNIdentity_decode_ber;
+der_type_encoder_f PLMNIdentity_encode_der;
+xer_type_decoder_f PLMNIdentity_decode_xer;
+xer_type_encoder_f PLMNIdentity_encode_xer;
+oer_type_decoder_f PLMNIdentity_decode_oer;
+oer_type_encoder_f PLMNIdentity_encode_oer;
+per_type_decoder_f PLMNIdentity_decode_uper;
+per_type_encoder_f PLMNIdentity_encode_uper;
+per_type_decoder_f PLMNIdentity_decode_aper;
+per_type_encoder_f PLMNIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMNIdentity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/QCI.c b/src/codec_utils/E2SM_KPM/QCI.c
new file mode 100644 (file)
index 0000000..d624f19
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QCI.h"
+
+int
+QCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 0 && value <= 255)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_QCI_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_QCI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QCI = {
+       "QCI",
+       "QCI",
+       &asn_OP_NativeInteger,
+       asn_DEF_QCI_tags_1,
+       sizeof(asn_DEF_QCI_tags_1)
+               /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */
+       asn_DEF_QCI_tags_1,     /* Same as above */
+       sizeof(asn_DEF_QCI_tags_1)
+               /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */
+       { &asn_OER_type_QCI_constr_1, &asn_PER_type_QCI_constr_1, QCI_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/QCI.h b/src/codec_utils/E2SM_KPM/QCI.h
new file mode 100644 (file)
index 0000000..3844566
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QCI_H_
+#define        _QCI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QCI */
+typedef long    QCI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QCI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QCI;
+asn_struct_free_f QCI_free;
+asn_struct_print_f QCI_print;
+asn_constr_check_f QCI_constraint;
+ber_type_decoder_f QCI_decode_ber;
+der_type_encoder_f QCI_encode_der;
+xer_type_decoder_f QCI_decode_xer;
+xer_type_encoder_f QCI_encode_xer;
+oer_type_decoder_f QCI_decode_oer;
+oer_type_encoder_f QCI_encode_oer;
+per_type_decoder_f QCI_decode_uper;
+per_type_encoder_f QCI_encode_uper;
+per_type_decoder_f QCI_decode_aper;
+per_type_encoder_f QCI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QCI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/QosFlowIdentifier.c b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.c
new file mode 100644 (file)
index 0000000..8aecbeb
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QosFlowIdentifier.h"
+
+int
+QosFlowIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       long value;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       value = *(const long *)sptr;
+       
+       if((value >= 0 && value <= 63)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  6,  6,  0,  63 }   /* (0..63,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_QosFlowIdentifier_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier = {
+       "QosFlowIdentifier",
+       "QosFlowIdentifier",
+       &asn_OP_NativeInteger,
+       asn_DEF_QosFlowIdentifier_tags_1,
+       sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+               /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+       asn_DEF_QosFlowIdentifier_tags_1,       /* Same as above */
+       sizeof(asn_DEF_QosFlowIdentifier_tags_1)
+               /sizeof(asn_DEF_QosFlowIdentifier_tags_1[0]), /* 1 */
+       { &asn_OER_type_QosFlowIdentifier_constr_1, &asn_PER_type_QosFlowIdentifier_constr_1, QosFlowIdentifier_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/QosFlowIdentifier.h b/src/codec_utils/E2SM_KPM/QosFlowIdentifier.h
new file mode 100644 (file)
index 0000000..c1dd855
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QosFlowIdentifier_H_
+#define        _QosFlowIdentifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QosFlowIdentifier */
+typedef long    QosFlowIdentifier_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QosFlowIdentifier_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QosFlowIdentifier;
+asn_struct_free_f QosFlowIdentifier_free;
+asn_struct_print_f QosFlowIdentifier_print;
+asn_constr_check_f QosFlowIdentifier_constraint;
+ber_type_decoder_f QosFlowIdentifier_decode_ber;
+der_type_encoder_f QosFlowIdentifier_encode_der;
+xer_type_decoder_f QosFlowIdentifier_decode_xer;
+xer_type_encoder_f QosFlowIdentifier_encode_xer;
+oer_type_decoder_f QosFlowIdentifier_decode_oer;
+oer_type_encoder_f QosFlowIdentifier_encode_oer;
+per_type_decoder_f QosFlowIdentifier_decode_uper;
+per_type_encoder_f QosFlowIdentifier_encode_uper;
+per_type_decoder_f QosFlowIdentifier_decode_aper;
+per_type_encoder_f QosFlowIdentifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QosFlowIdentifier_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RANUEID.c b/src/codec_utils/E2SM_KPM/RANUEID.c
new file mode 100644 (file)
index 0000000..1ed716a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RANUEID.h"
+
+int
+RANUEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 8)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RANUEID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_RANUEID_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RANUEID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RANUEID = {
+       "RANUEID",
+       "RANUEID",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_RANUEID_tags_1,
+       sizeof(asn_DEF_RANUEID_tags_1)
+               /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+       asn_DEF_RANUEID_tags_1, /* Same as above */
+       sizeof(asn_DEF_RANUEID_tags_1)
+               /sizeof(asn_DEF_RANUEID_tags_1[0]), /* 1 */
+       { &asn_OER_type_RANUEID_constr_1, &asn_PER_type_RANUEID_constr_1, RANUEID_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RANUEID.h b/src/codec_utils/E2SM_KPM/RANUEID.h
new file mode 100644 (file)
index 0000000..0be1002
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RANUEID_H_
+#define        _RANUEID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANUEID */
+typedef OCTET_STRING_t  RANUEID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RANUEID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RANUEID;
+asn_struct_free_f RANUEID_free;
+asn_struct_print_f RANUEID_print;
+asn_constr_check_f RANUEID_constraint;
+ber_type_decoder_f RANUEID_decode_ber;
+der_type_encoder_f RANUEID_encode_der;
+xer_type_decoder_f RANUEID_decode_xer;
+xer_type_encoder_f RANUEID_encode_xer;
+oer_type_decoder_f RANUEID_decode_oer;
+oer_type_encoder_f RANUEID_encode_oer;
+per_type_decoder_f RANUEID_decode_uper;
+per_type_encoder_f RANUEID_encode_uper;
+per_type_decoder_f RANUEID_decode_aper;
+per_type_encoder_f RANUEID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANUEID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RANfunction-Name.c b/src/codec_utils/E2SM_KPM/RANfunction-Name.c
new file mode 100644 (file)
index 0000000..43b3cc7
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RANfunction-Name.h"
+
+static const int permitted_alphabet_table_2[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_2[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_2(const void *sptr) {
+       const int *table = permitted_alphabet_table_2;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static const int permitted_alphabet_table_3[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_3[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_3(const void *sptr) {
+       const int *table = permitted_alphabet_table_3;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static const int permitted_alphabet_table_4[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_4[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_4(const void *sptr) {
+       const int *table = permitted_alphabet_table_4;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+static int
+memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size >= 1 && size <= 150)
+                && !check_permitted_alphabet_2(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0]))
+               return -1;
+       return permitted_alphabet_table_2[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0]))
+               return -1;
+       return permitted_alphabet_code2value_2[code];
+}
+static int
+memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size >= 1 && size <= 1000)
+                && !check_permitted_alphabet_3(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0]))
+               return -1;
+       return permitted_alphabet_table_3[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0]))
+               return -1;
+       return permitted_alphabet_code2value_3[code];
+}
+static int
+memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size >= 1 && size <= 150)
+                && !check_permitted_alphabet_4(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0]))
+               return -1;
+       return permitted_alphabet_table_4[value] - 1;
+}
+static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0]))
+               return -1;
+       return permitted_alphabet_code2value_4[code];
+}
+static asn_oer_constraints_t asn_OER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }  /* (SIZE(1..150,...)) */,
+       asn_PER_MAP_ranFunction_ShortName_2_v2c,        /* Value to PER code map */
+       asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  10,  10,  1,  1000 }       /* (SIZE(1..1000,...)) */,
+       asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */
+       asn_PER_MAP_ranFunction_E2SM_OID_3_c2v  /* PER code to value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ranFunction_Description_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }  /* (SIZE(1..150,...)) */,
+       asn_PER_MAP_ranFunction_Description_4_v2c,      /* Value to PER code map */
+       asn_PER_MAP_ranFunction_Description_4_c2v       /* PER code to value map */
+};
+asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_ranFunction_ShortName_constr_2, &asn_PER_memb_ranFunction_ShortName_constr_2,  memb_ranFunction_ShortName_constraint_1 },
+               0, 0, /* No default value */
+               "ranFunction-ShortName"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_ranFunction_E2SM_OID_constr_3, &asn_PER_memb_ranFunction_E2SM_OID_constr_3,  memb_ranFunction_E2SM_OID_constraint_1 },
+               0, 0, /* No default value */
+               "ranFunction-E2SM-OID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { &asn_OER_memb_ranFunction_Description_constr_4, &asn_PER_memb_ranFunction_Description_constr_4,  memb_ranFunction_Description_constraint_1 },
+               0, 0, /* No default value */
+               "ranFunction-Description"
+               },
+       { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ranFunction-Instance"
+               },
+};
+static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = {
+       sizeof(struct RANfunction_Name),
+       offsetof(struct RANfunction_Name, _asn_ctx),
+       asn_MAP_RANfunction_Name_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_RANfunction_Name_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = {
+       "RANfunction-Name",
+       "RANfunction-Name",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RANfunction_Name_tags_1,
+       sizeof(asn_DEF_RANfunction_Name_tags_1)
+               /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */
+       asn_DEF_RANfunction_Name_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RANfunction_Name_tags_1)
+               /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RANfunction_Name_1,
+       4,      /* Elements count */
+       &asn_SPC_RANfunction_Name_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RANfunction-Name.h b/src/codec_utils/E2SM_KPM/RANfunction-Name.h
new file mode 100644 (file)
index 0000000..2a915d4
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RANfunction_Name_H_
+#define        _RANfunction_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RANfunction-Name */
+typedef struct RANfunction_Name {
+       PrintableString_t        ranFunction_ShortName;
+       PrintableString_t        ranFunction_E2SM_OID;
+       PrintableString_t        ranFunction_Description;
+       long    *ranFunction_Instance;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RANfunction_Name_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name;
+extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1;
+extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RANfunction_Name_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/REAL.c b/src/codec_utils/E2SM_KPM/REAL.c
new file mode 100644 (file)
index 0000000..e3daf37
--- /dev/null
@@ -0,0 +1,1028 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#define        _ISOC99_SOURCE          /* For ilogb() and quiet NAN */
+#ifndef _BSD_SOURCE
+#define        _BSD_SOURCE             /* To reintroduce finite(3) */
+#endif
+#include <asn_internal.h>
+#if    defined(__alpha)
+#include <sys/resource.h>      /* For INFINITY */
+#endif
+#include <stdlib.h>    /* for strtod(3) */
+#include <math.h>
+#include <float.h>
+#include <errno.h>
+#include <REAL.h>
+#include <OCTET_STRING.h>
+
+#undef INT_MAX
+#define        INT_MAX ((int)(((unsigned int)-1) >> 1))
+
+#if    !(defined(NAN) || defined(INFINITY))
+static volatile double real_zero CC_NOTUSED = 0.0;
+#endif
+#ifndef        NAN
+#define        NAN     (0.0/0.0)
+#endif
+#ifndef        INFINITY
+#define        INFINITY        (1.0/0.0)
+#endif
+
+#if defined(__clang__)
+/*
+ * isnan() is defined using generic selections and won't compile in
+ * strict C89 mode because of too fancy system's standard library.
+ * However, prior to C11 the math had a perfectly working isnan()
+ * in the math library.
+ * Disable generic selection warning so we can test C89 mode with newer libc.
+ */
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wc11-extensions"
+static int asn_isnan(double d) {
+    return isnan(d);
+}
+static int asn_isfinite(double d) {
+#ifdef isfinite
+    return isfinite(d);  /* ISO C99 */
+#else
+    return finite(d);    /* Deprecated on Mac OS X 10.9 */
+#endif
+}
+#pragma clang diagnostic pop
+#else   /* !clang */
+#define asn_isnan(v)    isnan(v)
+#ifdef isfinite
+#define asn_isfinite(d)   isfinite(d)  /* ISO C99 */
+#else
+#define asn_isfinite(d)   finite(d)    /* Deprecated on Mac OS X 10.9 */
+#endif
+#endif  /* clang */
+
+/*
+ * REAL basic type description.
+ */
+static const ber_tlv_tag_t asn_DEF_REAL_tags[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
+};
+asn_TYPE_operation_t asn_OP_REAL = {
+       ASN__PRIMITIVE_TYPE_free,
+       REAL_print,
+       REAL_compare,
+       ber_decode_primitive,
+       der_encode_primitive,
+       REAL_decode_xer,
+       REAL_encode_xer,
+#ifdef ASN_DISABLE_OER_SUPPORT
+       0,
+       0,
+#else
+       REAL_decode_oer,
+       REAL_encode_oer,
+#endif  /* ASN_DISABLE_OER_SUPPORT */
+#ifdef ASN_DISABLE_PER_SUPPORT
+       0,
+       0,
+       0,
+       0,
+#else
+       REAL_decode_uper,
+       REAL_encode_uper,
+       REAL_decode_aper,
+       REAL_encode_aper,
+#endif /* ASN_DISABLE_PER_SUPPORT */
+       REAL_random_fill,
+       0       /* Use generic outmost tag fetcher */
+};
+asn_TYPE_descriptor_t asn_DEF_REAL = {
+       "REAL",
+       "REAL",
+       &asn_OP_REAL,
+       asn_DEF_REAL_tags,
+       sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]),
+       asn_DEF_REAL_tags, /* Same as above */
+       sizeof(asn_DEF_REAL_tags) / sizeof(asn_DEF_REAL_tags[0]),
+       { 0, 0, asn_generic_no_constraint },
+       0,
+       0,      /* No members */
+       0       /* No specifics */
+};
+
+typedef enum specialRealValue {
+       SRV__NOT_A_NUMBER,
+       SRV__MINUS_INFINITY,
+       SRV__PLUS_INFINITY
+} specialRealValue_e;
+static struct specialRealValue_s {
+       char *string;
+       size_t length;
+       long dv;
+} specialRealValue[] = {
+#define        SRV_SET(foo, val)       { foo, sizeof(foo) - 1, val }
+       SRV_SET("<NOT-A-NUMBER/>", 0),
+       SRV_SET("<MINUS-INFINITY/>", -1),
+       SRV_SET("<PLUS-INFINITY/>", 1),
+#undef SRV_SET
+};
+
+ssize_t
+REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key) {
+       char local_buf[64];
+       char *buf = local_buf;
+       ssize_t buflen = sizeof(local_buf);
+       const char *fmt = canonical ? "%.17E" /* Precise */ : "%.15f" /* Pleasant*/;
+       ssize_t ret;
+
+       /*
+        * Check whether it is a special value.
+        */
+       /* fpclassify(3) is not portable yet */
+       if(asn_isnan(d)) {
+               buf = specialRealValue[SRV__NOT_A_NUMBER].string;
+               buflen = specialRealValue[SRV__NOT_A_NUMBER].length;
+               return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+       } else if(!asn_isfinite(d)) {
+               if(copysign(1.0, d) < 0.0) {
+                       buf = specialRealValue[SRV__MINUS_INFINITY].string;
+                       buflen = specialRealValue[SRV__MINUS_INFINITY].length;
+               } else {
+                       buf = specialRealValue[SRV__PLUS_INFINITY].string;
+                       buflen = specialRealValue[SRV__PLUS_INFINITY].length;
+               }
+               return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+       } else if(ilogb(d) <= -INT_MAX) {
+               if(copysign(1.0, d) < 0.0) {
+                       buf = "-0";
+                       buflen = 2;
+               } else {
+                       buf = "0";
+                       buflen = 1;
+               }
+               return (cb(buf, buflen, app_key) < 0) ? -1 : buflen;
+       }
+
+       /*
+        * Use the libc's double printing, hopefully they got it right.
+        */
+       do {
+               ret = snprintf(buf, buflen, fmt, d);
+               if(ret < 0) {
+                       /* There are some old broken APIs. */
+                       buflen <<= 1;
+                       if(buflen > 4096) {
+                               /* Should be plenty. */
+                               if(buf != local_buf) FREEMEM(buf);
+                               return -1;
+                       }
+               } else if(ret >= buflen) {
+                       buflen = ret + 1;
+               } else {
+                       buflen = ret;
+                       break;
+               }
+               if(buf != local_buf) FREEMEM(buf);
+               buf = (char *)MALLOC(buflen);
+               if(!buf) return -1;
+       } while(1);
+
+       if(canonical) {
+               /*
+                * Transform the "[-]d.dddE+-dd" output into "[-]d.dddE[-]d"
+                * Check that snprintf() constructed the output correctly.
+                */
+               char *dot;
+               char *end = buf + buflen;
+               char *last_zero;
+               char *first_zero_in_run;
+        char *s;
+
+        enum {
+            LZSTATE_NOTHING,
+            LZSTATE_ZEROES
+        } lz_state = LZSTATE_NOTHING;
+
+               dot = (buf[0] == 0x2d /* '-' */) ? (buf + 2) : (buf + 1);
+               if(*dot >= 0x30) {
+                       if(buf != local_buf) FREEMEM(buf);
+                       errno = EINVAL;
+                       return -1;      /* Not a dot, really */
+               }
+               *dot = 0x2e;            /* Replace possible comma */
+
+        for(first_zero_in_run = last_zero = s = dot + 2; s < end; s++) {
+            switch(*s) {
+            case 0x45: /* 'E' */
+                if(lz_state == LZSTATE_ZEROES) last_zero = first_zero_in_run;
+                break;
+            case 0x30: /* '0' */
+                if(lz_state == LZSTATE_NOTHING) first_zero_in_run = s;
+                lz_state = LZSTATE_ZEROES;
+                continue;
+            default:
+                lz_state = LZSTATE_NOTHING;
+                continue;
+            }
+            break;
+        }
+
+               if(s == end) {
+                       if(buf != local_buf) FREEMEM(buf);
+                       errno = EINVAL;
+                       return -1;              /* No promised E */
+               }
+
+        assert(*s == 0x45);
+        {
+            char *E = s;
+            char *expptr = ++E;
+            char *s = expptr;
+            int sign;
+
+            if(*expptr == 0x2b /* '+' */) {
+                /* Skip the "+" */
+                buflen -= 1;
+                sign = 0;
+            } else {
+                sign = 1;
+                s++;
+            }
+            expptr++;
+            if(expptr > end) {
+                if(buf != local_buf) FREEMEM(buf);
+                errno = EINVAL;
+                return -1;
+            }
+            if(*expptr == 0x30) {
+                buflen--;
+                expptr++;
+            }
+            if(lz_state == LZSTATE_ZEROES) {
+                *last_zero = 0x45;     /* E */
+                buflen -= s - (last_zero + 1);
+                s = last_zero + 1;
+                if(sign) {
+                    *s++ = 0x2d /* '-' */;
+                    buflen++;
+                }
+            }
+            for(; expptr <= end; s++, expptr++)
+                *s = *expptr;
+        }
+       } else {
+               /*
+                * Remove trailing zeros.
+                */
+               char *end = buf + buflen;
+               char *last_zero = end;
+               int stoplooking = 0;
+               char *z;
+               for(z = end - 1; z > buf; z--) {
+                       switch(*z) {
+                       case 0x30:
+                               if(!stoplooking)
+                                       last_zero = z;
+                               continue;
+                       case 0x31: case 0x32: case 0x33: case 0x34:
+                       case 0x35: case 0x36: case 0x37: case 0x38: case 0x39:
+                               stoplooking = 1;
+                               continue;
+                       default:        /* Catch dot and other separators */
+                               /*
+                                * Replace possible comma (which may even
+                                * be not a comma at all: locale-defined).
+                                */
+                               *z = 0x2e;
+                               if(last_zero == z + 1) {        /* leave x.0 */
+                                       last_zero++;
+                               }
+                               buflen = last_zero - buf;
+                               *last_zero = '\0';
+                               break;
+                       }
+                       break;
+               }
+       }
+
+       ret = cb(buf, buflen, app_key);
+       if(buf != local_buf) FREEMEM(buf);
+       return (ret < 0) ? -1 : buflen;
+}
+
+int
+REAL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+           asn_app_consume_bytes_f *cb, void *app_key) {
+    const REAL_t *st = (const REAL_t *)sptr;
+       ssize_t ret;
+       double d;
+
+       (void)td;       /* Unused argument */
+       (void)ilevel;   /* Unused argument */
+
+       if(!st || !st->buf)
+               ret = cb("<absent>", 8, app_key);
+       else if(asn_REAL2double(st, &d))
+               ret = cb("<error>", 7, app_key);
+       else
+               ret = REAL__dump(d, 0, cb, app_key);
+
+       return (ret < 0) ? -1 : 0;
+}
+
+int
+REAL_compare(const asn_TYPE_descriptor_t *td, const void *aptr,
+             const void *bptr) {
+    const REAL_t *a = aptr;
+    const REAL_t *b = bptr;
+
+    (void)td;
+
+    if(a && b) {
+        double adbl, bdbl;
+        int ra, rb;
+        ra = asn_REAL2double(a, &adbl);
+        rb = asn_REAL2double(b, &bdbl);
+        if(ra == 0 && rb == 0) {
+            if(asn_isnan(adbl)) {
+                if(asn_isnan(bdbl)) {
+                    return 0;
+                } else {
+                    return -1;
+                }
+            } else if(asn_isnan(bdbl)) {
+                return 1;
+            }
+            /* Value comparison. */
+            if(adbl < bdbl) {
+                return -1;
+            } else if(adbl > bdbl) {
+                return 1;
+            } else {
+                return 0;
+            }
+        } else if(ra) {
+            return -1;
+        } else {
+            return 1;
+        }
+    } else if(!a) {
+        return -1;
+    } else {
+        return 1;
+    }
+}
+
+asn_enc_rval_t
+REAL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
+                enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb,
+                void *app_key) {
+       const REAL_t *st = (const REAL_t *)sptr;
+       asn_enc_rval_t er = {0,0,0};
+       double d;
+
+       (void)ilevel;
+
+       if(!st || !st->buf || asn_REAL2double(st, &d))
+               ASN__ENCODE_FAILED;
+
+       er.encoded = REAL__dump(d, flags & XER_F_CANONICAL, cb, app_key);
+       if(er.encoded < 0) ASN__ENCODE_FAILED;
+
+       ASN__ENCODED_OK(er);
+}
+
+
+/*
+ * Decode the chunk of XML text encoding REAL.
+ */
+static enum xer_pbd_rval
+REAL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr,
+                      const void *chunk_buf, size_t chunk_size) {
+    REAL_t *st = (REAL_t *)sptr;
+       double value;
+       const char *xerdata = (const char *)chunk_buf;
+       char *endptr = 0;
+       char *b;
+
+       (void)td;
+
+       if(!chunk_size) return XPBD_BROKEN_ENCODING;
+
+       /*
+        * Decode an XMLSpecialRealValue: <MINUS-INFINITY>, etc.
+        */
+       if(xerdata[0] == 0x3c /* '<' */) {
+               size_t i;
+               for(i = 0; i < sizeof(specialRealValue)
+                               / sizeof(specialRealValue[0]); i++) {
+                       struct specialRealValue_s *srv = &specialRealValue[i];
+                       double dv;
+
+                       if(srv->length != chunk_size
+                       || memcmp(srv->string, chunk_buf, chunk_size))
+                               continue;
+
+                       /*
+                        * It could've been done using
+                        * (double)srv->dv / real_zero,
+                        * but it summons fp exception on some platforms.
+                        */
+                       switch(srv->dv) {
+                       case -1: dv = - INFINITY; break;
+                       case 0: dv = NAN;       break;
+                       case 1: dv = INFINITY;  break;
+                       default: return XPBD_SYSTEM_FAILURE;
+                       }
+
+                       if(asn_double2REAL(st, dv))
+                               return XPBD_SYSTEM_FAILURE;
+
+                       return XPBD_BODY_CONSUMED;
+               }
+               ASN_DEBUG("Unknown XMLSpecialRealValue");
+               return XPBD_BROKEN_ENCODING;
+       }
+
+       /*
+        * Copy chunk into the nul-terminated string, and run strtod.
+        */
+       b = (char *)MALLOC(chunk_size + 1);
+       if(!b) return XPBD_SYSTEM_FAILURE;
+       memcpy(b, chunk_buf, chunk_size);
+       b[chunk_size] = 0;      /* nul-terminate */
+
+       value = strtod(b, &endptr);
+       FREEMEM(b);
+       if(endptr == b) return XPBD_BROKEN_ENCODING;
+
+       if(asn_double2REAL(st, value))
+               return XPBD_SYSTEM_FAILURE;
+
+       return XPBD_BODY_CONSUMED;
+}
+
+asn_dec_rval_t
+REAL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx,
+                const asn_TYPE_descriptor_t *td, void **sptr,
+                const char *opt_mname, const void *buf_ptr, size_t size) {
+    return xer_decode_primitive(opt_codec_ctx, td,
+               sptr, sizeof(REAL_t), opt_mname,
+               buf_ptr, size, REAL__xer_body_decode);
+}
+
+int
+asn_REAL2double(const REAL_t *st, double *dbl_value) {
+       unsigned int octv;
+
+       if(!st || !st->buf) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       if(st->size == 0) {
+               *dbl_value = 0;
+               return 0;
+       }
+
+       octv = st->buf[0];      /* unsigned byte */
+
+       switch(octv & 0xC0) {
+       case 0x40:      /* X.690: 8.5.6 a) => 8.5.9 */
+               /* "SpecialRealValue" */
+
+               /* Be liberal in what you accept...
+                * http://en.wikipedia.org/wiki/Robustness_principle
+               if(st->size != 1) ...
+               */
+
+               switch(st->buf[0]) {
+               case 0x40:      /* 01000000: PLUS-INFINITY */
+                       *dbl_value = INFINITY;
+                       return 0;
+               case 0x41:      /* 01000001: MINUS-INFINITY */
+                       *dbl_value = - INFINITY;
+                       return 0;
+               case 0x42:      /* 01000010: NOT-A-NUMBER */
+                       *dbl_value = NAN;
+                       return 0;
+               case 0x43:      /* 01000011: minus zero */
+                       *dbl_value = -0.0;
+                       return 0;
+               }
+
+               errno = EINVAL;
+               return -1;
+       case 0x00: {    /* X.690: 8.5.7 */
+               /*
+                * Decimal. NR{1,2,3} format from ISO 6093.
+                * NR1: [ ]*[+-]?[0-9]+
+                * NR2: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)
+                * NR3: [ ]*[+-]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)[Ee][+-]?[0-9]+
+                */
+               double d;
+               char *source = 0;
+               char *endptr;
+               int used_malloc = 0;
+
+               if(octv == 0 || (octv & 0x3C)) {
+                       /* Remaining values of bits 6 to 1 are Reserved. */
+                       errno = EINVAL;
+                       return -1;
+               }
+
+               /* 1. By contract, an input buffer should be '\0'-terminated.
+                * OCTET STRING decoder ensures that, as is asn_double2REAL().
+                * 2. ISO 6093 specifies COMMA as a possible decimal separator.
+                * However, strtod() can't always deal with COMMA.
+                * So her we fix both by reallocating, copying and fixing.
+                */
+               if(st->buf[st->size] != '\0' || memchr(st->buf, ',', st->size)) {
+                       const uint8_t *p, *end;
+                       char *b;
+
+            b = source = (char *)MALLOC(st->size + 1);
+            if(!source) return -1;
+            used_malloc = 1;
+
+                       /* Copy without the first byte and with 0-termination */
+                       for(p = st->buf + 1, end = st->buf + st->size;
+                                       p < end; b++, p++)
+                               *b = (*p == ',') ? '.' : *p;
+                       *b = '\0';
+               } else {
+                       source = (char *)&st->buf[1];
+               }
+
+               endptr = source;
+               d = strtod(source, &endptr);
+               if(*endptr != '\0') {
+                       /* Format is not consistent with ISO 6093 */
+                       if(used_malloc) FREEMEM(source);
+                       errno = EINVAL;
+                       return -1;
+               }
+               if(used_malloc) FREEMEM(source);
+               if(asn_isfinite(d)) {
+                       *dbl_value = d;
+                       return 0;
+               } else {
+                       errno = ERANGE;
+                       return -1;
+               }
+         }
+       }
+
+       /*
+        * Binary representation.
+        */
+    {
+       double m;
+       int32_t expval;         /* exponent value */
+       unsigned int elen;      /* exponent value length, in octets */
+       int scaleF;
+       int baseF;
+       uint8_t *ptr;
+       uint8_t *end;
+       int sign;
+
+       switch((octv & 0x30) >> 4) {
+       case 0x00: baseF = 1; break;    /* base 2 */
+       case 0x01: baseF = 3; break;    /* base 8 */
+       case 0x02: baseF = 4; break;    /* base 16 */
+       default:
+               /* Reserved field, can't parse now. */
+               errno = EINVAL;
+               return -1;
+       }
+
+       sign = (octv & 0x40);   /* bit 7 */
+       scaleF = (octv & 0x0C) >> 2;    /* bits 4 to 3 */
+
+       if(st->size <= 1 + (octv & 0x03)) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       elen = (octv & 0x03);   /* bits 2 to 1; 8.5.6.4 */
+       if(elen == 0x03) {      /* bits 2 to 1 = 11; 8.5.6.4, case d) */
+               elen = st->buf[1];      /* unsigned binary number */
+               if(elen == 0 || st->size <= (2 + elen)) {
+                       errno = EINVAL;
+                       return -1;
+               }
+               /* FIXME: verify constraints of case d) */
+               ptr = &st->buf[2];
+       } else {
+               ptr = &st->buf[1];
+       }
+
+       /* Fetch the multibyte exponent */
+       expval = (int)(*(int8_t *)ptr);
+       if(elen >= sizeof(expval)-1) {
+               errno = ERANGE;
+               return -1;
+       }
+       end = ptr + elen + 1;
+       for(ptr++; ptr < end; ptr++)
+               expval = (expval * 256) + *ptr;
+
+       m = 0.0;        /* Initial mantissa value */
+
+       /* Okay, the exponent is here. Now, what about mantissa? */
+       end = st->buf + st->size;
+       for(; ptr < end; ptr++)
+               m = ldexp(m, 8) + *ptr;
+
+       if(0)
+       ASN_DEBUG("m=%.10f, scF=%d, bF=%d, expval=%d, ldexp()=%f, ldexp()=%f\n",
+               m, scaleF, baseF, expval,
+               ldexp(m, expval * baseF + scaleF),
+               ldexp(m, scaleF) * pow(pow(2, baseF), expval)
+       );
+
+       /*
+        * (S * N * 2^F) * B^E
+        * Essentially:
+       m = ldexp(m, scaleF) * pow(pow(2, baseF), expval);
+        */
+       m = ldexp(m, expval * baseF + scaleF);
+       if(asn_isfinite(m)) {
+               *dbl_value = sign ? -m : m;
+       } else {
+               errno = ERANGE;
+               return -1;
+       }
+
+    } /* if(binary_format) */
+
+       return 0;
+}
+
+/*
+ * Assume IEEE 754 floating point: standard 64 bit double.
+ * [1 bit sign]  [11 bits exponent]  [52 bits mantissa]
+ */
+int
+asn_double2REAL(REAL_t *st, double dbl_value) {
+    double test = -0.0;
+    int float_big_endian = *(const char *)&test != 0;
+       uint8_t buf[16];        /* More than enough for 8-byte dbl_value */
+       uint8_t dscr[sizeof(dbl_value)];        /* double value scratch pad */
+       /* Assertion guards: won't even compile, if unexpected double size */
+       char assertion_buffer1[9 - sizeof(dbl_value)] CC_NOTUSED;
+       char assertion_buffer2[sizeof(dbl_value) - 7] CC_NOTUSED;
+       uint8_t *ptr = buf;
+       uint8_t *mstop;         /* Last byte of mantissa */
+       unsigned int mval;      /* Value of the last byte of mantissa */
+       unsigned int bmsign;    /* binary mask with sign */
+       unsigned int buflen;
+       unsigned int accum;
+       int expval;
+
+       if(!st) {
+               errno = EINVAL;
+               return -1;
+       }
+
+       /*
+        * ilogb(+-0) returns -INT_MAX or INT_MIN (platform-dependent)
+        * ilogb(+-inf) returns INT_MAX, logb(+-inf) returns +inf
+        * ilogb(NaN) returns INT_MIN or INT_MAX (platform-dependent)
+        */
+       expval = ilogb(dbl_value);
+       if(expval <= -INT_MAX   /* Also catches +-0 and maybe isnan() */
+       || expval == INT_MAX    /* catches isfin() and maybe isnan() */
+       ) {
+               if(!st->buf || st->size < 2) {
+                       ptr = (uint8_t *)MALLOC(2);
+                       if(!ptr) return -1;
+                       if(st->buf) FREEMEM(st->buf);
+                       st->buf = ptr;
+               }
+               /* fpclassify(3) is not portable yet */
+               if(asn_isnan(dbl_value)) {
+                       st->buf[0] = 0x42;      /* NaN */
+                       st->buf[1] = 0;
+                       st->size = 1;
+               } else if(!asn_isfinite(dbl_value)) {
+                       if(copysign(1.0, dbl_value) < 0.0) {
+                               st->buf[0] = 0x41;      /* MINUS-INFINITY */
+                       } else {
+                               st->buf[0] = 0x40;      /* PLUS-INFINITY */
+                       }
+                       st->buf[1] = 0;
+                       st->size = 1;
+               } else {
+                       if(copysign(1.0, dbl_value) >= 0.0) {
+                               /* no content octets: positive zero */
+                               st->buf[0] = 0; /* JIC */
+                               st->size = 0;
+                       } else {
+                               /* Negative zero. #8.5.3, 8.5.9 */
+                               st->buf[0] = 0x43;
+                               st->buf[1] = 0;
+                               st->size = 1;
+                       }
+               }
+               return 0;
+       }
+
+       if(float_big_endian) {
+               uint8_t *s = ((uint8_t *)&dbl_value) + 1;
+               uint8_t *end = ((uint8_t *)&dbl_value) + sizeof(double);
+               uint8_t *d;
+
+               bmsign = 0x80 | ((s[-1] >> 1) & 0x40);  /* binary mask & - */
+               for(mstop = d = dscr; s < end; d++, s++) {
+                       *d = *s;
+                       if(*d) mstop = d;
+               }
+    } else {
+               uint8_t *s = ((uint8_t *)&dbl_value) + sizeof(dbl_value) - 2;
+               uint8_t *start = ((uint8_t *)&dbl_value);
+               uint8_t *d;
+
+               bmsign = 0x80 | ((s[1] >> 1) & 0x40);   /* binary mask & - */
+               for(mstop = d = dscr; s >= start; d++, s--) {
+                       *d = *s;
+                       if(*d) mstop = d;
+               }
+    }
+
+       /* Remove parts of the exponent, leave mantissa and explicit 1. */
+       dscr[0] = 0x10 | (dscr[0] & 0x0f);
+
+       /* Adjust exponent in a very unobvious way */
+       expval -= 8 * ((mstop - dscr) + 1) - 4;
+
+       /* This loop ensures DER conformance by forcing mantissa odd: 11.3.1 */
+       mval = *mstop;
+       if(mval && !(mval & 1)) {
+               int shift_count = 1;
+               int ishift;
+               uint8_t *mptr;
+
+               /*
+                * Figure out what needs to be done to make mantissa odd.
+                */
+               if(!(mval & 0x0f))      /* Speed-up a little */
+                       shift_count = 4;
+               while(((mval >> shift_count) & 1) == 0)
+                       shift_count++;
+
+               ishift = 8 - shift_count;
+               accum = 0;
+
+               /* Go over the buffer, shifting it shift_count bits right. */
+               for(mptr = dscr; mptr <= mstop; mptr++) {
+                       mval = *mptr;
+                       *mptr = accum | (mval >> shift_count);
+                       accum = mval << ishift;
+               }
+
+               /* Adjust exponent appropriately. */
+               expval += shift_count;
+       }
+
+       if(expval < 0) {
+               if((expval >> 7) == -1) {
+                       *ptr++ = bmsign | 0x00;
+                       *ptr++ = expval;
+               } else if((expval >> 15) == -1) {
+                       *ptr++ = bmsign | 0x01;
+                       *ptr++ = expval >> 8;
+                       *ptr++ = expval;
+               } else {
+                       *ptr++ = bmsign | 0x02;
+                       *ptr++ = expval >> 16;
+                       *ptr++ = expval >> 8;
+                       *ptr++ = expval;
+               }
+       } else if(expval <= 0x7f) {
+               *ptr++ = bmsign | 0x00;
+               *ptr++ = expval;
+       } else if(expval <= 0x7fff) {
+               *ptr++ = bmsign | 0x01;
+               *ptr++ = expval >> 8;
+               *ptr++ = expval;
+       } else {
+               assert(expval <= 0x7fffff);
+               *ptr++ = bmsign | 0x02;
+               *ptr++ = expval >> 16;
+               *ptr++ = expval >> 8;
+               *ptr++ = expval;
+       }
+
+       buflen = (mstop - dscr) + 1;
+       memcpy(ptr, dscr, buflen);
+       ptr += buflen;
+       buflen = ptr - buf;
+
+       ptr = (uint8_t *)MALLOC(buflen + 1);
+       if(!ptr) return -1;
+
+       memcpy(ptr, buf, buflen);
+       buf[buflen] = 0;        /* JIC */
+
+       if(st->buf) FREEMEM(st->buf);
+       st->buf = ptr;
+       st->size = buflen;
+
+       return 0;
+}
+
+int CC_ATTR_NO_SANITIZE("float-cast-overflow")
+asn_double2float(double d, float *outcome) {
+    float f = d;
+
+    *outcome = f;
+
+    if(asn_isfinite(d) == asn_isfinite(f)) {
+        return 0;
+    } else {
+        return -1;
+    }
+}
+
+#ifndef ASN_DISABLE_OER_SUPPORT
+
+/*
+ * Encode as Canonical OER
+ */
+asn_enc_rval_t
+REAL_encode_oer(const asn_TYPE_descriptor_t *td,
+                const asn_oer_constraints_t *constraints, const void *sptr,
+                asn_app_consume_bytes_f *cb, void *app_key) {
+    const REAL_t *st = sptr;
+    asn_enc_rval_t er = {0,0,0};
+    ssize_t len_len;
+
+    if(!st || !st->buf || !td)
+        ASN__ENCODE_FAILED;
+
+    if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+    if(constraints && constraints->value.width != 0) {
+        /* If we're constrained to a narrow float/double representation, we
+         * shouldn't have ended up using REAL. Expecting NativeReal. */
+        ASN__ENCODE_FAILED;
+    }
+
+    /* Encode a fake REAL */
+    len_len = oer_serialize_length(st->size, cb, app_key);
+    if(len_len < 0 || cb(st->buf, st->size, app_key) < 0) {
+        ASN__ENCODE_FAILED;
+    } else {
+        er.encoded = len_len + st->size;
+        ASN__ENCODED_OK(er);
+    }
+}
+
+asn_dec_rval_t
+REAL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx,
+                const asn_TYPE_descriptor_t *td,
+                const asn_oer_constraints_t *constraints, void **sptr,
+                const void *ptr, size_t size) {
+    asn_dec_rval_t ok = {RC_OK, 0};
+    REAL_t *st;
+    uint8_t *buf;
+    ssize_t len_len;
+    size_t real_body_len;
+
+    (void)opt_codec_ctx;
+
+    if(!constraints) constraints = td->encoding_constraints.oer_constraints;
+    if(constraints && constraints->value.width != 0) {
+        /* If we're constrained to a narrow float/double representation, we
+         * shouldn't have ended up using REAL. Expecting NativeReal. */
+        ASN__DECODE_FAILED;
+    }
+
+    len_len = oer_fetch_length(ptr, size, &real_body_len);
+    if(len_len < 0) ASN__DECODE_FAILED;
+    if(len_len == 0) ASN__DECODE_STARVED;
+
+    ptr = (const char *)ptr + len_len;
+    size -= len_len;
+
+    if(real_body_len > size) ASN__DECODE_STARVED;
+
+    buf = CALLOC(1, real_body_len + 1);
+    if(!buf) ASN__DECODE_FAILED;
+
+    if(!(st = *sptr)) {
+        st = (*sptr = CALLOC(1, sizeof(REAL_t)));
+        if(!st) {
+            FREEMEM(buf);
+            ASN__DECODE_FAILED;
+        }
+    } else {
+        FREEMEM(st->buf);
+    }
+
+    memcpy(buf, ptr, real_body_len);
+    buf[real_body_len] = '\0';
+
+    st->buf = buf;
+    st->size = real_body_len;
+
+    ok.consumed = len_len + real_body_len;
+    return ok;
+}
+
+#endif  /* ASN_DISABLE_OER_SUPPORT */
+
+#ifndef ASN_DISABLE_PER_SUPPORT
+
+asn_dec_rval_t
+REAL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
+                 const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints, void **sptr,
+                 asn_per_data_t *pd) {
+    (void)constraints; /* No PER visible constraints */
+       return OCTET_STRING_decode_uper(opt_codec_ctx, td, 0, sptr, pd);
+}
+
+asn_enc_rval_t
+REAL_encode_uper(const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints, const void *sptr,
+                 asn_per_outp_t *po) {
+    (void)constraints; /* No PER visible constraints */
+       return OCTET_STRING_encode_uper(td, 0, sptr, po);
+}
+
+asn_dec_rval_t
+REAL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx,
+                 const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints,
+                 void **sptr, asn_per_data_t *pd) {
+       (void)constraints;      /* No PER visible constraints */
+       return OCTET_STRING_decode_aper(opt_codec_ctx, td, 0, sptr, pd);
+}
+
+asn_enc_rval_t
+REAL_encode_aper(const asn_TYPE_descriptor_t *td,
+                 const asn_per_constraints_t *constraints,
+                 const void *sptr, asn_per_outp_t *po) {
+       (void)constraints;      /* No PER visible constraints */
+       return OCTET_STRING_encode_aper(td, 0, sptr, po);
+}
+
+#endif  /* ASN_DISABLE_PER_SUPPORT */
+
+asn_random_fill_result_t
+REAL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr,
+                       const asn_encoding_constraints_t *constraints,
+                       size_t max_length) {
+    asn_random_fill_result_t result_ok = {ARFILL_OK, 1};
+    asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0};
+    asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0};
+    static const double values[] = {
+        0, -0.0, -1, 1, -M_E, M_E, -3.14, 3.14, -M_PI, M_PI, -255, 255,
+        /* 2^51 */
+        -2251799813685248.0, 2251799813685248.0,
+        /* 2^52 */
+        -4503599627370496.0, 4503599627370496.0,
+        /* 2^100 */
+        -1267650600228229401496703205376.0, 1267650600228229401496703205376.0,
+        -FLT_MIN, FLT_MIN,
+        -FLT_MAX, FLT_MAX,
+        -DBL_MIN, DBL_MIN,
+        -DBL_MAX, DBL_MAX,
+#ifdef  FLT_TRUE_MIN
+        -FLT_TRUE_MIN, FLT_TRUE_MIN,
+#endif
+#ifdef  DBL_TRUE_MIN
+        -DBL_TRUE_MIN, DBL_TRUE_MIN,
+#endif
+        INFINITY, -INFINITY, NAN};
+    REAL_t *st;
+    double d;
+
+    (void)constraints;
+
+    if(max_length == 0) return result_skipped;
+
+    d = values[asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1)];
+
+    if(*sptr) {
+        st = *sptr;
+    } else {
+        st = (REAL_t*)(*sptr = CALLOC(1, sizeof(REAL_t)));
+        if(!st) {
+            return result_failed;
+        }
+    }
+
+    if(asn_double2REAL(st, d)) {
+        if(st == *sptr) {
+            ASN_STRUCT_RESET(*td, st);
+        } else {
+            ASN_STRUCT_FREE(*td, st);
+        }
+        return result_failed;
+    }
+
+    result_ok.length = st->size;
+    return result_ok;
+}
+
diff --git a/src/codec_utils/E2SM_KPM/REAL.h b/src/codec_utils/E2SM_KPM/REAL.h
new file mode 100644 (file)
index 0000000..fce6714
--- /dev/null
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2004-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef        ASN_TYPE_REAL_H
+#define        ASN_TYPE_REAL_H
+
+#include <asn_application.h>
+#include <asn_codecs_prim.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef ASN__PRIMITIVE_TYPE_t REAL_t;
+
+extern asn_TYPE_descriptor_t asn_DEF_REAL;
+extern asn_TYPE_operation_t asn_OP_REAL;
+
+asn_struct_print_f REAL_print;
+asn_struct_compare_f REAL_compare;
+oer_type_decoder_f REAL_decode_oer;
+oer_type_encoder_f REAL_encode_oer;
+per_type_decoder_f REAL_decode_uper;
+per_type_encoder_f REAL_encode_uper;
+per_type_decoder_f REAL_decode_aper;
+per_type_encoder_f REAL_encode_aper;
+xer_type_decoder_f REAL_decode_xer;
+xer_type_encoder_f REAL_encode_xer;
+asn_random_fill_f  REAL_random_fill;
+
+#define REAL_free          ASN__PRIMITIVE_TYPE_free,
+#define REAL_constraint    asn_generic_no_constraint
+#define REAL_decode_ber    ber_decode_primitive
+#define REAL_encode_der    der_encode_primitive
+
+/***********************************
+ * Some handy conversion routines. *
+ ***********************************/
+
+ssize_t REAL__dump(double d, int canonical, asn_app_consume_bytes_f *cb, void *app_key);
+
+/*
+ * Convert between native double type and REAL representation (DER).
+ * RETURN VALUES:
+ *  0: Value converted successfully
+ * -1: An error occured while converting the value: invalid format.
+ */
+int asn_REAL2double(const REAL_t *real_ptr, double *d);
+int asn_double2REAL(REAL_t *real_ptr, double d);
+
+/*
+ * Downcast double to float while checking that no overflow occurs.
+ * This allows stricter control of the input data.
+ * RETURN VALUES:
+ *  0: The conversion was successful (perhaps with a loss of precision)
+ * -1: The conversion created overflow into infinities.
+ * The (outcome) is ALWAYS set to a value you'd expect from the
+ * standard silent float to double conversion behavior.
+ */
+int asn_double2float(double d, float *outcome);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ASN_TYPE_REAL_H */
diff --git a/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.c
new file mode 100644 (file)
index 0000000..7dae5be
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-EventTriggerStyle-Item.h"
+
+asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Style_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-EventTriggerStyle-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerStyle_Name),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Style_Name,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-EventTriggerStyle-Name"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_Item, ric_EventTriggerFormat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Format_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-EventTriggerFormat-Type"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1 = {
+       sizeof(struct RIC_EventTriggerStyle_Item),
+       offsetof(struct RIC_EventTriggerStyle_Item, _asn_ctx),
+       asn_MAP_RIC_EventTriggerStyle_Item_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item = {
+       "RIC-EventTriggerStyle-Item",
+       "RIC-EventTriggerStyle-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RIC_EventTriggerStyle_Item_tags_1,
+       sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
+               /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
+       asn_DEF_RIC_EventTriggerStyle_Item_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1)
+               /sizeof(asn_DEF_RIC_EventTriggerStyle_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RIC_EventTriggerStyle_Item_1,
+       3,      /* Elements count */
+       &asn_SPC_RIC_EventTriggerStyle_Item_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h b/src/codec_utils/E2SM_KPM/RIC-EventTriggerStyle-Item.h
new file mode 100644 (file)
index 0000000..fd2ea38
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RIC_EventTriggerStyle_Item_H_
+#define        _RIC_EventTriggerStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-EventTriggerStyle-Item */
+typedef struct RIC_EventTriggerStyle_Item {
+       RIC_Style_Type_t         ric_EventTriggerStyle_Type;
+       RIC_Style_Name_t         ric_EventTriggerStyle_Name;
+       RIC_Format_Type_t        ric_EventTriggerFormat_Type;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RIC_EventTriggerStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_Item_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_EventTriggerStyle_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RIC-Format-Type.c b/src/codec_utils/E2SM_KPM/RIC-Format-Type.c
new file mode 100644 (file)
index 0000000..b2d77ce
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Format-Type.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = {
+       "RIC-Format-Type",
+       "RIC-Format-Type",
+       &asn_OP_NativeInteger,
+       asn_DEF_RIC_Format_Type_tags_1,
+       sizeof(asn_DEF_RIC_Format_Type_tags_1)
+               /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */
+       asn_DEF_RIC_Format_Type_tags_1, /* Same as above */
+       sizeof(asn_DEF_RIC_Format_Type_tags_1)
+               /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */
+       { 0, 0, NativeInteger_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RIC-Format-Type.h b/src/codec_utils/E2SM_KPM/RIC-Format-Type.h
new file mode 100644 (file)
index 0000000..f0f5024
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RIC_Format_Type_H_
+#define        _RIC_Format_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Format-Type */
+typedef long    RIC_Format_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type;
+asn_struct_free_f RIC_Format_Type_free;
+asn_struct_print_f RIC_Format_Type_print;
+asn_constr_check_f RIC_Format_Type_constraint;
+ber_type_decoder_f RIC_Format_Type_decode_ber;
+der_type_encoder_f RIC_Format_Type_encode_der;
+xer_type_decoder_f RIC_Format_Type_decode_xer;
+xer_type_encoder_f RIC_Format_Type_encode_xer;
+oer_type_decoder_f RIC_Format_Type_decode_oer;
+oer_type_encoder_f RIC_Format_Type_encode_oer;
+per_type_decoder_f RIC_Format_Type_decode_uper;
+per_type_encoder_f RIC_Format_Type_encode_uper;
+per_type_decoder_f RIC_Format_Type_decode_aper;
+per_type_encoder_f RIC_Format_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Format_Type_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.c
new file mode 100644 (file)
index 0000000..e634940
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-ReportStyle-Item.h"
+
+asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Style_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-ReportStyle-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ReportStyle_Name),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Style_Name,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-ReportStyle-Name"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_ActionFormat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Format_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-ActionFormat-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, measInfo_Action_List),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementInfo_Action_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measInfo-Action-List"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationHeaderFormat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Format_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-IndicationHeaderFormat-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_Item, ric_IndicationMessageFormat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RIC_Format_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ric-IndicationMessageFormat-Type"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ActionFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* measInfo-Action-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1 = {
+       sizeof(struct RIC_ReportStyle_Item),
+       offsetof(struct RIC_ReportStyle_Item, _asn_ctx),
+       asn_MAP_RIC_ReportStyle_Item_tag2el_1,
+       6,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item = {
+       "RIC-ReportStyle-Item",
+       "RIC-ReportStyle-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RIC_ReportStyle_Item_tags_1,
+       sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
+               /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
+       asn_DEF_RIC_ReportStyle_Item_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1)
+               /sizeof(asn_DEF_RIC_ReportStyle_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RIC_ReportStyle_Item_1,
+       6,      /* Elements count */
+       &asn_SPC_RIC_ReportStyle_Item_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h b/src/codec_utils/E2SM_KPM/RIC-ReportStyle-Item.h
new file mode 100644 (file)
index 0000000..78ab828
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RIC_ReportStyle_Item_H_
+#define        _RIC_ReportStyle_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RIC-Style-Type.h"
+#include "RIC-Style-Name.h"
+#include "RIC-Format-Type.h"
+#include "MeasurementInfo-Action-List.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-ReportStyle-Item */
+typedef struct RIC_ReportStyle_Item {
+       RIC_Style_Type_t         ric_ReportStyle_Type;
+       RIC_Style_Name_t         ric_ReportStyle_Name;
+       RIC_Format_Type_t        ric_ActionFormat_Type;
+       MeasurementInfo_Action_List_t    measInfo_Action_List;
+       RIC_Format_Type_t        ric_IndicationHeaderFormat_Type;
+       RIC_Format_Type_t        ric_IndicationMessageFormat_Type;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RIC_ReportStyle_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_Item_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_ReportStyle_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Name.c b/src/codec_utils/E2SM_KPM/RIC-Style-Name.c
new file mode 100644 (file)
index 0000000..cf2ba8d
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Style-Name.h"
+
+static const int permitted_alphabet_table_1[256] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,       /*                  */
+ 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9,       /* .      '() +,-./ */
+10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22,       /* 0123456789:  = ? */
+ 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,       /*  ABCDEFGHIJKLMNO */
+38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0,       /* PQRSTUVWXYZ      */
+ 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,       /*  abcdefghijklmno */
+64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0,       /* pqrstuvwxyz      */
+};
+static const int permitted_alphabet_code2value_1[74] = {
+32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,
+55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74,
+75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,
+97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
+113,114,115,116,117,118,119,120,121,122,};
+
+
+static int check_permitted_alphabet_1(const void *sptr) {
+       const int *table = permitted_alphabet_table_1;
+       /* The underlying type is PrintableString */
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       const uint8_t *ch = st->buf;
+       const uint8_t *end = ch + st->size;
+       
+       for(; ch < end; ch++) {
+               uint8_t cv = *ch;
+               if(!table[cv]) return -1;
+       }
+       return 0;
+}
+
+int
+RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const PrintableString_t *st = (const PrintableString_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size >= 1 && size <= 150)
+                && !check_permitted_alphabet_1(st)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+static int asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) {
+       if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0]))
+               return -1;
+       return permitted_alphabet_table_1[value] - 1;
+}
+static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) {
+       if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0]))
+               return -1;
+       return permitted_alphabet_code2value_1[code];
+}
+/*
+ * This type is implemented using PrintableString,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RIC_Style_Name_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  32,  122 }     /* (32..122) */,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  8,  8,  1,  150 }  /* (SIZE(1..150,...)) */,
+       asn_PER_MAP_RIC_Style_Name_1_v2c,       /* Value to PER code map */
+       asn_PER_MAP_RIC_Style_Name_1_c2v        /* PER code to value map */
+};
+static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (19 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = {
+       "RIC-Style-Name",
+       "RIC-Style-Name",
+       &asn_OP_PrintableString,
+       asn_DEF_RIC_Style_Name_tags_1,
+       sizeof(asn_DEF_RIC_Style_Name_tags_1)
+               /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */
+       asn_DEF_RIC_Style_Name_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RIC_Style_Name_tags_1)
+               /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */
+       { &asn_OER_type_RIC_Style_Name_constr_1, &asn_PER_type_RIC_Style_Name_constr_1, RIC_Style_Name_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Name.h b/src/codec_utils/E2SM_KPM/RIC-Style-Name.h
new file mode 100644 (file)
index 0000000..f0f3c19
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RIC_Style_Name_H_
+#define        _RIC_Style_Name_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <PrintableString.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Name */
+typedef PrintableString_t       RIC_Style_Name_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name;
+asn_struct_free_f RIC_Style_Name_free;
+asn_struct_print_f RIC_Style_Name_print;
+asn_constr_check_f RIC_Style_Name_constraint;
+ber_type_decoder_f RIC_Style_Name_decode_ber;
+der_type_encoder_f RIC_Style_Name_encode_der;
+xer_type_decoder_f RIC_Style_Name_decode_xer;
+xer_type_encoder_f RIC_Style_Name_encode_xer;
+oer_type_decoder_f RIC_Style_Name_decode_oer;
+oer_type_encoder_f RIC_Style_Name_encode_oer;
+per_type_decoder_f RIC_Style_Name_decode_uper;
+per_type_encoder_f RIC_Style_Name_encode_uper;
+per_type_decoder_f RIC_Style_Name_decode_aper;
+per_type_encoder_f RIC_Style_Name_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Style_Name_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Type.c b/src/codec_utils/E2SM_KPM/RIC-Style-Type.c
new file mode 100644 (file)
index 0000000..474b77d
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RIC-Style-Type.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = {
+       "RIC-Style-Type",
+       "RIC-Style-Type",
+       &asn_OP_NativeInteger,
+       asn_DEF_RIC_Style_Type_tags_1,
+       sizeof(asn_DEF_RIC_Style_Type_tags_1)
+               /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */
+       asn_DEF_RIC_Style_Type_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RIC_Style_Type_tags_1)
+               /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */
+       { 0, 0, NativeInteger_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/RIC-Style-Type.h b/src/codec_utils/E2SM_KPM/RIC-Style-Type.h
new file mode 100644 (file)
index 0000000..358bf36
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RIC_Style_Type_H_
+#define        _RIC_Style_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RIC-Style-Type */
+typedef long    RIC_Style_Type_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type;
+asn_struct_free_f RIC_Style_Type_free;
+asn_struct_print_f RIC_Style_Type_print;
+asn_constr_check_f RIC_Style_Type_constraint;
+ber_type_decoder_f RIC_Style_Type_decode_ber;
+der_type_encoder_f RIC_Style_Type_encode_der;
+xer_type_decoder_f RIC_Style_Type_decode_xer;
+xer_type_encoder_f RIC_Style_Type_encode_xer;
+oer_type_decoder_f RIC_Style_Type_decode_oer;
+oer_type_encoder_f RIC_Style_Type_encode_oer;
+per_type_decoder_f RIC_Style_Type_decode_uper;
+per_type_encoder_f RIC_Style_Type_encode_uper;
+per_type_decoder_f RIC_Style_Type_decode_aper;
+per_type_encoder_f RIC_Style_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RIC_Style_Type_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/S-NSSAI.c b/src/codec_utils/E2SM_KPM/S-NSSAI.c
new file mode 100644 (file)
index 0000000..4528744
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "S-NSSAI.h"
+
+asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, sST),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SST,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sST"
+               },
+       { ATF_POINTER, 1, offsetof(struct S_NSSAI, sD),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SD,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sD"
+               },
+};
+static const int asn_MAP_S_NSSAI_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_S_NSSAI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_S_NSSAI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sST */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sD */
+};
+asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1 = {
+       sizeof(struct S_NSSAI),
+       offsetof(struct S_NSSAI, _asn_ctx),
+       asn_MAP_S_NSSAI_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_S_NSSAI_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_S_NSSAI = {
+       "S-NSSAI",
+       "S-NSSAI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_S_NSSAI_tags_1,
+       sizeof(asn_DEF_S_NSSAI_tags_1)
+               /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */
+       asn_DEF_S_NSSAI_tags_1, /* Same as above */
+       sizeof(asn_DEF_S_NSSAI_tags_1)
+               /sizeof(asn_DEF_S_NSSAI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_S_NSSAI_1,
+       2,      /* Elements count */
+       &asn_SPC_S_NSSAI_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/S-NSSAI.h b/src/codec_utils/E2SM_KPM/S-NSSAI.h
new file mode 100644 (file)
index 0000000..bcfe3cf
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _S_NSSAI_H_
+#define        _S_NSSAI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SST.h"
+#include "SD.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* S-NSSAI */
+typedef struct S_NSSAI {
+       SST_t    sST;
+       SD_t    *sD;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} S_NSSAI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_S_NSSAI;
+extern asn_SEQUENCE_specifics_t asn_SPC_S_NSSAI_specs_1;
+extern asn_TYPE_member_t asn_MBR_S_NSSAI_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _S_NSSAI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/SD.c b/src/codec_utils/E2SM_KPM/SD.c
new file mode 100644 (file)
index 0000000..05295bd
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SD.h"
+
+int
+SD_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 3)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SD_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_SD_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SD_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SD = {
+       "SD",
+       "SD",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_SD_tags_1,
+       sizeof(asn_DEF_SD_tags_1)
+               /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+       asn_DEF_SD_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SD_tags_1)
+               /sizeof(asn_DEF_SD_tags_1[0]), /* 1 */
+       { &asn_OER_type_SD_constr_1, &asn_PER_type_SD_constr_1, SD_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/SD.h b/src/codec_utils/E2SM_KPM/SD.h
new file mode 100644 (file)
index 0000000..9016dd6
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SD_H_
+#define        _SD_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SD */
+typedef OCTET_STRING_t  SD_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SD_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SD;
+asn_struct_free_f SD_free;
+asn_struct_print_f SD_print;
+asn_constr_check_f SD_constraint;
+ber_type_decoder_f SD_decode_ber;
+der_type_encoder_f SD_encode_der;
+xer_type_decoder_f SD_decode_xer;
+xer_type_encoder_f SD_encode_xer;
+oer_type_decoder_f SD_decode_oer;
+oer_type_encoder_f SD_encode_oer;
+per_type_decoder_f SD_decode_uper;
+per_type_encoder_f SD_encode_uper;
+per_type_decoder_f SD_decode_aper;
+per_type_encoder_f SD_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SD_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/SST.c b/src/codec_utils/E2SM_KPM/SST.c
new file mode 100644 (file)
index 0000000..cbc609f
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SST.h"
+
+int
+SST_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 1)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SST_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+asn_per_constraints_t asn_PER_type_SST_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SST_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SST = {
+       "SST",
+       "SST",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_SST_tags_1,
+       sizeof(asn_DEF_SST_tags_1)
+               /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+       asn_DEF_SST_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SST_tags_1)
+               /sizeof(asn_DEF_SST_tags_1[0]), /* 1 */
+       { &asn_OER_type_SST_constr_1, &asn_PER_type_SST_constr_1, SST_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/SST.h b/src/codec_utils/E2SM_KPM/SST.h
new file mode 100644 (file)
index 0000000..251cdf7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SST_H_
+#define        _SST_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SST */
+typedef OCTET_STRING_t  SST_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SST_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SST;
+asn_struct_free_f SST_free;
+asn_struct_print_f SST_print;
+asn_constr_check_f SST_constraint;
+ber_type_decoder_f SST_decode_ber;
+der_type_encoder_f SST_encode_der;
+xer_type_decoder_f SST_decode_xer;
+xer_type_encoder_f SST_encode_xer;
+oer_type_decoder_f SST_decode_oer;
+oer_type_encoder_f SST_encode_oer;
+per_type_decoder_f SST_decode_uper;
+per_type_encoder_f SST_encode_uper;
+per_type_decoder_f SST_decode_aper;
+per_type_encoder_f SST_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SST_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Expression.c b/src/codec_utils/E2SM_KPM/TestCond-Expression.c
new file mode 100644 (file)
index 0000000..a83c4e6
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Expression.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TestCond_Expression_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  4 }    /* (0..4,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TestCond_Expression_value2enum_1[] = {
+       { 0,    5,      "equal" },
+       { 1,    11,     "greaterthan" },
+       { 2,    8,      "lessthan" },
+       { 3,    8,      "contains" },
+       { 4,    7,      "present" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_TestCond_Expression_enum2value_1[] = {
+       3,      /* contains(3) */
+       0,      /* equal(0) */
+       1,      /* greaterthan(1) */
+       2,      /* lessthan(2) */
+       4       /* present(4) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1 = {
+       asn_MAP_TestCond_Expression_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_TestCond_Expression_enum2value_1,       /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       6,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_TestCond_Expression_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Expression = {
+       "TestCond-Expression",
+       "TestCond-Expression",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_TestCond_Expression_tags_1,
+       sizeof(asn_DEF_TestCond_Expression_tags_1)
+               /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */
+       asn_DEF_TestCond_Expression_tags_1,     /* Same as above */
+       sizeof(asn_DEF_TestCond_Expression_tags_1)
+               /sizeof(asn_DEF_TestCond_Expression_tags_1[0]), /* 1 */
+       { &asn_OER_type_TestCond_Expression_constr_1, &asn_PER_type_TestCond_Expression_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_TestCond_Expression_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Expression.h b/src/codec_utils/E2SM_KPM/TestCond-Expression.h
new file mode 100644 (file)
index 0000000..9eebd84
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TestCond_Expression_H_
+#define        _TestCond_Expression_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Expression {
+       TestCond_Expression_equal       = 0,
+       TestCond_Expression_greaterthan = 1,
+       TestCond_Expression_lessthan    = 2,
+       TestCond_Expression_contains    = 3,
+       TestCond_Expression_present     = 4
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Expression;
+
+/* TestCond-Expression */
+typedef long    TestCond_Expression_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TestCond_Expression_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Expression;
+extern const asn_INTEGER_specifics_t asn_SPC_TestCond_Expression_specs_1;
+asn_struct_free_f TestCond_Expression_free;
+asn_struct_print_f TestCond_Expression_print;
+asn_constr_check_f TestCond_Expression_constraint;
+ber_type_decoder_f TestCond_Expression_decode_ber;
+der_type_encoder_f TestCond_Expression_encode_der;
+xer_type_decoder_f TestCond_Expression_decode_xer;
+xer_type_encoder_f TestCond_Expression_encode_xer;
+oer_type_decoder_f TestCond_Expression_decode_oer;
+oer_type_encoder_f TestCond_Expression_encode_oer;
+per_type_decoder_f TestCond_Expression_decode_uper;
+per_type_encoder_f TestCond_Expression_encode_uper;
+per_type_decoder_f TestCond_Expression_decode_aper;
+per_type_encoder_f TestCond_Expression_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Expression_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Type.c b/src/codec_utils/E2SM_KPM/TestCond-Type.c
new file mode 100644 (file)
index 0000000..dfeb765
--- /dev/null
@@ -0,0 +1,694 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Type.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_gBR_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gBR_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aMBR_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aMBR_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_isStat_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_isStat_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_isCatM_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_isCatM_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rSRP_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rSRP_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rSRQ_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rSRQ_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ul_rSRP_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ul_rSRP_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cQI_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cQI_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_fiveQI_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fiveQI_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_qCI_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_qCI_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sNSSAI_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sNSSAI_constr_33 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  0,  0,  0,  0 }    /* (0..0,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_TestCond_Type_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  5 }    /* (0..5,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_gBR_value2enum_2[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_gBR_enum2value_2[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_gBR_specs_2 = {
+       asn_MAP_gBR_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_gBR_enum2value_2,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_gBR_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gBR_2 = {
+       "gBR",
+       "gBR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_gBR_tags_2,
+       sizeof(asn_DEF_gBR_tags_2)
+               /sizeof(asn_DEF_gBR_tags_2[0]) - 1, /* 1 */
+       asn_DEF_gBR_tags_2,     /* Same as above */
+       sizeof(asn_DEF_gBR_tags_2)
+               /sizeof(asn_DEF_gBR_tags_2[0]), /* 2 */
+       { &asn_OER_type_gBR_constr_2, &asn_PER_type_gBR_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_gBR_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aMBR_value2enum_5[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_aMBR_enum2value_5[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aMBR_specs_5 = {
+       asn_MAP_aMBR_value2enum_5,      /* "tag" => N; sorted by tag */
+       asn_MAP_aMBR_enum2value_5,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aMBR_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aMBR_5 = {
+       "aMBR",
+       "aMBR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aMBR_tags_5,
+       sizeof(asn_DEF_aMBR_tags_5)
+               /sizeof(asn_DEF_aMBR_tags_5[0]) - 1, /* 1 */
+       asn_DEF_aMBR_tags_5,    /* Same as above */
+       sizeof(asn_DEF_aMBR_tags_5)
+               /sizeof(asn_DEF_aMBR_tags_5[0]), /* 2 */
+       { &asn_OER_type_aMBR_constr_5, &asn_PER_type_aMBR_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aMBR_specs_5   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_isStat_value2enum_8[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_isStat_enum2value_8[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_isStat_specs_8 = {
+       asn_MAP_isStat_value2enum_8,    /* "tag" => N; sorted by tag */
+       asn_MAP_isStat_enum2value_8,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_isStat_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_isStat_8 = {
+       "isStat",
+       "isStat",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_isStat_tags_8,
+       sizeof(asn_DEF_isStat_tags_8)
+               /sizeof(asn_DEF_isStat_tags_8[0]) - 1, /* 1 */
+       asn_DEF_isStat_tags_8,  /* Same as above */
+       sizeof(asn_DEF_isStat_tags_8)
+               /sizeof(asn_DEF_isStat_tags_8[0]), /* 2 */
+       { &asn_OER_type_isStat_constr_8, &asn_PER_type_isStat_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_isStat_specs_8 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_isCatM_value2enum_11[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_isCatM_enum2value_11[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_isCatM_specs_11 = {
+       asn_MAP_isCatM_value2enum_11,   /* "tag" => N; sorted by tag */
+       asn_MAP_isCatM_enum2value_11,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_isCatM_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_isCatM_11 = {
+       "isCatM",
+       "isCatM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_isCatM_tags_11,
+       sizeof(asn_DEF_isCatM_tags_11)
+               /sizeof(asn_DEF_isCatM_tags_11[0]) - 1, /* 1 */
+       asn_DEF_isCatM_tags_11, /* Same as above */
+       sizeof(asn_DEF_isCatM_tags_11)
+               /sizeof(asn_DEF_isCatM_tags_11[0]), /* 2 */
+       { &asn_OER_type_isCatM_constr_11, &asn_PER_type_isCatM_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_isCatM_specs_11        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rSRP_value2enum_14[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_rSRP_enum2value_14[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rSRP_specs_14 = {
+       asn_MAP_rSRP_value2enum_14,     /* "tag" => N; sorted by tag */
+       asn_MAP_rSRP_enum2value_14,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rSRP_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rSRP_14 = {
+       "rSRP",
+       "rSRP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rSRP_tags_14,
+       sizeof(asn_DEF_rSRP_tags_14)
+               /sizeof(asn_DEF_rSRP_tags_14[0]) - 1, /* 1 */
+       asn_DEF_rSRP_tags_14,   /* Same as above */
+       sizeof(asn_DEF_rSRP_tags_14)
+               /sizeof(asn_DEF_rSRP_tags_14[0]), /* 2 */
+       { &asn_OER_type_rSRP_constr_14, &asn_PER_type_rSRP_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rSRP_specs_14  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rSRQ_value2enum_17[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_rSRQ_enum2value_17[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rSRQ_specs_17 = {
+       asn_MAP_rSRQ_value2enum_17,     /* "tag" => N; sorted by tag */
+       asn_MAP_rSRQ_enum2value_17,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rSRQ_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rSRQ_17 = {
+       "rSRQ",
+       "rSRQ",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rSRQ_tags_17,
+       sizeof(asn_DEF_rSRQ_tags_17)
+               /sizeof(asn_DEF_rSRQ_tags_17[0]) - 1, /* 1 */
+       asn_DEF_rSRQ_tags_17,   /* Same as above */
+       sizeof(asn_DEF_rSRQ_tags_17)
+               /sizeof(asn_DEF_rSRQ_tags_17[0]), /* 2 */
+       { &asn_OER_type_rSRQ_constr_17, &asn_PER_type_rSRQ_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rSRQ_specs_17  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ul_rSRP_value2enum_21[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_ul_rSRP_enum2value_21[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ul_rSRP_specs_21 = {
+       asn_MAP_ul_rSRP_value2enum_21,  /* "tag" => N; sorted by tag */
+       asn_MAP_ul_rSRP_enum2value_21,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ul_rSRP_tags_21[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21 = {
+       "ul-rSRP",
+       "ul-rSRP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ul_rSRP_tags_21,
+       sizeof(asn_DEF_ul_rSRP_tags_21)
+               /sizeof(asn_DEF_ul_rSRP_tags_21[0]) - 1, /* 1 */
+       asn_DEF_ul_rSRP_tags_21,        /* Same as above */
+       sizeof(asn_DEF_ul_rSRP_tags_21)
+               /sizeof(asn_DEF_ul_rSRP_tags_21[0]), /* 2 */
+       { &asn_OER_type_ul_rSRP_constr_21, &asn_PER_type_ul_rSRP_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ul_rSRP_specs_21       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cQI_value2enum_24[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_cQI_enum2value_24[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cQI_specs_24 = {
+       asn_MAP_cQI_value2enum_24,      /* "tag" => N; sorted by tag */
+       asn_MAP_cQI_enum2value_24,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cQI_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cQI_24 = {
+       "cQI",
+       "cQI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cQI_tags_24,
+       sizeof(asn_DEF_cQI_tags_24)
+               /sizeof(asn_DEF_cQI_tags_24[0]) - 1, /* 1 */
+       asn_DEF_cQI_tags_24,    /* Same as above */
+       sizeof(asn_DEF_cQI_tags_24)
+               /sizeof(asn_DEF_cQI_tags_24[0]), /* 2 */
+       { &asn_OER_type_cQI_constr_24, &asn_PER_type_cQI_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cQI_specs_24   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_fiveQI_value2enum_27[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_fiveQI_enum2value_27[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fiveQI_specs_27 = {
+       asn_MAP_fiveQI_value2enum_27,   /* "tag" => N; sorted by tag */
+       asn_MAP_fiveQI_enum2value_27,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fiveQI_tags_27[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fiveQI_27 = {
+       "fiveQI",
+       "fiveQI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fiveQI_tags_27,
+       sizeof(asn_DEF_fiveQI_tags_27)
+               /sizeof(asn_DEF_fiveQI_tags_27[0]) - 1, /* 1 */
+       asn_DEF_fiveQI_tags_27, /* Same as above */
+       sizeof(asn_DEF_fiveQI_tags_27)
+               /sizeof(asn_DEF_fiveQI_tags_27[0]), /* 2 */
+       { &asn_OER_type_fiveQI_constr_27, &asn_PER_type_fiveQI_constr_27, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fiveQI_specs_27        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_qCI_value2enum_30[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_qCI_enum2value_30[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_qCI_specs_30 = {
+       asn_MAP_qCI_value2enum_30,      /* "tag" => N; sorted by tag */
+       asn_MAP_qCI_enum2value_30,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_qCI_tags_30[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_qCI_30 = {
+       "qCI",
+       "qCI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_qCI_tags_30,
+       sizeof(asn_DEF_qCI_tags_30)
+               /sizeof(asn_DEF_qCI_tags_30[0]) - 1, /* 1 */
+       asn_DEF_qCI_tags_30,    /* Same as above */
+       sizeof(asn_DEF_qCI_tags_30)
+               /sizeof(asn_DEF_qCI_tags_30[0]), /* 2 */
+       { &asn_OER_type_qCI_constr_30, &asn_PER_type_qCI_constr_30, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_qCI_specs_30   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sNSSAI_value2enum_33[] = {
+       { 0,    4,      "true" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_sNSSAI_enum2value_33[] = {
+       0       /* true(0) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sNSSAI_specs_33 = {
+       asn_MAP_sNSSAI_value2enum_33,   /* "tag" => N; sorted by tag */
+       asn_MAP_sNSSAI_enum2value_33,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       2,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sNSSAI_tags_33[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sNSSAI_33 = {
+       "sNSSAI",
+       "sNSSAI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sNSSAI_tags_33,
+       sizeof(asn_DEF_sNSSAI_tags_33)
+               /sizeof(asn_DEF_sNSSAI_tags_33[0]) - 1, /* 1 */
+       asn_DEF_sNSSAI_tags_33, /* Same as above */
+       sizeof(asn_DEF_sNSSAI_tags_33)
+               /sizeof(asn_DEF_sNSSAI_tags_33[0]), /* 2 */
+       { &asn_OER_type_sNSSAI_constr_33, &asn_PER_type_sNSSAI_constr_33, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sNSSAI_specs_33        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TestCond_Type_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.gBR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_gBR_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gBR"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.aMBR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aMBR_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aMBR"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isStat),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_isStat_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "isStat"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.isCatM),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_isCatM_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "isCatM"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRP),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rSRP_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.rSRQ),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rSRQ_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rSRQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.ul_rSRP),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ul_rSRP_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-rSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.cQI),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cQI_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cQI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.fiveQI),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fiveQI_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fiveQI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.qCI),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_qCI_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qCI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Type, choice.sNSSAI),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sNSSAI_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sNSSAI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCond_Type_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gBR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aMBR */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* isStat */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* isCatM */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rSRQ */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ul-rSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* cQI */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* fiveQI */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* qCI */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* sNSSAI */
+};
+asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1 = {
+       sizeof(struct TestCond_Type),
+       offsetof(struct TestCond_Type, _asn_ctx),
+       offsetof(struct TestCond_Type, present),
+       sizeof(((struct TestCond_Type *)0)->present),
+       asn_MAP_TestCond_Type_tag2el_1,
+       11,     /* Count of tags in the map */
+       0, 0,
+       6       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Type = {
+       "TestCond-Type",
+       "TestCond-Type",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_TestCond_Type_constr_1, &asn_PER_type_TestCond_Type_constr_1, CHOICE_constraint },
+       asn_MBR_TestCond_Type_1,
+       11,     /* Elements count */
+       &asn_SPC_TestCond_Type_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Type.h b/src/codec_utils/E2SM_KPM/TestCond-Type.h
new file mode 100644 (file)
index 0000000..e5f2c06
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TestCond_Type_H_
+#define        _TestCond_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Type_PR {
+       TestCond_Type_PR_NOTHING,       /* No components present */
+       TestCond_Type_PR_gBR,
+       TestCond_Type_PR_aMBR,
+       TestCond_Type_PR_isStat,
+       TestCond_Type_PR_isCatM,
+       TestCond_Type_PR_rSRP,
+       TestCond_Type_PR_rSRQ,
+       /* Extensions may appear below */
+       TestCond_Type_PR_ul_rSRP,
+       TestCond_Type_PR_cQI,
+       TestCond_Type_PR_fiveQI,
+       TestCond_Type_PR_qCI,
+       TestCond_Type_PR_sNSSAI
+} TestCond_Type_PR;
+typedef enum TestCond_Type__gBR {
+       TestCond_Type__gBR_true = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__gBR;
+typedef enum TestCond_Type__aMBR {
+       TestCond_Type__aMBR_true        = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__aMBR;
+typedef enum TestCond_Type__isStat {
+       TestCond_Type__isStat_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__isStat;
+typedef enum TestCond_Type__isCatM {
+       TestCond_Type__isCatM_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__isCatM;
+typedef enum TestCond_Type__rSRP {
+       TestCond_Type__rSRP_true        = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__rSRP;
+typedef enum TestCond_Type__rSRQ {
+       TestCond_Type__rSRQ_true        = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__rSRQ;
+typedef enum TestCond_Type__ul_rSRP {
+       TestCond_Type__ul_rSRP_true     = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__ul_rSRP;
+typedef enum TestCond_Type__cQI {
+       TestCond_Type__cQI_true = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__cQI;
+typedef enum TestCond_Type__fiveQI {
+       TestCond_Type__fiveQI_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__fiveQI;
+typedef enum TestCond_Type__qCI {
+       TestCond_Type__qCI_true = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__qCI;
+typedef enum TestCond_Type__sNSSAI {
+       TestCond_Type__sNSSAI_true      = 0
+       /*
+        * Enumeration is extensible
+        */
+} e_TestCond_Type__sNSSAI;
+
+/* TestCond-Type */
+typedef struct TestCond_Type {
+       TestCond_Type_PR present;
+       union TestCond_Type_u {
+               long     gBR;
+               long     aMBR;
+               long     isStat;
+               long     isCatM;
+               long     rSRP;
+               long     rSRQ;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               long     ul_rSRP;
+               long     cQI;
+               long     fiveQI;
+               long     qCI;
+               long     sNSSAI;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TestCond_Type_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_gBR_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aMBR_5;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_isStat_8;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_isCatM_11;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rSRP_14;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rSRQ_17;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ul_rSRP_21;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cQI_24;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_fiveQI_27;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_qCI_30;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sNSSAI_33;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Type;
+extern asn_CHOICE_specifics_t asn_SPC_TestCond_Type_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCond_Type_1[11];
+extern asn_per_constraints_t asn_PER_type_TestCond_Type_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Type_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Value.c b/src/codec_utils/E2SM_KPM/TestCond-Value.c
new file mode 100644 (file)
index 0000000..15bd186
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCond-Value.h"
+
+static asn_oer_constraints_t asn_OER_type_TestCond_Value_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  5 }    /* (0..5,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_TestCond_Value_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueInt),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueInt"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueEnum),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueEnum"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBool),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueBool"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueBitS),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueBitS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueOctS),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueOctS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valuePrtS),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PrintableString,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valuePrtS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TestCond_Value, choice.valueReal),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeReal,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "valueReal"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCond_Value_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* valuePrtS */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* valueReal */
+};
+asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1 = {
+       sizeof(struct TestCond_Value),
+       offsetof(struct TestCond_Value, _asn_ctx),
+       offsetof(struct TestCond_Value, present),
+       sizeof(((struct TestCond_Value *)0)->present),
+       asn_MAP_TestCond_Value_tag2el_1,
+       7,      /* Count of tags in the map */
+       0, 0,
+       6       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCond_Value = {
+       "TestCond-Value",
+       "TestCond-Value",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_TestCond_Value_constr_1, &asn_PER_type_TestCond_Value_constr_1, CHOICE_constraint },
+       asn_MBR_TestCond_Value_1,
+       7,      /* Elements count */
+       &asn_SPC_TestCond_Value_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/TestCond-Value.h b/src/codec_utils/E2SM_KPM/TestCond-Value.h
new file mode 100644 (file)
index 0000000..0320af3
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TestCond_Value_H_
+#define        _TestCond_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <BIT_STRING.h>
+#include <OCTET_STRING.h>
+#include <PrintableString.h>
+#include <NativeReal.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TestCond_Value_PR {
+       TestCond_Value_PR_NOTHING,      /* No components present */
+       TestCond_Value_PR_valueInt,
+       TestCond_Value_PR_valueEnum,
+       TestCond_Value_PR_valueBool,
+       TestCond_Value_PR_valueBitS,
+       TestCond_Value_PR_valueOctS,
+       TestCond_Value_PR_valuePrtS,
+       /* Extensions may appear below */
+       TestCond_Value_PR_valueReal
+} TestCond_Value_PR;
+
+/* TestCond-Value */
+typedef struct TestCond_Value {
+       TestCond_Value_PR present;
+       union TestCond_Value_u {
+               long     valueInt;
+               long     valueEnum;
+               BOOLEAN_t        valueBool;
+               BIT_STRING_t     valueBitS;
+               OCTET_STRING_t   valueOctS;
+               PrintableString_t        valuePrtS;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               double   valueReal;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TestCond_Value_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TestCond_Value;
+extern asn_CHOICE_specifics_t asn_SPC_TestCond_Value_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCond_Value_1[7];
+extern asn_per_constraints_t asn_PER_type_TestCond_Value_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCond_Value_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/TestCondInfo.c b/src/codec_utils/E2SM_KPM/TestCondInfo.c
new file mode 100644 (file)
index 0000000..e0527dd
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TestCondInfo.h"
+
+#include "TestCond-Value.h"
+asn_TYPE_member_t asn_MBR_TestCondInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TestCondInfo, testType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_TestCond_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "testType"
+               },
+       { ATF_POINTER, 2, offsetof(struct TestCondInfo, testExpr),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TestCond_Expression,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "testExpr"
+               },
+       { ATF_POINTER, 1, offsetof(struct TestCondInfo, testValue),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_TestCond_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "testValue"
+               },
+};
+static const int asn_MAP_TestCondInfo_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_TestCondInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TestCondInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* testType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* testExpr */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* testValue */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1 = {
+       sizeof(struct TestCondInfo),
+       offsetof(struct TestCondInfo, _asn_ctx),
+       asn_MAP_TestCondInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_TestCondInfo_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TestCondInfo = {
+       "TestCondInfo",
+       "TestCondInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TestCondInfo_tags_1,
+       sizeof(asn_DEF_TestCondInfo_tags_1)
+               /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */
+       asn_DEF_TestCondInfo_tags_1,    /* Same as above */
+       sizeof(asn_DEF_TestCondInfo_tags_1)
+               /sizeof(asn_DEF_TestCondInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TestCondInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_TestCondInfo_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/TestCondInfo.h b/src/codec_utils/E2SM_KPM/TestCondInfo.h
new file mode 100644 (file)
index 0000000..a191a89
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TestCondInfo_H_
+#define        _TestCondInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TestCond-Type.h"
+#include "TestCond-Expression.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct TestCond_Value;
+
+/* TestCondInfo */
+typedef struct TestCondInfo {
+       TestCond_Type_t  testType;
+       TestCond_Expression_t   *testExpr;      /* OPTIONAL */
+       struct TestCond_Value   *testValue;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TestCondInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TestCondInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_TestCondInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_TestCondInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TestCondInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/TimeStamp.c b/src/codec_utils/E2SM_KPM/TimeStamp.c
new file mode 100644 (file)
index 0000000..d1f9d95
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TimeStamp.h"
+
+int
+TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr,
+                       asn_app_constraint_failed_f *ctfailcb, void *app_key) {
+       const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
+       size_t size;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       size = st->size;
+       
+       if((size == 8)) {
+               /* Constraint check succeeded */
+               return 0;
+       } else {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: constraint failed (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+}
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TimeStamp_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TimeStamp = {
+       "TimeStamp",
+       "TimeStamp",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_TimeStamp_tags_1,
+       sizeof(asn_DEF_TimeStamp_tags_1)
+               /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
+       asn_DEF_TimeStamp_tags_1,       /* Same as above */
+       sizeof(asn_DEF_TimeStamp_tags_1)
+               /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */
+       { &asn_OER_type_TimeStamp_constr_1, &asn_PER_type_TimeStamp_constr_1, TimeStamp_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/TimeStamp.h b/src/codec_utils/E2SM_KPM/TimeStamp.h
new file mode 100644 (file)
index 0000000..c068b60
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TimeStamp_H_
+#define        _TimeStamp_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TimeStamp */
+typedef OCTET_STRING_t  TimeStamp_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TimeStamp;
+asn_struct_free_f TimeStamp_free;
+asn_struct_print_f TimeStamp_print;
+asn_constr_check_f TimeStamp_constraint;
+ber_type_decoder_f TimeStamp_decode_ber;
+der_type_encoder_f TimeStamp_encode_der;
+xer_type_decoder_f TimeStamp_decode_xer;
+xer_type_encoder_f TimeStamp_encode_xer;
+oer_type_decoder_f TimeStamp_decode_oer;
+oer_type_encoder_f TimeStamp_encode_oer;
+per_type_decoder_f TimeStamp_decode_uper;
+per_type_encoder_f TimeStamp_encode_uper;
+per_type_decoder_f TimeStamp_decode_aper;
+per_type_encoder_f TimeStamp_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TimeStamp_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-EN-GNB.c b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.c
new file mode 100644 (file)
index 0000000..0bc6685
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-EN-GNB.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ENB_UE_X2AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-eNB-UE-X2AP-ID"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, m_eNB_UE_X2AP_ID_Extension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ENB_UE_X2AP_ID_Extension,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-eNB-UE-X2AP-ID-Extension"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_EN_GNB, globalENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalENB-ID"
+               },
+       { ATF_POINTER, 3, offsetof(struct UEID_EN_GNB, gNB_CU_UE_F1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GNB_CU_UE_F1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-UE-F1AP-ID"
+               },
+       { ATF_POINTER, 2, offsetof(struct UEID_EN_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-CP-UE-E1AP-ID-List"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_EN_GNB, ran_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RANUEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-UEID"
+               },
+};
+static const int asn_MAP_UEID_EN_GNB_oms_1[] = { 1, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_EN_GNB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_EN_GNB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* globalENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1 = {
+       sizeof(struct UEID_EN_GNB),
+       offsetof(struct UEID_EN_GNB, _asn_ctx),
+       asn_MAP_UEID_EN_GNB_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_UEID_EN_GNB_oms_1,      /* Optional members */
+       4, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB = {
+       "UEID-EN-GNB",
+       "UEID-EN-GNB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_EN_GNB_tags_1,
+       sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+               /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+       asn_DEF_UEID_EN_GNB_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_EN_GNB_tags_1)
+               /sizeof(asn_DEF_UEID_EN_GNB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_EN_GNB_1,
+       6,      /* Elements count */
+       &asn_SPC_UEID_EN_GNB_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-EN-GNB.h b/src/codec_utils/E2SM_KPM/UEID-EN-GNB.h
new file mode 100644 (file)
index 0000000..4644eee
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_EN_GNB_H_
+#define        _UEID_EN_GNB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ENB-UE-X2AP-ID.h"
+#include "ENB-UE-X2AP-ID-Extension.h"
+#include "GlobalENB-ID.h"
+#include "GNB-CU-UE-F1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_CP_E1AP_ID_List;
+
+/* UEID-EN-GNB */
+typedef struct UEID_EN_GNB {
+       ENB_UE_X2AP_ID_t         m_eNB_UE_X2AP_ID;
+       ENB_UE_X2AP_ID_Extension_t      *m_eNB_UE_X2AP_ID_Extension;    /* OPTIONAL */
+       GlobalENB_ID_t   globalENB_ID;
+       GNB_CU_UE_F1AP_ID_t     *gNB_CU_UE_F1AP_ID;     /* OPTIONAL */
+       struct UEID_GNB_CU_CP_E1AP_ID_List      *gNB_CU_CP_UE_E1AP_ID_List;     /* OPTIONAL */
+       RANUEID_t       *ran_UEID;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_EN_GNB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_EN_GNB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_EN_GNB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_EN_GNB_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_EN_GNB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-ENB.c b/src/codec_utils/E2SM_KPM/UEID-ENB.c
new file mode 100644 (file)
index 0000000..9a3d295
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-ENB.h"
+
+#include "GlobalENB-ID.h"
+asn_TYPE_member_t asn_MBR_UEID_ENB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, mME_UE_S1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MME_UE_S1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mME-UE-S1AP-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_ENB, gUMMEI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GUMMEI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gUMMEI"
+               },
+       { ATF_POINTER, 3, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ENB_UE_X2AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-eNB-UE-X2AP-ID"
+               },
+       { ATF_POINTER, 2, offsetof(struct UEID_ENB, m_eNB_UE_X2AP_ID_Extension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ENB_UE_X2AP_ID_Extension,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-eNB-UE-X2AP-ID-Extension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_ENB, globalENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalENB-ID"
+               },
+};
+static const int asn_MAP_UEID_ENB_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_UEID_ENB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_ENB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gUMMEI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m-eNB-UE-X2AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-eNB-UE-X2AP-ID-Extension */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* globalENB-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1 = {
+       sizeof(struct UEID_ENB),
+       offsetof(struct UEID_ENB, _asn_ctx),
+       asn_MAP_UEID_ENB_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_UEID_ENB_oms_1, /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_ENB = {
+       "UEID-ENB",
+       "UEID-ENB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_ENB_tags_1,
+       sizeof(asn_DEF_UEID_ENB_tags_1)
+               /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+       asn_DEF_UEID_ENB_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UEID_ENB_tags_1)
+               /sizeof(asn_DEF_UEID_ENB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_ENB_1,
+       5,      /* Elements count */
+       &asn_SPC_UEID_ENB_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-ENB.h b/src/codec_utils/E2SM_KPM/UEID-ENB.h
new file mode 100644 (file)
index 0000000..98546de
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_ENB_H_
+#define        _UEID_ENB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MME-UE-S1AP-ID.h"
+#include "GUMMEI.h"
+#include "ENB-UE-X2AP-ID.h"
+#include "ENB-UE-X2AP-ID-Extension.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct GlobalENB_ID;
+
+/* UEID-ENB */
+typedef struct UEID_ENB {
+       MME_UE_S1AP_ID_t         mME_UE_S1AP_ID;
+       GUMMEI_t         gUMMEI;
+       ENB_UE_X2AP_ID_t        *m_eNB_UE_X2AP_ID;      /* OPTIONAL */
+       ENB_UE_X2AP_ID_Extension_t      *m_eNB_UE_X2AP_ID_Extension;    /* OPTIONAL */
+       struct GlobalENB_ID     *globalENB_ID;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_ENB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_ENB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_ENB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_ENB_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_ENB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.c
new file mode 100644 (file)
index 0000000..b1f6371
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, gNB_CU_CP_UE_E1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-CP-UE-E1AP-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-CP-UE-E1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1 = {
+       sizeof(struct UEID_GNB_CU_CP_E1AP_ID_Item),
+       offsetof(struct UEID_GNB_CU_CP_E1AP_ID_Item, _asn_ctx),
+       asn_MAP_UEID_GNB_CU_CP_E1AP_ID_Item_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item = {
+       "UEID-GNB-CU-CP-E1AP-ID-Item",
+       "UEID-GNB-CU-CP-E1AP-ID-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1,
+       sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1,
+       1,      /* Elements count */
+       &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-Item.h
new file mode 100644 (file)
index 0000000..bfe8083
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_CU_CP_E1AP_ID_Item_H_
+#define        _UEID_GNB_CU_CP_E1AP_ID_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-CP-E1AP-ID-Item */
+typedef struct UEID_GNB_CU_CP_E1AP_ID_Item {
+       GNB_CU_CP_UE_E1AP_ID_t   gNB_CU_CP_UE_E1AP_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_E1AP_ID_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_E1AP_ID_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.c
new file mode 100644 (file)
index 0000000..e27c4da
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-E1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1 = {
+       sizeof(struct UEID_GNB_CU_CP_E1AP_ID_List),
+       offsetof(struct UEID_GNB_CU_CP_E1AP_ID_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List = {
+       "UEID-GNB-CU-CP-E1AP-ID-List",
+       "UEID-GNB-CU-CP-E1AP-ID-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1,
+       sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List_tags_1[0]), /* 1 */
+       { &asn_OER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1,
+       1,      /* Single element */
+       &asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-E1AP-ID-List.h
new file mode 100644 (file)
index 0000000..aebfd34
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_CU_CP_E1AP_ID_List_H_
+#define        _UEID_GNB_CU_CP_E1AP_ID_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_CP_E1AP_ID_Item;
+
+/* UEID-GNB-CU-CP-E1AP-ID-List */
+typedef struct UEID_GNB_CU_CP_E1AP_ID_List {
+       A_SEQUENCE_OF(struct UEID_GNB_CU_CP_E1AP_ID_Item) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_E1AP_ID_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List;
+extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_CP_E1AP_ID_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_E1AP_ID_List_1[1];
+extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_CP_E1AP_ID_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_E1AP_ID_List_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.c
new file mode 100644 (file)
index 0000000..17dfa6d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, gNB_CU_UE_F1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GNB_CU_UE_F1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-UE-F1AP-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-CU-UE-F1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1 = {
+       sizeof(struct UEID_GNB_CU_CP_F1AP_ID_Item),
+       offsetof(struct UEID_GNB_CU_CP_F1AP_ID_Item, _asn_ctx),
+       asn_MAP_UEID_GNB_CU_CP_F1AP_ID_Item_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item = {
+       "UEID-GNB-CU-CP-F1AP-ID-Item",
+       "UEID-GNB-CU-CP-F1AP-ID-Item",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1,
+       sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1,
+       1,      /* Elements count */
+       &asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-CP-F1AP-ID-Item.h
new file mode 100644 (file)
index 0000000..d176e21
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_CU_CP_F1AP_ID_Item_H_
+#define        _UEID_GNB_CU_CP_F1AP_ID_Item_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-UE-F1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-CP-F1AP-ID-Item */
+typedef struct UEID_GNB_CU_CP_F1AP_ID_Item {
+       GNB_CU_UE_F1AP_ID_t      gNB_CU_UE_F1AP_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_CP_F1AP_ID_Item_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_CP_F1AP_ID_Item_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_CP_F1AP_ID_Item_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_CP_F1AP_ID_Item_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.c
new file mode 100644 (file)
index 0000000..c32b630
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+
+#include "UEID-GNB-CU-CP-F1AP-ID-Item.h"
+static asn_oer_constraints_t asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UEID_GNB_CU_CP_F1AP_ID_Item,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1 = {
+       sizeof(struct UEID_GNB_CU_F1AP_ID_List),
+       offsetof(struct UEID_GNB_CU_F1AP_ID_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List = {
+       "UEID-GNB-CU-F1AP-ID-List",
+       "UEID-GNB-CU-F1AP-ID-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1,
+       sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_F1AP_ID_List_tags_1[0]), /* 1 */
+       { &asn_OER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, &asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UEID_GNB_CU_F1AP_ID_List_1,
+       1,      /* Single element */
+       &asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-F1AP-ID-List.h
new file mode 100644 (file)
index 0000000..9106873
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_CU_F1AP_ID_List_H_
+#define        _UEID_GNB_CU_F1AP_ID_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_CP_F1AP_ID_Item;
+
+/* UEID-GNB-CU-F1AP-ID-List */
+typedef struct UEID_GNB_CU_F1AP_ID_List {
+       A_SEQUENCE_OF(struct UEID_GNB_CU_CP_F1AP_ID_Item) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_F1AP_ID_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_F1AP_ID_List;
+extern asn_SET_OF_specifics_t asn_SPC_UEID_GNB_CU_F1AP_ID_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_F1AP_ID_List_1[1];
+extern asn_per_constraints_t asn_PER_type_UEID_GNB_CU_F1AP_ID_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_F1AP_ID_List_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.c
new file mode 100644 (file)
index 0000000..c6fd53a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-CU-UP.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_CU_UP, gNB_CU_CP_UE_E1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GNB_CU_CP_UE_E1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-CP-UE-E1AP-ID"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_GNB_CU_UP, ran_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RANUEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-UEID"
+               },
+};
+static const int asn_MAP_UEID_GNB_CU_UP_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_CU_UP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_CU_UP_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1 = {
+       sizeof(struct UEID_GNB_CU_UP),
+       offsetof(struct UEID_GNB_CU_UP, _asn_ctx),
+       asn_MAP_UEID_GNB_CU_UP_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UEID_GNB_CU_UP_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP = {
+       "UEID-GNB-CU-UP",
+       "UEID-GNB-CU-UP",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_GNB_CU_UP_tags_1,
+       sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_CU_UP_tags_1,  /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_CU_UP_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_GNB_CU_UP_1,
+       2,      /* Elements count */
+       &asn_SPC_UEID_GNB_CU_UP_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h b/src/codec_utils/E2SM_KPM/UEID-GNB-CU-UP.h
new file mode 100644 (file)
index 0000000..e6fbcb9
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_CU_UP_H_
+#define        _UEID_GNB_CU_UP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-CP-UE-E1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-CU-UP */
+typedef struct UEID_GNB_CU_UP {
+       GNB_CU_CP_UE_E1AP_ID_t   gNB_CU_CP_UE_E1AP_ID;
+       RANUEID_t       *ran_UEID;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_CU_UP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_CU_UP;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_CU_UP_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_CU_UP_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_CU_UP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-DU.c b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.c
new file mode 100644 (file)
index 0000000..5525f9a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB_DU, gNB_CU_UE_F1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GNB_CU_UE_F1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-UE-F1AP-ID"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_GNB_DU, ran_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RANUEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-UEID"
+               },
+};
+static const int asn_MAP_UEID_GNB_DU_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_DU_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_DU_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-CU-UE-F1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-UEID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1 = {
+       sizeof(struct UEID_GNB_DU),
+       offsetof(struct UEID_GNB_DU, _asn_ctx),
+       asn_MAP_UEID_GNB_DU_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UEID_GNB_DU_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU = {
+       "UEID-GNB-DU",
+       "UEID-GNB-DU",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_GNB_DU_tags_1,
+       sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_DU_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_DU_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_DU_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_GNB_DU_1,
+       2,      /* Elements count */
+       &asn_SPC_UEID_GNB_DU_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB-DU.h b/src/codec_utils/E2SM_KPM/UEID-GNB-DU.h
new file mode 100644 (file)
index 0000000..66d5057
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_DU_H_
+#define        _UEID_GNB_DU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "GNB-CU-UE-F1AP-ID.h"
+#include "RANUEID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-GNB-DU */
+typedef struct UEID_GNB_DU {
+       GNB_CU_UE_F1AP_ID_t      gNB_CU_UE_F1AP_ID;
+       RANUEID_t       *ran_UEID;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_DU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB_DU;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_DU_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_DU_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_DU_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB.c b/src/codec_utils/E2SM_KPM/UEID-GNB.c
new file mode 100644 (file)
index 0000000..e2f0f08
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-GNB.h"
+
+#include "UEID-GNB-CU-F1AP-ID-List.h"
+#include "UEID-GNB-CU-CP-E1AP-ID-List.h"
+#include "GlobalGNB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_GNB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, amf_UE_NGAP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMF_UE_NGAP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amf-UE-NGAP-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_GNB, guami),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GUAMI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "guami"
+               },
+       { ATF_POINTER, 6, offsetof(struct UEID_GNB, gNB_CU_UE_F1AP_ID_List),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB_CU_F1AP_ID_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-UE-F1AP-ID-List"
+               },
+       { ATF_POINTER, 5, offsetof(struct UEID_GNB, gNB_CU_CP_UE_E1AP_ID_List),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB_CU_CP_E1AP_ID_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-CP-UE-E1AP-ID-List"
+               },
+       { ATF_POINTER, 4, offsetof(struct UEID_GNB, ran_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RANUEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-UEID"
+               },
+       { ATF_POINTER, 3, offsetof(struct UEID_GNB, m_NG_RAN_UE_XnAP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NG_RANnodeUEXnAPID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-NG-RAN-UE-XnAP-ID"
+               },
+       { ATF_POINTER, 2, offsetof(struct UEID_GNB, globalGNB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalGNB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalGNB-ID"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_GNB, globalNG_RANNode_ID),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_GlobalNGRANNodeID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalNG-RANNode-ID"
+               },
+};
+static const int asn_MAP_UEID_GNB_oms_1[] = { 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_UEID_GNB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_GNB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UE-F1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* gNB-CU-CP-UE-E1AP-ID-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ran-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* globalGNB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1 = {
+       sizeof(struct UEID_GNB),
+       offsetof(struct UEID_GNB, _asn_ctx),
+       asn_MAP_UEID_GNB_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_UEID_GNB_oms_1, /* Optional members */
+       5, 1,   /* Root/Additions */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_GNB = {
+       "UEID-GNB",
+       "UEID-GNB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_GNB_tags_1,
+       sizeof(asn_DEF_UEID_GNB_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+       asn_DEF_UEID_GNB_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UEID_GNB_tags_1)
+               /sizeof(asn_DEF_UEID_GNB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_GNB_1,
+       8,      /* Elements count */
+       &asn_SPC_UEID_GNB_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-GNB.h b/src/codec_utils/E2SM_KPM/UEID-GNB.h
new file mode 100644 (file)
index 0000000..bb24fef
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_GNB_H_
+#define        _UEID_GNB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AMF-UE-NGAP-ID.h"
+#include "GUAMI.h"
+#include "RANUEID.h"
+#include "NG-RANnodeUEXnAPID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEID_GNB_CU_F1AP_ID_List;
+struct UEID_GNB_CU_CP_E1AP_ID_List;
+struct GlobalGNB_ID;
+struct GlobalNGRANNodeID;
+
+/* UEID-GNB */
+typedef struct UEID_GNB {
+       AMF_UE_NGAP_ID_t         amf_UE_NGAP_ID;
+       GUAMI_t  guami;
+       struct UEID_GNB_CU_F1AP_ID_List *gNB_CU_UE_F1AP_ID_List;        /* OPTIONAL */
+       struct UEID_GNB_CU_CP_E1AP_ID_List      *gNB_CU_CP_UE_E1AP_ID_List;     /* OPTIONAL */
+       RANUEID_t       *ran_UEID;      /* OPTIONAL */
+       NG_RANnodeUEXnAPID_t    *m_NG_RAN_UE_XnAP_ID;   /* OPTIONAL */
+       struct GlobalGNB_ID     *globalGNB_ID;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct GlobalNGRANNodeID        *globalNG_RANNode_ID;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_GNB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_GNB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_GNB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_GNB_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_GNB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.c
new file mode 100644 (file)
index 0000000..85ec40d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-NG-ENB-DU.h"
+
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB_DU, ng_eNB_CU_UE_W1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NGENB_CU_UE_W1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-eNB-CU-UE-W1AP-ID"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_DU_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_DU_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ng-eNB-CU-UE-W1AP-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1 = {
+       sizeof(struct UEID_NG_ENB_DU),
+       offsetof(struct UEID_NG_ENB_DU, _asn_ctx),
+       asn_MAP_UEID_NG_ENB_DU_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU = {
+       "UEID-NG-ENB-DU",
+       "UEID-NG-ENB-DU",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_NG_ENB_DU_tags_1,
+       sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+               /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+       asn_DEF_UEID_NG_ENB_DU_tags_1,  /* Same as above */
+       sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1)
+               /sizeof(asn_DEF_UEID_NG_ENB_DU_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_NG_ENB_DU_1,
+       1,      /* Elements count */
+       &asn_SPC_UEID_NG_ENB_DU_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h b/src/codec_utils/E2SM_KPM/UEID-NG-ENB-DU.h
new file mode 100644 (file)
index 0000000..74520ba
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_NG_ENB_DU_H_
+#define        _UEID_NG_ENB_DU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NGENB-CU-UE-W1AP-ID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEID-NG-ENB-DU */
+typedef struct UEID_NG_ENB_DU {
+       NGENB_CU_UE_W1AP_ID_t    ng_eNB_CU_UE_W1AP_ID;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_NG_ENB_DU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB_DU;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_DU_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_DU_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_NG_ENB_DU_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB.c b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.c
new file mode 100644 (file)
index 0000000..a6e10bf
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID-NG-ENB.h"
+
+#include "GlobalNgENB-ID.h"
+#include "GlobalNGRANNodeID.h"
+asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, amf_UE_NGAP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMF_UE_NGAP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amf-UE-NGAP-ID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UEID_NG_ENB, guami),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GUAMI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "guami"
+               },
+       { ATF_POINTER, 4, offsetof(struct UEID_NG_ENB, ng_eNB_CU_UE_W1AP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NGENB_CU_UE_W1AP_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-eNB-CU-UE-W1AP-ID"
+               },
+       { ATF_POINTER, 3, offsetof(struct UEID_NG_ENB, m_NG_RAN_UE_XnAP_ID),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NG_RANnodeUEXnAPID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "m-NG-RAN-UE-XnAP-ID"
+               },
+       { ATF_POINTER, 2, offsetof(struct UEID_NG_ENB, globalNgENB_ID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GlobalNgENB_ID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalNgENB-ID"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEID_NG_ENB, globalNG_RANNode_ID),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_GlobalNGRANNodeID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "globalNG-RANNode-ID"
+               },
+};
+static const int asn_MAP_UEID_NG_ENB_oms_1[] = { 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_UEID_NG_ENB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_NG_ENB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* amf-UE-NGAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* guami */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB-CU-UE-W1AP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m-NG-RAN-UE-XnAP-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* globalNgENB-ID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* globalNG-RANNode-ID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1 = {
+       sizeof(struct UEID_NG_ENB),
+       offsetof(struct UEID_NG_ENB, _asn_ctx),
+       asn_MAP_UEID_NG_ENB_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_UEID_NG_ENB_oms_1,      /* Optional members */
+       3, 1,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB = {
+       "UEID-NG-ENB",
+       "UEID-NG-ENB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEID_NG_ENB_tags_1,
+       sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+               /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+       asn_DEF_UEID_NG_ENB_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEID_NG_ENB_tags_1)
+               /sizeof(asn_DEF_UEID_NG_ENB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEID_NG_ENB_1,
+       6,      /* Elements count */
+       &asn_SPC_UEID_NG_ENB_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID-NG-ENB.h b/src/codec_utils/E2SM_KPM/UEID-NG-ENB.h
new file mode 100644 (file)
index 0000000..8966c08
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_NG_ENB_H_
+#define        _UEID_NG_ENB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AMF-UE-NGAP-ID.h"
+#include "GUAMI.h"
+#include "NGENB-CU-UE-W1AP-ID.h"
+#include "NG-RANnodeUEXnAPID.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct GlobalNgENB_ID;
+struct GlobalNGRANNodeID;
+
+/* UEID-NG-ENB */
+typedef struct UEID_NG_ENB {
+       AMF_UE_NGAP_ID_t         amf_UE_NGAP_ID;
+       GUAMI_t  guami;
+       NGENB_CU_UE_W1AP_ID_t   *ng_eNB_CU_UE_W1AP_ID;  /* OPTIONAL */
+       NG_RANnodeUEXnAPID_t    *m_NG_RAN_UE_XnAP_ID;   /* OPTIONAL */
+       struct GlobalNgENB_ID   *globalNgENB_ID;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct GlobalNGRANNodeID        *globalNG_RANNode_ID;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_NG_ENB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID_NG_ENB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEID_NG_ENB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_NG_ENB_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_NG_ENB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEID.c b/src/codec_utils/E2SM_KPM/UEID.c
new file mode 100644 (file)
index 0000000..4b78338
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEID.h"
+
+#include "UEID-GNB.h"
+#include "UEID-GNB-DU.h"
+#include "UEID-GNB-CU-UP.h"
+#include "UEID-NG-ENB.h"
+#include "UEID-NG-ENB-DU.h"
+#include "UEID-EN-GNB.h"
+#include "UEID-ENB.h"
+static asn_oer_constraints_t asn_OER_type_UEID_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  6 }    /* (0..6,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEID_1[] = {
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_DU_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB_DU,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-DU-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.gNB_CU_UP_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_GNB_CU_UP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gNB-CU-UP-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_NG_ENB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-eNB-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.ng_eNB_DU_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_NG_ENB_DU,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-eNB-DU-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.en_gNB_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_EN_GNB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "en-gNB-UEID"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEID, choice.eNB_UEID),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEID_ENB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eNB-UEID"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEID_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-DU-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gNB-CU-UP-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ng-eNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ng-eNB-DU-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* en-gNB-UEID */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* eNB-UEID */
+};
+asn_CHOICE_specifics_t asn_SPC_UEID_specs_1 = {
+       sizeof(struct UEID),
+       offsetof(struct UEID, _asn_ctx),
+       offsetof(struct UEID, present),
+       sizeof(((struct UEID *)0)->present),
+       asn_MAP_UEID_tag2el_1,
+       7,      /* Count of tags in the map */
+       0, 0,
+       7       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UEID = {
+       "UEID",
+       "UEID",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_UEID_constr_1, &asn_PER_type_UEID_constr_1, CHOICE_constraint },
+       asn_MBR_UEID_1,
+       7,      /* Elements count */
+       &asn_SPC_UEID_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEID.h b/src/codec_utils/E2SM_KPM/UEID.h
new file mode 100644 (file)
index 0000000..4416634
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEID_H_
+#define        _UEID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UEID_PR {
+       UEID_PR_NOTHING,        /* No components present */
+       UEID_PR_gNB_UEID,
+       UEID_PR_gNB_DU_UEID,
+       UEID_PR_gNB_CU_UP_UEID,
+       UEID_PR_ng_eNB_UEID,
+       UEID_PR_ng_eNB_DU_UEID,
+       UEID_PR_en_gNB_UEID,
+       UEID_PR_eNB_UEID
+       /* Extensions may appear below */
+       
+} UEID_PR;
+
+/* Forward declarations */
+struct UEID_GNB;
+struct UEID_GNB_DU;
+struct UEID_GNB_CU_UP;
+struct UEID_NG_ENB;
+struct UEID_NG_ENB_DU;
+struct UEID_EN_GNB;
+struct UEID_ENB;
+
+/* UEID */
+typedef struct UEID {
+       UEID_PR present;
+       union UEID_u {
+               struct UEID_GNB *gNB_UEID;
+               struct UEID_GNB_DU      *gNB_DU_UEID;
+               struct UEID_GNB_CU_UP   *gNB_CU_UP_UEID;
+               struct UEID_NG_ENB      *ng_eNB_UEID;
+               struct UEID_NG_ENB_DU   *ng_eNB_DU_UEID;
+               struct UEID_EN_GNB      *en_gNB_UEID;
+               struct UEID_ENB *eNB_UEID;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEID_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEID;
+extern asn_CHOICE_specifics_t asn_SPC_UEID_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEID_1[7];
+extern asn_per_constraints_t asn_PER_type_UEID_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.c
new file mode 100644 (file)
index 0000000..20ec287
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEMeasurementReportItem.h"
+
+asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, ueID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UEID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UEMeasurementReportItem, measReport),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_E2SM_KPM_IndicationMessage_Format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measReport"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEMeasurementReportItem_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEMeasurementReportItem_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measReport */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1 = {
+       sizeof(struct UEMeasurementReportItem),
+       offsetof(struct UEMeasurementReportItem, _asn_ctx),
+       asn_MAP_UEMeasurementReportItem_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem = {
+       "UEMeasurementReportItem",
+       "UEMeasurementReportItem",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEMeasurementReportItem_tags_1,
+       sizeof(asn_DEF_UEMeasurementReportItem_tags_1)
+               /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */
+       asn_DEF_UEMeasurementReportItem_tags_1, /* Same as above */
+       sizeof(asn_DEF_UEMeasurementReportItem_tags_1)
+               /sizeof(asn_DEF_UEMeasurementReportItem_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEMeasurementReportItem_1,
+       2,      /* Elements count */
+       &asn_SPC_UEMeasurementReportItem_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h b/src/codec_utils/E2SM_KPM/UEMeasurementReportItem.h
new file mode 100644 (file)
index 0000000..3b0e4c0
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEMeasurementReportItem_H_
+#define        _UEMeasurementReportItem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UEID.h"
+#include "E2SM-KPM-IndicationMessage-Format1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UEMeasurementReportItem */
+typedef struct UEMeasurementReportItem {
+       UEID_t   ueID;
+       E2SM_KPM_IndicationMessage_Format1_t     measReport;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEMeasurementReportItem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportItem;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEMeasurementReportItem_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEMeasurementReportItem_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEMeasurementReportItem_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportList.c b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.c
new file mode 100644 (file)
index 0000000..76262ac
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEMeasurementReportList.h"
+
+#include "UEMeasurementReportItem.h"
+static asn_oer_constraints_t asn_OER_type_UEMeasurementReportList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65535)) */};
+asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16,  16,  1,  65535 }  /* (SIZE(1..65535)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UEMeasurementReportItem,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEMeasurementReportList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1 = {
+       sizeof(struct UEMeasurementReportList),
+       offsetof(struct UEMeasurementReportList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList = {
+       "UEMeasurementReportList",
+       "UEMeasurementReportList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UEMeasurementReportList_tags_1,
+       sizeof(asn_DEF_UEMeasurementReportList_tags_1)
+               /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */
+       asn_DEF_UEMeasurementReportList_tags_1, /* Same as above */
+       sizeof(asn_DEF_UEMeasurementReportList_tags_1)
+               /sizeof(asn_DEF_UEMeasurementReportList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UEMeasurementReportList_constr_1, &asn_PER_type_UEMeasurementReportList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UEMeasurementReportList_1,
+       1,      /* Single element */
+       &asn_SPC_UEMeasurementReportList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/E2SM_KPM/UEMeasurementReportList.h b/src/codec_utils/E2SM_KPM/UEMeasurementReportList.h
new file mode 100644 (file)
index 0000000..64cdd13
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "E2SM-KPM-IEs"
+ *     found in "../../ASN1_Input/E2SM_KPM_V_3_0.asn1"
+ *     `asn1c -D ./../../E2_output/E2SM_KPM_v3.0_output -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEMeasurementReportList_H_
+#define        _UEMeasurementReportList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UEMeasurementReportItem;
+
+/* UEMeasurementReportList */
+typedef struct UEMeasurementReportList {
+       A_SEQUENCE_OF(struct UEMeasurementReportItem) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEMeasurementReportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEMeasurementReportList;
+extern asn_SET_OF_specifics_t asn_SPC_UEMeasurementReportList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEMeasurementReportList_1[1];
+extern asn_per_constraints_t asn_PER_type_UEMeasurementReportList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEMeasurementReportList_H_ */
+#include <asn_internal.h>
index 7ab5334..8a3ae33 100644 (file)
@@ -205,6 +205,21 @@ extern "C" {
 #define maxofRICactionID (16)
 #define maxofTNLA (32)
 #define maxofRICrequestID (1024)
+#define maxE1APid (65535)
+#define maxF1APid (4)
+#define maxnoofCells (16384)
+#define maxnoofRICStyles (63)
+#define maxnoofMeasurementInfo (65535)
+#define maxnoofLabelInfo (2147483647)
+#define maxnoofMeasurementRecord (65535)
+#define maxnoofMeasurementValue (2147483647)
+#define maxnoofConditionInfo (32768)
+#define maxnoofUEID (65535)
+#define maxnoofConditionInfoPerSub (32768)
+#define maxnoofUEIDPerSub (65535)
+#define maxnoofUEMeasReport (65535)
+#define maxnoofBin (65535)
+
 #ifdef __cplusplus
 }
 #endif